如何删除提交,等待推送到远程?
我的情况是,那些排队的提交(更改)已被推送(更严重),现在服务器拒绝接受这些,因为他们在HEAD后面。
我尝试重置为另一个提交,但当我回到HEAD时,再次重新出现。
点击存储库>刷新远程状态不会有帮助,它实际上添加了第二次等待推送:)
PS:我为我的术语道歉,我对git很新。
更新1
当我将feature2提交到master分支时,问题就开始了。我没有权利在那里投入,所以它被卡住了。然后我再次回到我的个人分支,这很好。然后我得到一个等待提交,永远不会被推,即使我在单击Push时选择了正确的(个人)分支。
答案 0 :(得分:27)
Git提交形成提交图。分支只是该图中提交的提交指针。
鉴于此,您的问题可以重申为
我的本地主分支指向与远程主分支不同的提交。如何使本地主分支指向与远程主分支相同的提交?
有两种方法可以实现这一目标。移动远程分支(git push
)或
移动本地分支(git reset
)。正如您所说,您无法推送到远程主分支,因此选项1不在桌面上,留下选项2.
请注意,reset
在当前结帐分支 1 上运行,因此您首先要确保您当前在主分支上然后将该分支移动到与远程主分支相同的提交。
git checkout master <--- make sure you're on the master branch
git reset --hard origin/master <--- put your master branch on the same commit as origin/master
现在 master 和 origin / master 在同一个提交中,应该没有提交的提交。
reset
对当前的HEAD进行操作,但为了便于解释,可以更容易地将其视为在分支上运行。有关详细信息,请参阅此问题:What is HEAD in Git?
答案 1 :(得分:3)
您是否尝试过这样做:git reset --hard HEAD~1
?
通过这种方式,您将在本地仓库再次拥有头部。否则,我看到了一个可能有用的有趣页面:http://ibrokegit.com/
大多数情况下,应该使用命令行而不是GUI(在本例中为SourceTree)来解决这个问题。
希望它有所帮助!