Git - 撤销更改

12

我目前正在尝试学习在我的工作流程中使用Git,并想要询问一些问题,如何更轻松地完成它们。

通常我会创建不同的分支来进行一些操作,以查看它们是否适合我。当我切换分支时,如何保留我的工作目录及其中的文件和文件夹,以保持最后提交的状态?例如,当我从branch_A切换到master时,我的工作目录将具有master分支上最后提交的文件夹和文件,或者当我切换到branch_B时,我的工作目录将具有branch_B上最后提交的任何内容等等。


@AndrewC - 你提供的重复链接本身就是一个重复链接,而且比我提供的那个重复链接更新,但它是受保护的,而不是关闭的重复链接。 - ArtOfWarfare
@ArtOfWarfare - 你提供的重复问题链接只包括了git clean这个命令中的未追踪文件,而另一个链接同时包含了需要的两个步骤(git resetgit clean)。最初关闭这些问题的人可能没有理解这两者之间的区别。 - Andrew C
1个回答

6

如果您希望将工作目录恢复到上一次提交时的状态,即所有新的未跟踪文件及文件夹以及对现有文件的所有更改都将不再存在,则可以执行以下操作:

要重置未提交的更改,请执行以下操作:

git reset --hard HEAD 

回滚到上一个提交。

我不确定我是否理解了你问题的第二部分,但我将尝试解释一下:

如果您想保留更改并希望在另一个分支上应用它们,请与Git stash结合使用。

git stash save
git reset --hard HEAD
// do what you want to do and switch branches
git stash pop

谢谢您的回复。我在第二部分的意思是保留我在“testing”分支中所做的任何更改或新文件,当我切换到另一个“testing”分支时,这些更改和未跟踪的文件不存在,因此我可以在那里创建新的东西。因此,基本上每次我的工作目录都与我的最后一次提交相同。 - ltdev
你可以在当前分支上执行重置操作,然后使用 git checkout -b new_testing_branch 命令从当前提交创建一个新的测试分支。 - Martin Seeler
1
git clean -f -d # remove untracked files - CodingDefined
git checkout . 也可以。 :) - Nieksa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接