我正在使用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中恢复此更改。 想要是最好的做法:
存储更改 切换到提交#7 使用git stash pop
合并提交#5和#7。
由于
答案 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中引入的错误。