我才刚刚开始使用GIT并认为它很棒,但是我对该merge
命令的作用有些困惑。
假设我们在分支“ A”中有一个工作项目。
我回家,对该分支进行更改,并将其另存为“ B”。另一个程序员对“ A”进行更改并将其另存为“ C”。
有没有办法将两个分支“ B”和“ C”合并在一起,然后将更改提交为新分支,例如“ D”?
还是错过了“合并”的要点?
我才刚刚开始使用GIT并认为它很棒,但是我对该merge
命令的作用有些困惑。
假设我们在分支“ A”中有一个工作项目。
我回家,对该分支进行更改,并将其另存为“ B”。另一个程序员对“ A”进行更改并将其另存为“ C”。
有没有办法将两个分支“ B”和“ C”合并在一起,然后将更改提交为新分支,例如“ D”?
还是错过了“合并”的要点?
Answers:
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"
所以现在有三个独立的分支(分别为AB和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
git add conflicting_files
然后git commit
如果要将SubBranch中的更改合并到MainBranch
git checkout MainBranch
git merge SubBranch
案例:如果您需要忽略默认创建的合并提交,请按照下列步骤操作。
假设已经从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 的发散。
如果您确实需要忽略这些提交(在FB中进行的提交),并将在feature_branch中进行的全部更改作为单个提交(如'Integrated feature branch changes into master'
Run)添加git merge feature_merge --no-commit
。
使用--no-commit,它执行合并并在创建合并提交之前停止。我们现在将在master中将功能分支中所有添加的更改都包含在master中,并有机会创建一个新的提交作为我们自己的提交。
在这里阅读更多信息:https : //git-scm.com/docs/git-merge