Git: Difference between revisions
Line 111: | Line 111: | ||
'''merge commit from another branch''' | '''merge commit from another branch''' | ||
git cherry-pick <commit> | git cherry-pick <commit> | ||
==Merge Commits== | |||
Let say there is a new feature needed to develop yourself. During the time of feature creation you have created <code>git checkout -b your_private_branch</code> branch from any branch like '''staging''' or '''develop'''. During the time of your development let say you have added 50 comments for your own tracking. Now you needs to delete 49 comments and have append your comments with the first comments. After that you need to update your central repository. For safety purpose you might need check status and log to ensure your are not doing any wrong. | |||
{| | |||
|valign="top"| | |||
'''Step: 1''' | |||
git checkout '''<your_private_branch>''' | |||
git status | |||
git log | |||
'''Step: 2''' | |||
git reset --soft '''<hash_of_first_commit>''' | |||
git status | |||
git log | |||
|valign="top"| | |||
'''Step: 3''' | |||
git commit --amend -m ''''<comment_about_feature>'''' | |||
git status | |||
git log | |||
'''Step: 4 (final)''' | |||
git push origin HEAD --force | |||
git status | |||
git log | |||
|} | |||
==Git Warning== | ==Git Warning== |
Revision as of 03:04, 17 August 2022
git config --global user.name "Full Name" git config --global user.email "[email protected]" undo or redo assume unchanged git update-index --no-assume-unchanged src/main/resources/application.properties git update-index --assume-unchanged src/main/resources/application.properties list of assume unchanged files git ls-files -v|grep '^h'
Git Ignore
out/ *.iml *.ipr *.iws .idea/* cmake-build-*/ .idea_modules/ fabric.properties crashlytics.properties atlassian-ide-plugin.xml crashlytics-build.properties com_crashlytics_export_strings.xml
clear metadata rm -rf */out */*.iml */*.ipr */*.iws */.idea */cmake-build-* */.idea_modules
Git Stash
git stash apply stash@{index} git stash drop stash@{index} git stash pop stash@{index} git stash clear git stash list |
git apply --3way ~/.chorke/tmp/academia/patch/v1.0.00.patch git apply ~/.chorke/tmp/academia/patch/v1.0.00.patch git diff > ~/.chorke/tmp/academia/patch/v1.0.00.patch git stash apply stash^{/stash_v1.0.00} git stash push -m stash_v1.0.00 |
Git Tag
annotated tag git tag -a v1.5_initial_setup -m 'initial setup' git tag -a v1.5_initial_setup
lightweight tag git tag v1.5_initial_setup
By default git sort order is ascending, for descending order we need to add -
sign before the value of --sort
parameter
git tag --sort=taggerdate
git tag -l --sort=taggerdate
git tag -l --format='%(taggerdate) %(refname)'
git tag -l --format='%(taggerdate) %(refname)' --sort=taggerdate
# ascending order
git tag -l --format='%(taggerdate)%09%(refname)' --sort=taggerdate
git tag -l --format='%(creatordate)%09%(refname)' --sort=creatordate
# descending order
git tag -l --format='%(taggerdate)%09%(refname)' --sort=-taggerdate
git tag -l --format='%(creatordate)%09%(refname)' --sort=-creatordate
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
git tag --format='%(creatordate:short)%09%(refname:strip=2)' --sort=creatordate
git tag --format='%(taggerdate:short)%09%(refname:strip=2)'
git tag --format='%(taggerdate:short)%09%(refname:strip=2)' --sort=taggerdate
git log --tags --simplify-by-decoration --pretty='format:%ai %d'
git log --tags --simplify-by-decoration --pretty='format:%ai %h %d' --date-order --graph
Git Branch
create and checkout a new branch git checkout -b new_branch_name base_branch_name git checkout -b new_branch_name
renaming and delete branch git branch -m old_branch_name new_branch_name git branch -D branch_to_delete_without_merge_status git branch -d branch_to_delete git push -d origin branch_to_delete git push origin --delete branch_to_delete
renaming branch name git checkout develop;\ git checkout -b new-dev-branch old-dev-branch;\ git push origin -d old-dev-branch;\ git push origin new-dev-branch
Git Commit
delete latest commit git reset --hard HEAD~1 rollback to the commit id git reset --hard <sha1-commit-id> delete commit from remote branch git push origin HEAD --force
merge commit from another branch git cherry-pick <commit>
Merge Commits
Let say there is a new feature needed to develop yourself. During the time of feature creation you have created git checkout -b your_private_branch
branch from any branch like staging or develop. During the time of your development let say you have added 50 comments for your own tracking. Now you needs to delete 49 comments and have append your comments with the first comments. After that you need to update your central repository. For safety purpose you might need check status and log to ensure your are not doing any wrong.
Step: 1 git checkout <your_private_branch> git status git log Step: 2 git reset --soft <hash_of_first_commit> git status git log |
Step: 3 git commit --amend -m '<comment_about_feature>' git status git log Step: 4 (final) git push origin HEAD --force git status git log |
Git Warning
Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by running one of the following commands sometime before your next pull:
Local/Project Wise git config pull.rebase false
git config pull.rebase true
git config pull.ff only
|
Global/Workstation/User Wise git config --global pull.rebase false
git config --global pull.rebase true
git config --global pull.ff only
|
Strategy merge (default) rebase (custom ) fast-forward only |
Knowledge
discard changes git checkout master -f
delete and recreate git branch -d staging git branch -D staging
git merge develop git fetch origin staging git checkout -b staging origin/staging
git config --global init.defaultBranch master
git stashing git stash; git checkout -b new_branch; git stash pop git add .; git commit -m "new feature added"; git push
git remote -v;mv src/main/resources/application.properties ..;cd .. mv ../application.properties src/main/resources/ rebase vs merge git rebase master #all the updated commits of master will be available in the feature branch git merge --squash feature #all the feature commits replaced by a new commit in the master git commit -m 'feature merged with master branch'