0

我对我的代码进行了一些更改,然后做了一个: git add 。git commit git push origin master。

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

这是 git 日志输出:

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。因此,如果有人也可以解释建议的任何步骤,那就太好了。

4

3 回答 3

0

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

我认为您应该考虑将其留在那里,然后进行一些还原操作。

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

其次,如果你的提交是合并提交,你应该小心。在这里,您应该使用git revert <last-commit> -m 2将您的状态恢复到源分支。你可以学习Undoing Merges或者git revert --help学习一些关于它的东西。

于 2017-09-06T16:04:30.543 回答
0

如果您在一个分支上有 3 个提交(例如 A、B 和 C)master,请将它们推送到远程(例如origin),然后确定您在 C 上犯了一个错误并想要恢复它,您应该首先确保没有人拉过树枝。如果他们有,您的承诺与他们同在。

如果没有,您可以先将您的master分支重置为B这样,

 git reset --hard B

master然后再次使用强制推送

 git push --force origin master

但是,这正在改变项目的历史,因此只有在您了解后果的情况下才这样做。

于 2017-09-06T11:23:12.390 回答
-1

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

使用 Git 扩展,您可以:

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

2)在您的最后一次提交中创建一个新分支:单击您的最后一次提交,按右键并选择“创建新分支”。在对话框中不要选择“创建后结帐选项”。将新分支称为“不正确”

3)选择您最后一次正确的提交并按右键并选择“将当前分支重置到此处”。选择“硬”复位类型。

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

5)按“推送”按钮,在推送对话框中选择“选项”并选中“强制租约”,这将强制服务器更新到您的新提交。

小心!:如果有人在您之前的提交中提取了您的更改,如果您更改服务器中的提交历史记录,您将造成很多混乱。如果有任何机会有人有你之前的提交,你应该维护你的提交历史和错误,并在新的提交中进行更正。

当您确定不需要它时,您可以删除“不正确”的分支。

于 2017-09-06T11:19:17.460 回答