dot*_*tty 104 git merge commit
我刚刚开始使用GIT并认为它很精彩,但我对merge命令的作用有点困惑.
让我们说我们在分支"A"中有一个工作项目.
我回家对这个分支进行更改并将其保存为"B".另一个程序员对"A"进行更改并将其保存为"C".
有没有办法将两个分支"B"和"C"合并在一起,然后将更改作为新分支提交,说"D"?
或者我错过了"合并"的观点?
kni*_*ttl 169
merge 用于将两个(或更多)分支组合在一起.
一个小例子:
# on branch A:
# create new branch B
$ git checkout -b B
# hack hack
$ git commit -am "commit on branch B"
# create new branch C from A
$ git checkout -b C A
# hack hack
$ git commit -am "commit on branch C"
# go back to branch A
$ git checkout A
# hack hack
$ git commit -am "commit on branch A"
Run Code Online (Sandbox Code Playgroud)
所以现在有三个不同的分支(即AB和C)
将B和C的更改返回到A,结帐A(已在此示例中完成),然后使用merge命令:
# create an octopus merge
$ git merge B C
Run Code Online (Sandbox Code Playgroud)
你的历史会看起来像这样:
…-o-o-x-------A
|\ /|
| B---/ |
\ /
C---/
Run Code Online (Sandbox Code Playgroud)
如果你想跨存储库/计算机边界合并,看看git pull命令,例如从带有分支A的pc(这个例子将创建两个新的提交):
# pull branch B
$ git pull ssh://host/… B
# pull branch C
$ git pull ssh://host/… C
Run Code Online (Sandbox Code Playgroud)
Moh*_*ban 19
如果您需要将SubBranch中的更改合并到MainBranch中
你应该在MainBranch上
# git checkout MainBranch然后运行merge命令
#git merge SubBranch
案例:如果需要忽略默认创建的合并提交, follow these steps.
比如说,一个新的功能分支从已经有 2 次提交的 master 中签出,
Checkout a new feature_branch
然后功能分支添加两个提交-->
现在,如果您想将 feature_branch 更改合并到 master,请git merge feature_branch坐在 master 上。
这会将所有提交添加到 master 分支中(master 中的 4 个 + feature_branch 中的 2 个 = 总计 6)+ 一个额外的合并提交,例如'Merge branch 'feature_branch'' as the master is diverged。
如果您确实需要忽略此合并提交并添加为新提交'Integrated feature branch changes into master',请运行git merge feature_merge --no-commit。
使用 --no-commit,它执行合并并在创建合并提交之前停止,我们现在将在 master 中拥有功能分支中所有添加的更改,并有机会创建一个新的合并提交作为我们自己的。
编辑 2023:您现在可以选择在较新版本的 git 中以交互方式更改合并提交,而无需指定 --no-commit 选项。
阅读此处了解更多信息: https: //git-scm.com/docs/git-merge