【问题标题】:Resolving merge conflict in git pull?解决 git pull 中的合并冲突?
【发布时间】:2018-08-04 20:38:05
【问题描述】:

我需要帮助解决来自 GitHub 的 git pull 中的合并冲突,我做了以下操作 在我当前的分支上,我做了以下

  1. git pull --rebase master
  2. git pull ssh:.....(从我的评论中提取更改)
  3. 一个文件中存在合并冲突
  4. 删除所有冲突
  5. git add .
  6. 当我尝试使用git commit --amend 提交时出现错误

“致命:你正在合并——无法修改”

我想再次修改相同的提交而不创建新的提交 ID。有办法吗?

【问题讨论】:

  • I want to amend same commit again without createating new commit ID ...你不能那样做。重新考虑您的直接错误,您是否在解决合并冲突后运行git status?如果您看到一条消息表明仍然存在一些冲突,那么这将阻止您提交。
  • 在合并时,除了合并提交之外,您不会创建新提交。当git status 显示所有冲突都已修复时,您运行git merge --continue
  • 我看到消息“所有冲突已修复,但您仍在合并”使用 git commit 结束合并”
  • 感谢大家的帮助,git merge --continue 为我工作。
  • 请注意 git merge --continue 只运行 git commit "under the hood"。很高兴 Git 人员在 Git 版本 2.12.0 中将此作为选项添加。但是,如果您的 Git ,您必须改用git commit

标签: git github git-pull


【解决方案1】:

鉴于您的历史记录如下:

B    C1   C2
o----o----o master
      \
       o feature
       F

您可以将更改从 feature 重新定位到您将它们拉入的分支 (master) 以使其成为“快进合并”,从而创建线性历史记录:

B    C1   C2   F
o----o----o----o master, feature

或者,在您描述的阶段,您可以运行git commit(不带--amend)继续创建记录合并结果的提交:

B    C1   C2   M
o----o----o----o master
      \       /
        --o--  feature
          F

如果您希望有一个明确的合并提交来表示您合并了一个功能分支,您可以使用--no-ff 标志进行变基,然后合并,创建如下内容:

B    C1   C2        M
o----o----o---------o master
           \       /
             --o--  feature
               F

您选择哪种变体由您决定;这三个都是有效的。我通常更喜欢 rebase 功能分支,以避免在单独的提交(合并提交)中解决合并冲突。保持历史线性(不合并)与否是工作流程和品味的问题。

【讨论】:

    猜你喜欢
    • 2018-06-27
    • 2015-10-15
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2021-04-02
    • 2018-04-19
    • 2017-05-10
    相关资源
    最近更新 更多