如何从git中的remote / master转到最新的提交?

时间:2012-04-01 16:38:04

标签: git

我不小心将文件保存在错误的分支上。然后我做了git reset --soft HEAD^,现在git status说我落后了14次提交,并列出了一堆红色的修改过的文件。包括一些未跟踪的文件。

我不知道该怎么做。我试图从远程仓库转到最新的提交,但它说我做git pull后我的本地更改将被覆盖。

帮助。我不想搞砸我当地的回购。我只想回到我所处的状态,将编辑后的文件保存在正确的分支中,并提交。

2 个答案:

答案 0 :(得分:3)

如果您更改了本地分支,并且不想丢失任何更改,则可以使用 git-stash 在尝试之前,我建议您备份本地存储库。请尝试以下步骤:

  1. git stash save 'local changes'。 这会将您的本地更改保存在临时位置,并让您在没有任何先前更改的情况下处理当前分支。

  2. git pull <remote-name> <branch-name>。如您所知,它将从远程分支检索更新的提交,并应用于您当地的分支。

  3. git stash pop。这将恢复您在第1步中所做的操作。它将对您之前的更改(您保存的更改)应用于本地分支。如有任何冲突,您有责任解决任何冲突。完成后,您可能需要提交并推送 - 由您决定。

答案 1 :(得分:1)

请勿恐慌

  1. 备份您的存储库。

  2. 使用git stash save存储您的更改。这会将您的更改添加到stash

  3. 然后,从远程分支拉出:git pull <remote> <wrong-branch>。这会将您的工作副本返回到原始分支HEAD。在您开始处理变更集之前,这就是您的分支的样子。

  4. 现在,将隐藏的更改应用于您的工作副本:git stash apply。 Git将足够聪明,可以忽略与现有提交相匹配的隐藏更改,因此您将保留工作副本,使其处于与提交错误分支之前相同的状态。

  5. 现在签出正确的分支,并像往常一样提交:

    git checkout <right-branch>
    git add [...]
    git commit -m "blah blah blah"
    

    如果您的更改集与正确的分支不兼容,您可能必须在签出正确的分支时纠缠您的更改,但一旦完成,您的更改现在将在正确的分支上提交。