即使我 git 在提交之前添加了所有文件,我是否可以仅恢复到一个文件的先前版本?
Can I revert to a previous version of just one file even if I git added all files before a commit?
即使我 git 在提交之前添加了所有文件,我是否可以只恢复到一个文件的先前版本?
所以,这就是我所做的:
git add .
然后 git commit -m "my changes"
然后 git push
因此还有许多其他 git 添加。并在 "my changes"
和当前头之间提交。
即使我 git 添加了多个文件 (git add .
),是否可以仅将一个文件恢复到 "my changes"
状态?
你问题中的全部担忧都是基于对 Git 是什么的完全误解。
每个 提交包含所有 个文件。它们都是整个项目的快照。 git add
只是告诉 Git 下一次提交时要特别注意工作树中的哪些文件,但是您是否通过在 之前说 git add
或不明确地包含文件特定 提交,如果该文件在先前 提交中,则它在之后的每个 提交中。
所以你说的git add .
完全没有任何意义。
问题变得很简单,您是否可以恢复文件的状态。答案当然是肯定的;每个提交都包含所有文件,所以只需找到您喜欢该特定文件状态的提交并提取它:
git restore --source=<thatCommitSHA> -- thatFile
现在 git add
该文件(以及您喜欢的任何其他文件)并提交。
即使我 git 在提交之前添加了所有文件,我是否可以只恢复到一个文件的先前版本?
所以,这就是我所做的:
git add .
然后 git commit -m "my changes"
然后 git push
因此还有许多其他 git 添加。并在 "my changes"
和当前头之间提交。
即使我 git 添加了多个文件 (git add .
),是否可以仅将一个文件恢复到 "my changes"
状态?
你问题中的全部担忧都是基于对 Git 是什么的完全误解。
每个 提交包含所有 个文件。它们都是整个项目的快照。 git add
只是告诉 Git 下一次提交时要特别注意工作树中的哪些文件,但是您是否通过在 之前说 git add
或不明确地包含文件特定 提交,如果该文件在先前 提交中,则它在之后的每个 提交中。
所以你说的git add .
完全没有任何意义。
问题变得很简单,您是否可以恢复文件的状态。答案当然是肯定的;每个提交都包含所有文件,所以只需找到您喜欢该特定文件状态的提交并提取它:
git restore --source=<thatCommitSHA> -- thatFile
现在 git add
该文件(以及您喜欢的任何其他文件)并提交。