GIT : 在旧提交中编辑暂存文件但保留更改
GIT : edit staged files in old commit but keep changes
我找遍了所有地方,但找不到解决我正在尝试做的事情的方法。也许我只是错过了。
假设我有:
Commit A:
- file 1
- file 2
- file 3
Commit B:
- file 4
Commit C:
- file 5
- file 6
HEAD: has files 1-6.
有没有办法以交互方式返回提交 A 以取消提交文件 2 和文件 3,然后重播剩余的提交?
这样我就剩下
Commit A:
- file 1
Commit B:
- file 4
Commit C:
- file 5
- file 6
HEAD: has files 1-6, with file2 and file3 as unstaged.
我发现的不完整解决方案:
- git reset --soft <commit A>
- make changes
- git commit
但这让我没有剩余的提交(B,C)。
- git rebase -i HEAD~n
- edit <commit>
- make changes
- git commit --amend
- git rebase --continue
但是这里的更改是在那次提交时提交的文件之上,我不想撤消文件更改,只是 uncommit/unstage 它们。
- git revert -n <commit>
但这会撤消更改。
- git rebase drop <commit>
但这会删除整个提交。
我正在寻找 playback/--continue 的变基,但软重置的可编辑性。有办法吗?
谢谢
我会推荐:
git rm -- file_2 file_3
git commit
这将创建一个删除这两个文件的新提交。历史没有改变。
恢复工作树中的两个文件:
git checkout HEAD^ -- file_2 file_3
git reset HEAD -- file_2 file_3
git checkout
恢复文件并 git reset
将它们从暂存区中删除,这样您就不会提交它们。
或者,如果您还没有将这些提交推送到共享存储库,并且希望更改历史记录,请使用 git rebase -i
git rebase -i HEAD~n #n should be one more than the number of commits to change
#mark commit A to edit
git reset -- file_2 file_3 # remove file_2 and file_3 from staging so they won't be committed
git commit --amend
git rebase --continue
我相信这会在您的工作树中留下 file_1 和 file_2。如果没有,可以使用上面的 git checkout 从你的 pre-rebase 提交中恢复它们。
我找遍了所有地方,但找不到解决我正在尝试做的事情的方法。也许我只是错过了。
假设我有:
Commit A:
- file 1
- file 2
- file 3
Commit B:
- file 4
Commit C:
- file 5
- file 6
HEAD: has files 1-6.
有没有办法以交互方式返回提交 A 以取消提交文件 2 和文件 3,然后重播剩余的提交? 这样我就剩下
Commit A:
- file 1
Commit B:
- file 4
Commit C:
- file 5
- file 6
HEAD: has files 1-6, with file2 and file3 as unstaged.
我发现的不完整解决方案:
- git reset --soft <commit A>
- make changes
- git commit
但这让我没有剩余的提交(B,C)。
- git rebase -i HEAD~n
- edit <commit>
- make changes
- git commit --amend
- git rebase --continue
但是这里的更改是在那次提交时提交的文件之上,我不想撤消文件更改,只是 uncommit/unstage 它们。
- git revert -n <commit>
但这会撤消更改。
- git rebase drop <commit>
但这会删除整个提交。
我正在寻找 playback/--continue 的变基,但软重置的可编辑性。有办法吗?
谢谢
我会推荐:
git rm -- file_2 file_3
git commit
这将创建一个删除这两个文件的新提交。历史没有改变。
恢复工作树中的两个文件:
git checkout HEAD^ -- file_2 file_3
git reset HEAD -- file_2 file_3
git checkout
恢复文件并 git reset
将它们从暂存区中删除,这样您就不会提交它们。
或者,如果您还没有将这些提交推送到共享存储库,并且希望更改历史记录,请使用 git rebase -i
git rebase -i HEAD~n #n should be one more than the number of commits to change
#mark commit A to edit
git reset -- file_2 file_3 # remove file_2 and file_3 from staging so they won't be committed
git commit --amend
git rebase --continue
我相信这会在您的工作树中留下 file_1 和 file_2。如果没有,可以使用上面的 git checkout 从你的 pre-rebase 提交中恢复它们。