Github:重置为上一次提交

时间:2016-10-25 22:12:47

标签: git github master

小团队。一位同事误将origin:master推到了push -f。他重置了他的本地回购但不能fetch到Github因为回购是受保护

我已经master修改了回购,但没有将他的错误提交合并到我的本地push -f ......但是。

我可以假设我可以origin来源,在Github上重置$ git push origin 2860a4c:master To github.com:example/myproj.git ! [rejected] 2860a4c -> master (non-fast-forward) error: failed to push some refs to 'git@github.com:example/myproj.git' 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. ,以便它反映出他错误之前的状态吗?

git pull

我是否真的需要先将错误的提交(使用reset hard 2860a4c)进行整合,然后才假设push -f origin然后SELECT Table1.pbsc, SUM(Table1.qty) AS Quantity, SUM(Table1.wt) AS Weight FROM Table1 WHERE Table1.pbsc IN (psc1, pbsc2) GROUP BY Table1.pbsc SELECT Table1.pbsc, SUM(Table1.qty) AS quantity, SUM(Table1.wt) AS Weight FROM Table1 WHERE Table1.pbsc IN (psc3, pbsc4) GROUP BY Table1.pbsc

我只是不想让事情变得更糟。

3 个答案:

答案 0 :(得分:12)

以下是您可以执行的步骤,假设您拥有git push -f 的权限。

在您的计算机上,执行:

# Step 1: Take the changes from remote
git pull

# Step 2: Note the commit to which you want for restoring your repo to 
# using `git log`. Say the commit id is "x". 
git log

# Step 3: Do hard reset for that commit. 
#         ** NOTE ** All the changes after the commit "x" will be removed
git reset --hard x    # where x is the commit id

# Step 4: Push to remote
git push -f

然后在同事的计算机上,step 1step 3,然后git pull合并远程更改

如果您没有git push -f 的权限,请执行以下操作:

git pull

git revert <commit id>   # may get it via "git log"

git push

使用git revert,将删除已还原提交的更改,但此提交将保留在提交历史记录中。

答案 1 :(得分:2)

如果可以push -f,那就不要了。如果您想要的状态是top之前的一个提交,则可以运行

git pull
git reset --hard @~1
git push -f

确保团队中的其他人都保持同步,这样他们就不会失去任何工作。

答案 2 :(得分:1)

您不需要提取错误提交,因此也不需要git reset。 如果我正确理解了这个问题git push --force就足够了。它会将遥控状态带到你的身上。

如果您已经提取错误提交,请使用git reset --hard + git push --force,如下所示:https://stackoverflow.com/a/37145089/1663197