更改以前的提交SourceTree

时间:2017-03-01 07:17:40

标签: git commit git-branch atlassian-sourcetree git-checkout

同样,我是Git的新手,所以这看起来像是一个愚蠢的问题。我有一个7分钟的主分支。我想回到第3次提交,因为我意识到它已经停止了工作。我想我应该看看第3次提交。但是,当我这样做时,我的工作副本变成了一个独立的头。我的新提交不会像通常那样进入主分支。我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

您有几种选择:

  1. 如果您已经推动并且您不在乎重写遥控器上的历史记录,您可以这样做:

    $ git reset --hard <commitID-of-third-commit>

  2. 并推送东西。

    1. 如果您尚未推送提交,则可以执行与1.中相同的操作,但无需在远程重写历史记录
    2. 请记住,git reset --hard具有破坏性,会破坏未经修改的以及已经提交的更改

      1. 如果您不想在远程重写历史记录,则必须还原第3个和最后一个之间的所有提交,然后从那里继续。

        $ git revert <commit 4>

        $ git revert <commit 5>

答案 1 :(得分:1)

如果你通过$ git checkout <commit id>签出提交,你最终会得到一个超然的头,就像你说的那样。如果您想从此时开始继续工作,则必须使用$ git checkout -b <new_branch_name>创建新分支。

如果您要将当前分支重置为旧提交,可以使用$ git reset中所述的$ git reset。但请注意,(硬)重置可能具有破坏性,因为您松开了未经修改的更改,并且您的某些提交不再可通过您的分支访问。如果您不完全确定不再需要这些提交,则可以在<td class="activities" id="3"> <a id="3" class="btn add_activity" href="#">+</a> </td> 呼叫之前签出备用分支。

通常不建议硬重置已推送到遥控器的分支。其他人可能已经在您即将重置的分支机构上工作。