如何将代码提供给已经推送到服务器的GIT中的先前提交

时间:2017-09-06 10:54:29

标签: git teamforge

我对代码进行了一些更改然后执行了以下操作: git add。 git commit git push origin master。

现在我意识到我犯了一些错误,我想找回前一次提交的代码,然后重新进行更改并将它们推回服务器。

这是git log输出:

commit 3254c7668610a86eb930798c3c50fb5e1c298cbf
Author: Subhayan Bhattacharya <subhayan.bhattacharya@hpe.com>
Date:   Wed Sep 6 00:53:39 2017 -0700

    Made changed to downloadpkgapp.sh

commit c6577344eaa7ed1ac7fc911892cf85f66a0ac0b9
Author: Subhayan Bhattacharya <subhayan.bhattacharya@hpe.com>
Date:   Wed Aug 16 02:56:17 2017 -0700

    commiting changes to file CallProgram.py

commit 3839fa51edb20812c10d96f40b36aaa4fada9200
Author: dheeraj.mittal <dheeraj.mittal@hpe.com>
Date:   Sun Jun 11 11:17:41 2017 +0200

    added execute permission command for application package

有人请帮我一样。我很难理解GIT。因此,如果有人也可以解释建议的任何步骤,那就太棒了。

3 个答案:

答案 0 :(得分:0)

如果您在分支master上有3个提交(例如A,B和C),请将它们推送到远程(例如origin),然后确定您已创建了与C的错误并想要恢复它,你应该首先确保没有其他人拉动分支。如果他们有,你的提交就是他们。

如果没有,您可以先将master分支机构重置为B

 git reset --hard B

然后使用

再次强制推送master
 git push --force origin master

然而,这改变了项目的历史,所以只有在你了解后果的情况下才这样做。

答案 1 :(得分:0)

当您推送到远程存储库时要小心,因为其他人可能已经错误提交了。

我认为你应该考虑把它留在那里,并做一些恢复操作。

首先,如果您的提交只是正常提交​​,您可以使用git revert <last-commit>简单地还原您的更改并推送到存储库。

其次,如果你的提交是合并提交,你应该小心。在这里,您应该使用git revert <last-commit> -m 2将状态恢复为源分支。 您可以学习Undoing Mergesgit revert --help来了解相关信息。

答案 2 :(得分:-1)

我建议您使用像Git Extensions这样的git图形界面。跟踪发生的事情会更容易......

使用Git Extensions,您可以:

1)确保您没有任何未提交的更改。在提交中包含任何更改,以确保您不会失去它

2)在上次提交中创建一个新分支:单击上次提交,按右键并选择&#34;创建新分支&#34;。在对话框中,不要在创建选项&#34;后选择&#34; Checkout。将新分支称为&#34;不正确&#34;

3)选择最后一次正确的提交,然后按右键并选择&#34;将当前分支重置为此处&#34;。选择&#34; Hard&#34;重置类型。

4)使用您需要的提交重做所有代码修改

5)按&#34;按&#34;按钮并在推送对话框中选择&#34;选项&#34;并检查&#34;强制租赁&#34;这将强制将服务器更新到新的提交。

小心!:如果有人使用您之前的提交撤消了更改,那么如果您更改服务器中的提交历史记录,则会产生很多混淆。如果有人有您之前的提交,您应该使用错误维护提交历史记录并在新提交中进行更正。

当您确定不需要它时,您可以删除&#34;不正确的&#34;分支。