我只是刚刚开始使用GIT,并认为它很好,但是我对合并命令的功能有点困惑。
假设我们在分支“a”中有一个工作项目。
我回到家,对这个分支进行修改,并将其保存为“B”。 另一个程序员对“A”进行了修改,并将其保存为“C”。
是否有一种方法将两个分支“B”和“C”合并在一起,然后将更改提交为一个新的分支,例如“D”?
或者我错过了“合并”的重点?
我只是刚刚开始使用GIT,并认为它很好,但是我对合并命令的功能有点困惑。
假设我们在分支“a”中有一个工作项目。
我回到家,对这个分支进行修改,并将其保存为“B”。 另一个程序员对“A”进行了修改,并将其保存为“C”。
是否有一种方法将两个分支“B”和“C”合并在一起,然后将更改提交为一个新的分支,例如“D”?
或者我错过了“合并”的重点?
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
如果你想将SubBranch中的变更合并到MainBranch
你应该在MainBranch git checkout MainBranch 然后运行merge命令git merge SubBranch
案例:如果需要忽略默认创建的合并提交,请执行以下步骤。
假设,一个新的特性分支已经从master签出2次提交,
“增加A”,“增加B”
签出一个新的feature_branch
"加C" "加D"
然后特性分支添加两个提交——>
"加E" "加F"
现在如果你想合并feature_branch到master, git合并feature_branch到master。
这将把所有的提交添加到主分支中(master中4个+ feature_branch中2个= total 6) +一个额外的合并提交,比如“合并分支”feature_branch”,因为主分支被分开了。
如果你真的需要忽略这些提交(那些在FB中所做的),并将在feature_branch中所做的所有更改添加为单个提交,如“集成功能分支更改到master”,运行git merge feature_merge——no-commit。
使用——no-commit,它执行合并并在创建合并提交之前停止,我们将在master中拥有所有添加的功能分支的更改,并有机会创建一个新的提交。
更多信息请点击这里:https://git-scm.com/docs/git-merge
将子分支改为主分支
git branch -m main <BRANCH>;
git fetch origin;
git branch -u origin/<BRANCH> <BRANCH>;
git remote set-head origin -a