【问题标题】:Git Merging into single commit after resolving conflicts解决冲突后 Git 合并到单个提交中
【发布时间】:2021-01-20 01:00:56
【问题描述】:

嗨,我是 Git 初学者

我有两个提交 A 和 B。
B 是从 master 分支到我的分支的解决合并冲突提交(我从 master 拉出并得到合并冲突)。
我已经推送了这些提交。 我想将它们合并到一个提交中。

提交 A:我在 my_branch 中所做的更改的提交 提交 B:将 https://github.com/repo_name 的分支 'master' 合并到 my_branch 中

我该怎么做?

注意:我尝试了 git rebase -i HEAD~2 和 squash 提交(它显示了我的分支上的主提交和文件更改)

我用了 git commit --amend 这也没用

我还使用了 git rebase --onto B A 它实际上删除了所有解决合并冲突更改

git log --oneline graph B 输出:

*   B (HEAD -> my_branch, origin/my_branch) Merge branch 'master' of https://github.ibm.com/repo_name into my_branch
|\
| *   C Commit from master branch
| |\
| | * D Commit from master branch 
| * |   E Merge pull request #268 from other branch
| |\ 

【问题讨论】:

  • 你能解释一下A是什么吗?我想你想使用git reset --soft [some commit],然后是git commit,我只是不确定你是想使用AA^A 的父级)还是其他一些提交(结果合并?)
  • 当你在一个合并提交上变基时,Git 有时会完全忽略它(因为一个合并提交有两个父级)。通常,您不要对具有一个或多个合并提交的历史记录部分进行变基。为什么要这样做?
  • 如果可以:将git log --oneline --graph B 的输出添加到您的问题中
  • @LeGEC 添加了git log --oneline --graph B的输出
  • 谢谢。 1:我想A 将是B 的第一个父母,对吗? 2:您想将AB 合并在一起,而忘记B 曾经是CA 合并的结果吗?

标签: git github


【解决方案1】:

如果我理解正确:您想在 C 之上重播 A+B,而不是与两个祖先进行合并提交。

根据您的情况,这是一种方法:

# from your branch 'my_branch' :
git reset --soft C
git commit

下次你可以使用git pull --rebase让git在本地分支和远程分支合并时使用“rebase”而不是“merge”。

如果您认为在所有情况下都想使用“rebase”,您可以将其设为计算机上的默认行为:

git config pull.rebase true

【讨论】:

  • 我真的同意git pull -r 比合并更有效。
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 2015-10-15
  • 2014-11-24
  • 2018-04-19
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多