撤消git pull --rebase

Tho*_*mas 43 git git-stash git-pull git-rebase git-revert

嘿,我是git的新手,我需要撤消拉动,任何人都可以帮忙吗?!?所以我做的是......

  1. git commit
  2. git stash
  3. git pull --rebase
  4. git stash pop

这造成了一堆冲突而且有点不对劲.现在做"git stash list"显示我的藏匿处仍在那里.是否可以在执行git commit之后将我的repo恢复到这一点.所以我的回购只有效率只包含我所做的更改和服务器的新内容吗?

Pat*_*otz 96

实际上,为了使这更容易,Git会保留一个名为reference的引用ORIG_HEAD,指向rebase之前的位置.所以,它很简单:

git reset --hard ORIG_HEAD
Run Code Online (Sandbox Code Playgroud)

  • 我几乎失去了一周的工作,但这复活了它.这就是当其他人重新分支您的分支并强制推送到原点而不首先撤消您的更改时发生的事情...这对于了解您是否与其他人一起处理任何项目非常重要,因为他们强迫每个人进行变基而不是合并.搞清洁历史,变相是危险的. (5认同)

kni*_*ttl 45

使用git reflog你将看到过去HEAD指向的提交列表

运用

git checkout -b after-commit HEAD@{1} # or the commit you want to recover
Run Code Online (Sandbox Code Playgroud)

你在那个精确的位置创建一个新的分支并检查它

  • 去过也做过!我想我已经用git制作了每一个蠢事.Git是一把没有防护装置的锯,可以轻松切断自己的手臂.但它还配备了一个简单的手臂重新附件套件,如果你愿意,你甚至可以将手臂固定在膝盖上. (31认同)
  • 确保你的工作目录是干净的(git reset - hard HEAD会这样做).此外,请确保不再使用rebase(git rebase --abort). (7认同)

小智 5

你应该检查命令

git reset --merge
Run Code Online (Sandbox Code Playgroud)

这消除了对git提交的需要; git stash before a pull(虽然不知道rebase)

该命令返回一个工作空间,其中包含对冲突拉动之前的状态的未提交更改.