我刚刚开始使用GIT并认为它很精彩,但是我对merge
命令的作用感到有些困惑。
让我们说我们在分支“A”中有一个工作项目。
我回家并对此分支进行更改并将其另存为“B”。 另一个程序员对“A”进行更改并将其保存为“C”。
有没有办法将两个分支“B”和“C”合并在一起,然后将更改作为新分支提交,说“D”?
还是错过了'合并'这一点?
答案 0 :(得分:158)
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"
所以现在有三个独立的分支(即A B和C),头部不同
将B和C的更改恢复为A,结帐A(已在此示例中完成),然后使用merge命令:
# create an octopus merge
$ git merge B C
你的历史将会是这样的:
…-o-o-x-------A
|\ /|
| B---/ |
\ /
C---/
如果要跨存储库/计算机边框进行合并,请查看git pull
命令,例如从具有分支A的pc(此示例将创建两个新提交):
# pull branch B
$ git pull ssh://host/… B
# pull branch C
$ git pull ssh://host/… C
答案 1 :(得分:7)
如果您有两个分支 MainBranch 和 SubBranch 。
您需要将 SubBranch 中的更改合并到 MainBranch
您应该位于MainBranch
# git checkout MainBranch
然后运行合并命令
#git merge SubBranch
答案 2 :(得分:1)
案例:如果您需要忽略默认情况下创建的合并提交,请按照以下步骤操作。
说,已经从master中检出了一个新的功能分支,已经进行了2次提交,
Checkout a new feature_branch
功能分支然后添加两个提交->
现在,如果您要将feature_branch更改合并到母版中,请git merge feature_branch
坐在母版上。
这会将所有提交添加到master分支中(master中的4个+ feature_branch中的2个=总共6个)+一个额外的合并提交,例如'Merge branch 'feature_branch'
',因为master 已发散。< / p>
如果您真的需要忽略这些提交(在FB中进行的提交),并将在feature_branch中所做的全部更改作为单个提交(如'Integrated feature branch changes into master'
)添加,请运行git merge feature_merge --no-commit
。
使用--no-commit,它执行合并并在创建合并提交之前停止,我们现在将在master中将功能分支中所有添加的更改都包含在master中,并有机会创建一个新的提交作为我们自己的提交。 / p>
在此处阅读更多内容:https://git-scm.com/docs/git-merge