将分支合并到主分支(master)中的Git合并

59

我有一个主分支和一个名为branch_1的工作分支。我想要将branch_1完全“移动”到master分支。因此,我想要实现以下效果:

git checkout master
git merge branch_1 # I don't know what is correct...

我曾经做过一些事情,但是由于烦人的冲突,我的文件混乱不堪。现在主分支包含了与branch_1完全相同的文件,避免了任何冲突,只需覆盖文件即可。

需要帮助吗?


一个选择是执行 git reset --hard branch_1 命令,但这会丢失 master 分支中与 branch_1 分支不共享的所有历史记录。 - Michael Wild
你所说的“将”branch_1“移动”到“master”是什么意思?你只想进行简单的合并吗?在合并过程中出现冲突并不罕见,因此没有什么特别的。由于问题目前写得不明确,所以不清楚问题是什么。 - user456814
参见:如何使用git merge --squash? - Martin Thoma
这个回答解决了你的问题吗?将开发分支与主分支合并 - andschar
4个回答

69

如果两个分支对文件进行了更改,那么冲突就会发生。这是一件好事。让你的分支与彼此保持最新将预防一些冲突。但总的来说,冲突并不是坏事。重新定义选项也可以防止很多冲突发生。

git merge branch_1

如果您在 master 分支上,合并操作将按预期引入更改。

http://www.kernel.org/pub/software/scm/git/docs/git-merge.html

您还可以

git rebase branch_1

这将从branch_1获取更改,并将它们附加到主分支,而不使用合并提交。

http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html


5

也许你不应该合并?

  1. 检出 branch_1 分支
  2. 将 master 的更改 rebase 到 branch_1
  3. 测试代码后修复任何可能发生的错误
  4. 检出 master 分支
  5. 将 branch_1 的更改 rebase 到 master

或者在代码中:

git checkout branch_1
git rebase master
(...)
git checkout master
git rebase branch_1

这也为您提供了机会将多个提交合并成一个,如果您想让您的变更集更加紧凑,并防止这些烦人的合并提交出现在您的历史记录中。

1

我从thenetninja youtube频道中获取了这段代码,并且它对我有效。

关于非主分支

  git add .
  git commit -m "msg"
  git checkout master

在主分支上

  git merge <non master branch name>
  # fix any conflicts and try to run the software to test any error
  git add .
  # commit w/o any msg, as follows
  git commit
  git push origin master

0

你可以使用 git rebase branch_1 命令。这将在 master 分支上解决其他分支中的冲突。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接