【问题标题】:SourceTree - remove waiting pushesSourceTree - 删除等待推送
【发布时间】:2015-05-13 11:27:27
【问题描述】:

如何删除等待被推送到远程的提交?

我的情况是,那些排队的提交(更改)已经被推送(更多如下),现在服务器拒绝接受那些在 HEAD 后面的提交。

我尝试重置为另一个提交,但是当我返回 HEAD 时,推送再次出现。

单击存储库> 刷新远程状态没有帮助,它实际上添加了第二个等待推送:)

PS:我为我的术语道歉,我对 git 很陌生。

.

更新 1

当我将 feature2 提交到 master 分支时,问题就开始了。我没有权利在那里提交,所以它被卡住了。然后我再次提交到我的个人分支,这没关系。然后我得到一个等待提交,永远不会被推送,即使我在点击推送时选择了正确的(个人)分支。

【问题讨论】:

  • 这不是一个错误,它只是警告你的文件没有移动到你的 git 存储库,它的显示计数直到文件移动到 Git 存储库

标签: git push commit git-commit atlassian-sourcetree


【解决方案1】:

Git 提交形成一个提交图。分支只是该图中的提交的命名指针。

鉴于此,您的问题可以重述为

我的本​​地 master 分支指向与远程 master 分支不同的提交。如何让我的本地 master 分支指向与远程 master 分支相同的提交?

有两种方法可以做到这一点。移动远程分支 (git push) 或 移动本地分支 (git reset)。正如你所说,你不能推送到远程 master 分支,所以选项 1 不可用,剩下的选项 2。

请注意,reset 在当前结帐分支上运行1,因此您首先要确保您当前在 master 分支上,然后移动它分支到与远程 master 分支相同的提交。

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

现在 masterorigin/master 在同一个提交上,应该没有要推送的提交。


  1. reset 在当前 HEAD 上运行,但为了便于解释,更容易将其视为在分支上运行。有关更多信息,请参阅此问题:What is HEAD in Git? .

【讨论】:

  • for others > git 说我的个人分支和 master 分支存在分歧 > 建议使用“git pull”合并它们 > 然后我按照上面的步骤 > 现在一切正常
  • @teejay 哪一部分是黑魔法?我可以更新答案,直到它只是无聊的 9 到 5 魔术。
  • 你真是太好了,但我会坚持git docs对这个进行“逆向工程”,这样你就可以为有需要的人创造更多的魔法! :o)
【解决方案2】:

您是否尝试过这样做:git reset --hard HEAD~1? 这样,您将再次在本地存储库中获得关注。否则,我看到了一个可能有用的有趣页面:http://ibrokegit.com/

大多数时候,应该使用命令行而不是 GUI(在本例中为 SourceTree)来解决这些问题。

希望对你有帮助!

【讨论】:

  • 好吧,我以前也试过,但没有解决问题..但是当我看到那个网站时我笑得很开心,所以如果你问我+1 :o)
  • 鉴于提交图 OP 添加到问题中,这不是正确的答案。它只会带你回一次提交。
  • 图是后来添加的。
  • 既然图表已经存在,那么更新答案是否有意义?
猜你喜欢
  • 2015-08-06
  • 1970-01-01
  • 2019-03-15
  • 2020-08-19
  • 1970-01-01
  • 2018-03-19
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多