当我在我的项目中点D时,我对我的项目进行了一些更改并将几个提交(E,F,G,H)推送到git,所以我处于H点。
现在我必须进行新的更改(I)并将它们推送到git并进行部署,但我不希望部署旧的提交(E,F,G,H)。
我想回到D做我的更改(I)并部署它而不会丢失我的旧提交(E,F,G,H)然后从点H继续处理我的项目。
我只有一个分支MASTER
我知道我可以做一个git checkout H回到H点 我知道因为改变已被提交(E,F,G,H),所以现在为时已晚......
即。
A - B - C - D - E - F - G - H
\ /
I ----------
有可能吗?
答案 0 :(得分:3)
git checkout [sha for d] -b [branch name]
[make your changes]
[git add your changes]
[git commit]
[push branch]
[deploy the branch]
git checkout - # checks out back to the last checkout ref
答案 1 :(得分:1)
假设所有提交A到H都存在并且你在H点(即主人的HEAD,因为你声明你只有一个分支),你可以尝试:
git reset --hard HEAD~4 // Rolls you back to working state of D
git checkout -b branch_for_i // Digress work from D on a new branch
** Make necessary changes for I
git commit // Commits changes required for I
git push origin branch_for_i // Pushes up changes done for I
git checkout master // Back to the branch with H as HEAD
git reset --hard HEAD // Puts you back into the working state at H