为什么修改后拉出冲突?

时间:2018-02-08 20:10:22

标签: git

所以... 带有developmaster以及feature/XYZ-123分支的git。

  1. 查看feature/XYZ-123
  2. 进行简单的一行更改。
  3. 提交并推送。
  4. 意识到你没有把它弄得恰到好处,并对同一条线做了一些更改。
  5. 修改你的提交,然后尝试推送,但你得到:

    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    
  6. 按照指示进行拉动,结束冲突。为什么?

1 个答案:

答案 0 :(得分:2)

问题是,当你做"修改" (而不是使用第二次编辑进行新的提交),它将重写提交的sha。这个新提交与远程头部冲突,因为它与远程提交具有相同的父级,但在相同的行上进行了更改。

解决方法是:

  • 不要提出提交,只需进行新的提交并将其推送到远程

  • 提交,但是将分支强制推送到远程。这风险稍大,只有在您完全理解缺点后才能这样做。例如,如果其他人正在此分支上进行协作,则可以删除其提交。在进行强制推送时,比--force更安全的选项是--force-with-leaseDisussion about force-with-lease here