像这样的东西应该工作。确保首先在您的 Git 存储库的副本中运行它,以确保它正常工作;如果你在跑步时不小心reset
,就有可能丢掉工作。一般来说,当进行这样的操作时,你应该确保你的目录是干净的;一切都应该被提交、隐藏或忽略,因此周围没有任何重要的更改或未提交的文件。
git reset --soft HEAD^
git reset $(git diff --cached --name-only -- '*Test.java')
git commit -m "This is the first commit, that does not contain the *Test.java"
git add -u .
git commit -m "This is the second commit, of just the *Test.java files"
reset --soft
会将您重置为 commit ,但您上次提交的HEAD^
所有更改仍处于暂存状态,可以提交。下一个git reset
将取消暂存所有已更改的名为 的文件*Test.java
,而其他文件仍处于暂存状态。提交将提交那些仍处于暂存状态的更改。现在您再次暂存所有其他文件,使用git add -u .
(这只会暂存已更改的文件,不会添加新文件,因此即使您有其他不想添加的文件也可以安全运行您的提交;如果您在执行此操作的过程中确实有未暂存的新文件,请单独删除-u
或添加它们)。然后你提交第二组文件。