Git无法在cherryPick之后提交修改
场景如下Git无法在cherryPick之后提交修改,git,github,intellij-idea,Git,Github,Intellij Idea,场景如下 创建新的更改提交和推送(完成确定)尚未合并让我们称之为A 一段时间后,执行git重置——硬源代码,然后获取并重新基于主代码 3.选择更改A并更新两个文件 git添加 吉特拉力 git提交--修改 git-push-f源主机 现在我得到了以下错误: Total 0 (delta 0), reused 0 (delta 0) remote: Processing changes: done To ! [rejected] master -> master (non-fa
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: done
To ! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
在提交之前我做了一次git拉取,我得到的信息是最新的,你知道我错过了什么吗?我应该如何让它工作
我使用intellij是
拉
然后提交--amend
把事情搞砸了。这是你做的,视觉上。拉取后,master
和origin/master
处于同一提交状态
A - B - C [master] [origin/master]
然后你做了一个提交--amend
。这将接受B和C之间的更改,加上新的编辑,并创建一个新的提交D。D的父级是B,因此您创建了一个分支
A - B - C [origin/master]
\
D [master]
origin/master
和master
现在已经分开。当您尝试推送时,git拒绝,因为只允许快进
要修复此问题,git reset--soft origin/master
--soft
将保留D中的工作,但现在您的父级是C。然后您可以执行正常提交(而不是提交修改)。这是首选选项,因为它允许您正常地推送
,不会干扰其他人的工作
[origin/master]
A - B - C - E [master]
\
D
(D)将进行垃圾收集)
或者,您可以git push--force
。这告诉git,D是现在掌握的master
的新技巧,并抛弃了C。强制推送对于其他基于C的工作现在将无效的开发人员来说是非常不友好的。他们在尝试拉时会出错,并且必须进行修复,这是一个大混乱
经验法则是,一旦你推动了一个变化,就不要重新设定它的基准<代码>git提交--amend
计为重定基址
不要习惯性地强迫推。是拉
然后提交--修改
把事情搞砸了。这是你做的,视觉上。拉取后,master
和origin/master
处于同一提交状态
A - B - C [master] [origin/master]
然后你做了一个提交--amend
。这将接受B和C之间的更改,加上新的编辑,并创建一个新的提交D。D的父级是B,因此您创建了一个分支
A - B - C [origin/master]
\
D [master]
origin/master
和master
现在已经分开。当您尝试推送时,git拒绝,因为只允许快进
要修复此问题,git reset--soft origin/master
--soft
将保留D中的工作,但现在您的父级是C。然后您可以执行正常提交(而不是提交修改)。这是首选选项,因为它允许您正常地推送
,不会干扰其他人的工作
[origin/master]
A - B - C - E [master]
\
D
(D)将进行垃圾收集)
或者,您可以git push--force
。这告诉git,D是现在掌握的master
的新技巧,并抛弃了C。强制推送对于其他基于C的工作现在将无效的开发人员来说是非常不友好的。他们在尝试拉时会出错,并且必须进行修复,这是一个大混乱
经验法则是,一旦你推动了一个变化,就不要重新设定它的基准<代码>git提交--amend
计为重定基址
而且不要习惯性地用力推。你确定你使用的是用力推吗?GitHub上的主分支是否受到保护,因此您无法强制推送它?你为什么要强行推?您已经发布了提交,因此以后不应该修改它!你确定你用的是用力推吗?GitHub上的主分支是否受到保护,因此您无法强制推送它?你为什么要强行推?您已经发布了提交,因此以后不应该修改它!在最后一个注释中,你是说力推是一种可行的替代方法。但是,Mark在步骤6中使用了git push-f
,但仍然失败。我怀疑他实际上不被允许强制推到原点/主控点
。这可能也有一个很好的理由。谢谢,但你能告诉我什么时候我应该做软假设我再做一次所有的步骤吗?@Mark我很难知道到底出了什么问题,但是你的master
已经偏离了origin/master
。在这一点上,您最好的选择是使用类似于或的可视化工具查看存储库,并找到它的分歧点。merge
您的母版与origin/master
或rebase
您的master
到origin/master
或任何其他方式。如果你发布了回购可视化的屏幕截图,这可能会有所帮助。在最后一个注释中,你是说强制推进是一种可行的替代方法。但是,Mark在步骤6中使用了git push-f
,但仍然失败。我怀疑他实际上不被允许强制推到原点/主控点
。这可能也有一个很好的理由。谢谢,但你能告诉我什么时候我应该做软假设我再做一次所有的步骤吗?@Mark我很难知道到底出了什么问题,但是你的master
已经偏离了origin/master
。在这一点上,您最好的选择是使用类似于或的可视化工具查看存储库,并找到它的分歧点。merge
您的母版与origin/master
或rebase
您的master
到origin/master
或任何其他方式。如果你发布了回购可视化的屏幕截图,可能会有所帮助。