git merge 详细操作,看完就懂
[root@hostname git_test]# git init hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialized empty Git repository in /root/git_test/.git/ [root@hostname git_test]# git log fatal: your current branch 'master' does not have any commits yet [root@hostname git_test]# vi test.txt [root@hostname git_test]# git add . [root@hostname git_test]# git commit "in main, 1st change" error: pathspec 'in main, 1st change' did not match any file(s) known to git [root@hostname git_test]# git commit -m "in main, 1st change" [master (root-commit) 5c0420f] in main, 1st change 1 file changed, 1 insertion(+) create mode 100644 test.txt [root@hostname git_test]# git commit "in main, 1st change"^C [root@hostname git_test]# vi test.txt [root@hostname git_test]# git add . [root@hostname git_test]# git commit -m "in main, 2nd change" [master 16e9a53] in main, 2nd change 1 file changed, 1 insertion(+) [root@hostname git_test]# gi tlog bash: gi: command not found... Similar command is: 'go' [root@hostname git_test]# git log commit 16e9a53302c804d3a0ad7924c45e00209c86c72f (HEAD -> master) Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:49 2023 -0400 in main, 2nd change commit 5c0420f6c5efb9c8b98c89b9d4595f15c3fbed9c Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:23 2023 -0400 in main, 1st change [root@hostname git_test]# git checkout -b feature_1 Switched to a new branch 'feature_1' [root@hostname git_test]# vi test.txt [root@hostname git_test]# git add . [root@hostname git_test]# git commit -m "after branching, in feature_1, 1st change" [feature_1 11981bf] after branching, in feature_1, 1st change 1 file changed, 1 insertion(+) [root@hostname git_test]# git checkout master Switched to branch 'master' [root@hostname git_test]# vi test.txt [root@hostname git_test]# git add . [root@hostname git_test]# git commit -m "after branching, in main, 1st change" [master 129c297] after branching, in main, 1st change 1 file changed, 1 insertion(+) [root@hostname git_test]# vi test.txt [root@hostname git_test]# git add . [root@hostname git_test]# git commit -m "after branching, in main, 2nd change" [master 87d7da3] after branching, in main, 2nd change 1 file changed, 1 insertion(+) [root@hostname git_test]# git checkout feature_1 Switched to branch 'feature_1' [root@hostname git_test]# vi test.txt [root@hostname git_test]# git add . [root@hostname git_test]# git commit -m "after branching, in feature_1, 2nd change" [feature_1 c170207] after branching, in feature_1, 2nd change 1 file changed, 1 insertion(+) [root@hostname git_test]# git log commit c170207b0567946eff71880ee90326ad64822b0b (HEAD -> feature_1) Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:46:46 2023 -0400 after branching, in feature_1, 2nd change commit 11981bffedb873679d73bdca89716f1b6cbc9f4d Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:42:58 2023 -0400 after branching, in feature_1, 1st change commit 16e9a53302c804d3a0ad7924c45e00209c86c72f Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:49 2023 -0400 in main, 2nd change commit 5c0420f6c5efb9c8b98c89b9d4595f15c3fbed9c Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:23 2023 -0400 in main, 1st change [root@hostname git_test]# git checkout master Switched to branch 'master' [root@hostname git_test]# vi test.txt [root@hostname git_test]# git add . [root@hostname git_test]# git commit -m "after branching, in main, 3rd change" [master 687068c] after branching, in main, 3rd change 1 file changed, 1 insertion(+) [root@hostname git_test]# git log commit 687068ce78e7f72326ecaec4c4d062139cd4d2c3 (HEAD -> master) Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:48:29 2023 -0400 after branching, in main, 3rd change commit 87d7da3f4a51f811a846451bb75f7f8ccbd7cca0 Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:44:23 2023 -0400 after branching, in main, 2nd change commit 129c297f2ac32868f60a6cee4fc76970090648ab Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:43:46 2023 -0400 after branching, in main, 1st change commit 16e9a53302c804d3a0ad7924c45e00209c86c72f Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:49 2023 -0400 in main, 2nd change commit 5c0420f6c5efb9c8b98c89b9d4595f15c3fbed9c Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:23 2023 -0400 in main, 1st change [root@hostname git_test]# git checkout feature_1 Switched to branch 'feature_1' [root@hostname git_test]# git log commit c170207b0567946eff71880ee90326ad64822b0b (HEAD -> feature_1) Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:46:46 2023 -0400 after branching, in feature_1, 2nd change commit 11981bffedb873679d73bdca89716f1b6cbc9f4d Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:42:58 2023 -0400 after branching, in feature_1, 1st change commit 16e9a53302c804d3a0ad7924c45e00209c86c72f Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:49 2023 -0400 in main, 2nd change commit 5c0420f6c5efb9c8b98c89b9d4595f15c3fbed9c Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:23 2023 -0400 in main, 1st change [root@hostname git_test]# git merge master Auto-merging test.txt CONFLICT (content): Merge conflict in test.txt Automatic merge failed; fix conflicts and then commit the result. [root@hostname git_test]# vi test.txt [root@hostname git_test]# git status On branch feature_1 You have unmerged paths. (fix conflicts and run "git commit") (use "git merge --abort" to abort the merge) Unmerged paths: (use "git add <file>..." to mark resolution) both modified: test.txt no changes added to commit (use "git add" and/or "git commit -a") [root@hostname git_test]# git add . [root@hostname git_test]# git commit -m "merge main, fix conflict" [feature_1 ed8959d] merge main, fix conflict git log shows all the commits from master branch and feature_1 branch are included [root@hostname git_test]# git log commit ed8959dd5f7c200c9e45e69a1804ecb83b3cf89e (HEAD -> feature_1) Merge: c170207 687068c Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:54:42 2023 -0400 merge main, fix conflict commit 687068ce78e7f72326ecaec4c4d062139cd4d2c3 (master) Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:48:29 2023 -0400 after branching, in main, 3rd change commit c170207b0567946eff71880ee90326ad64822b0b Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:46:46 2023 -0400 after branching, in feature_1, 2nd change commit 87d7da3f4a51f811a846451bb75f7f8ccbd7cca0 Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:44:23 2023 -0400 after branching, in main, 2nd change commit 129c297f2ac32868f60a6cee4fc76970090648ab Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:43:46 2023 -0400 after branching, in main, 1st change commit 11981bffedb873679d73bdca89716f1b6cbc9f4d Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:42:58 2023 -0400 after branching, in feature_1, 1st change commit 16e9a53302c804d3a0ad7924c45e00209c86c72f Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:49 2023 -0400 in main, 2nd change commit 5c0420f6c5efb9c8b98c89b9d4595f15c3fbed9c Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:23 2023 -0400 in main, 1st change [root@hostname git_test]# git diff 11981bffedb873679d73bdca89716f1b6cbc9f4d 129c297f2ac32868f60a6cee4fc76970090648ab diff --git a/test.txt b/test.txt index 0681d7f..4e4c571 100644 --- a/test.txt +++ b/test.txt @@ -1,3 +1,3 @@ in main, 1st change in main, 2nd change -after branching, in feature_1, 1st change +after branching, in main, 1st change [root@hostname git_test]# git diff 11981bffedb873679d73bdca89716f1b6cbc9f4d 129c297f2ac32868f60a6cee4fc76970090648ab diff --git a/test.txt b/test.txt index 0681d7f..4e4c571 100644 --- a/test.txt +++ b/test.txt @@ -1,3 +1,3 @@ in main, 1st change in main, 2nd change -after branching, in feature_1, 1st change +after branching, in main, 1st change [root@hostname git_test]# git rebase -i 16e9a53302c804d3a0ad7924c45e00209c86c72f [detached HEAD d2b1d01] after branching, in feature_1, 1st change Date: Fri Apr 21 22:42:58 2023 -0400 1 file changed, 2 insertions(+) Auto-merging test.txt CONFLICT (content): Merge conflict in test.txt error: could not apply 129c297... after branching, in main, 1st change Resolve all conflicts manually, mark them as resolved with "git add/rm <conflicted_files>", then run "git rebase --continue". You can instead skip this commit: run "git rebase --skip". To abort and get back to the state before "git rebase", run "git rebase --abort". Could not apply 129c297... after branching, in main, 1st change in the pop up file: pick 11981bf after branching, in feature_1, 1st change s c170207 after branching, in feature_1, 2nd change pick 129c297 after branching, in main, 1st change pick 87d7da3 after branching, in main, 2nd change pick 687068c after branching, in main, 3rd change # Rebase 16e9a53..ed8959d onto 16e9a53 (5 commands) # # Commands: # p, pick <commit> = use commit # r, reword <commit> = use commit, but edit the commit message # e, edit <commit> = use commit, but stop for amending # s, squash <commit> = use commit, but meld into previous commit # f, fixup <commit> = like "squash", but discard this commit's log message # x, exec <command> = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop <commit> = remove commit # l, label <label> = label current HEAD with a name # t, reset <label> = reset HEAD to a label # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>] # . create a merge commit using the original merge commit's # . message (or the oneline, if no original merge commit was # . specified). Use -c <commit> to reword the commit message. # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. Conflict: [root@hostname git_test]# vi test.txt in main, 1st change in main, 2nd change <<<<<<< HEAD after branching, in feature_1, 1st change after branching, in feature_1, 2nd change ======= after branching, in main, 1st change >>>>>>> 129c297 (after branching, in main, 1st change) [root@hostname git_test]# git add . [root@hostname git_test]# git rebase --continue [detached HEAD d1ac649] after branching, in main, 1st change 1 file changed, 1 insertion(+) Successfully rebased and updated refs/heads/feature_1. 再次git log, 发现merge 那次记录没有了? [root@hostname git_test]# git log commit 4c6b9d68e4312a61e36f4bb95cad64f080d11d13 (HEAD -> feature_1) Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:48:29 2023 -0400 after branching, in main, 3rd change commit fb2d8d2de1a02a1c3d930ec68f20ea6955cd6f8a Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:44:23 2023 -0400 after branching, in main, 2nd change commit d1ac6493ba37454002009bf92a83363220a68e09 Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:43:46 2023 -0400 after branching, in main, 1st change commit d2b1d01d56705e26cc23a819c23e7a3d48c38104 Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:42:58 2023 -0400 after branching, in feature_1, 1st change after branching, in feature_1, 2nd change commit 16e9a53302c804d3a0ad7924c45e00209c86c72f Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:49 2023 -0400 in main, 2nd change commit 5c0420f6c5efb9c8b98c89b9d4595f15c3fbed9c Author: Shuai Ma <shuai.ma@hei-ya.com> Date: Fri Apr 21 22:41:23 2023 -0400 in main, 1st change [root@hostname git_test]# git diff 16e9a53302c804d3a0ad7924c45e00209c86c72f d2b1d01d56705e26cc23a819c23e7a3d48c38104 diff --git a/test.txt b/test.txt index ff7d9a6..0a69e58 100644 --- a/test.txt +++ b/test.txt @@ -1,2 +1,4 @@ in main, 1st change in main, 2nd change +after branching, in feature_1, 1st change +after branching, in feature_1, 2nd change [root@hostname git_test]# git diff d2b1d01d56705e26cc23a819c23e7a3d48c38104 d1ac6493ba37454002009bf92a83363220a68e09 diff --git a/test.txt b/test.txt index 0a69e58..3469806 100644 --- a/test.txt +++ b/test.txt @@ -2,3 +2,4 @@ in main, 1st change in main, 2nd change after branching, in feature_1, 1st change after branching, in feature_1, 2nd change +after branching, in main, 1st change [root@hostname git_test]#
转载请注明出处 http://www.cnblogs.com/mashuai-191/