如何在没有强制推送的情况下撤消先前的提交?

时间:2018-05-24 15:12:44

标签: git

假设我从文件中删除了一行,然后我提交并推送该更改:

提交4dd87

$ vim myfile.txt //remove line from file
$ git add myfile.txt
$ git commit -m "line added"
$ git push origin master

现在,我再做一次改动,然后推动它:

提交84674

$ vim myfile.txt //make another change, whatever
$ git add myfile.txt
$ git commit -m "another change"
$ git push origin master

现在,我想恢复我在第一次提交时删除的行。我会在接下来的步骤中做到这一点:

1)转到上一个提交,用git reset --hard 4dd87删除该行(4dd87之前) 2)使用git cherry-pick 84674应用第二次提交的更改 3)用git push origin master --force

强制推动

但是当有更多人推向回购时,使用这种方法有许多缺点。

那么,有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

使用git revert,它会创建一个新的提交,以恢复原始提交中所做的更改。

答案 1 :(得分:0)

最简单的方法是:检查先前提交的文件:

git checkout 4dd87 myfile.txt

现在您的文件恢复到4dd87中的状态,并准备好提交,或者您可以进一步修改它。