如何返回先前的提交并在之前的提交中进行更改?

时间:2015-03-13 14:56:56

标签: git git-branch

我正在使用git。有些日子我有一个师傅的分支。

$ git log
commit 412455451515dd5d5dldldld454585fgdgjd      // #7
Author: me
Date:   Fri Mar 03 14:27:55 2015 +0100

    feature7A

commit 95299628812ae425c06accc61a0ef4203cc  // #6
Author: me
Date:   Wed Mar 03 11:20:35 2015 +0100

     feature6A

commit 82f1691fcfd6348ddf5462be42bf9983b2f  // #5
Merge: 052c908 6c2c93d
Author: me
Date:   Tue Mar 02 16:36:01 2015 +0100

   feature5A

commit 6c2c93da125a66f7dbb5b14a96feed819f70671d     // #4
Author: me
Date:   Tue Mar 01 14:30:48 2015 +0100

   feature4A

我回到了提交82f1691fcfd6348ddf5462be42bf9983b2f //#5

git checkout 82f1691fcfd6348ddf5462be42bf9983b2f 

我更正了此提交中的错误。 我想在提交412455451515dd5d5dldldld454585fgdgjd //#7中恢复此更改。 想要是最好的做法:

  1. 存储更改 切换到提交#7 使用git stash pop

  2. 应用更改
  3. 合并提交#5和#7。

  4. 由于

2 个答案:

答案 0 :(得分:1)

您即将更改录制的历史记录。只有在您没有共享修改时才这样做。 小心!

如果您已经分享了这个,那么请不要惊慌,但也不要做以下事情。指任何负责回购并获得适当帮助的人,这与项目中的工作流程一致。

// in the following i'm assuming that you were working on master.
git checkout 82f1691f -b recovery
// This checks out the commit you want to modify and creates a branch there that we will delete afterwards.
//Hack hack hack.

git add my_Modified_File.h  //You can replace this 2 lines by using git gui
git commit --amend          //and selecting the menu commit->fix the last commit

git checkout master
git rebase recovery

答案 1 :(得分:1)

最干净,最好,最诚实的是,应用现在的变化。提交#5有一个错误,所以就这样吧。每个开发人员都会编写错误,让历史记录显示它不是问题。重写历史没有意义隐藏它。

最佳做法是:

$ git stash
$ git checkout #7
$ git stash apply

检查您的修复程序是否仍然有效

$ git commit -a

可能在提交消息中提到这修复了commit#5中引入的错误。