我只是刚刚开始使用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