Git:撤消Git拉取后是否删除未老化的更改?

Git:撤消Git拉取后是否删除未老化的更改?,git,git-pull,git-reset,Git,Git Pull,Git Reset,我错误地拉了一个不同的分支,并且做了git reset HEAD@{1} 要解开它。现在,当我键入git status时,我从我提取的分支中得到一个巨大的未跟踪和修改文件列表 如何从暂存中删除它们,以便我不必提交它们?您需要的命令是 git reset --hard --hard标志告诉git不仅要移动头部,还要将本地文件重置为提交时的状态 这只会重置被跟踪文件上的更改,如果您在初始重置时使用--hard撤消拉取,则拉取引入的任何新文件都会被删除,但如果您进行了软重置,拉取引入的新文件仍会存在

我错误地拉了一个不同的分支,并且做了
git reset HEAD@{1}
要解开它。现在,当我键入
git status
时,我从我提取的分支中得到一个巨大的未跟踪和修改文件列表


如何从暂存中删除它们,以便我不必提交它们?

您需要的命令是

git reset --hard
--hard
标志告诉git不仅要移动头部,还要将本地文件重置为提交时的状态

这只会重置被跟踪文件上的更改,如果您在初始重置时使用
--hard
撤消拉取,则拉取引入的任何新文件都会被删除,但如果您进行了软重置,拉取引入的新文件仍会存在,但您的头部将是一个提交,而这些文件不会被跟踪

要从工作副本中删除未跟踪的文件,请用户
git clean

git clean -n
将进行试运行,并向您展示它将移除的内容。除非您对其进行了其他设置,否则可能需要提供
-f
force标志以使其实际删除文件


使用git clean时要小心,因为这些文件未被跟踪,所以无法取回意外删除的文件。

您需要的命令是

git reset --hard
--hard
标志告诉git不仅要移动头部,还要将本地文件重置为提交时的状态

这只会重置被跟踪文件上的更改,如果您在初始重置时使用
--hard
撤消拉取,则拉取引入的任何新文件都会被删除,但如果您进行了软重置,拉取引入的新文件仍会存在,但您的头部将是一个提交,而这些文件不会被跟踪

要从工作副本中删除未跟踪的文件,请用户
git clean

git clean -n
将进行试运行,并向您展示它将移除的内容。除非您对其进行了其他设置,否则可能需要提供
-f
force标志以使其实际删除文件


使用git clean时要小心,因为这些文件未经跟踪,所以无法取回您意外删除的文件。

我会像@Spoonmiser的回答那样进行硬重置,但我不会对reflog进行硬重置。reflog很特别——我们可能需要参考它,但在日常git使用中不需要重置它

相反,我会在您提取之前找到分支的最后一次提交,然后执行以下操作:

git reset --hard 46c80011b9845548000f8ed2178755d28c5e6832
或者随便什么

您应该能够通过执行
git log
找到散列。如果pull执行了合并,则最近的提交将是合并。git日志的输出如下所示:

commit eddb8b70c9167cf88653d7649f054c0d69a5ee8a
Merge: a89faff 980a815
Author: jwg <jwg@example.com>
Date:   Wed Mar 15 10:22:16 2017 +0000

    Merge branch 'some_random_remote_branch' of git_server:foo/bar into my_precious_local_branch
提交eddb8b70c9167cf88653d7649f054c0d69a5ee8a
合并:a89faff 980a815
作者:jwg
日期:2017年3月15日星期三10:22:16+0000
将git_服务器的分支“一些随机的远程分支”:foo/bar合并到my_珍贵的本地分支
第二行显示合并的两个提交。其中一个是远程分支,另一个是
my\u precious\u local\u分支
,您应该能够找到哪个分支


如果最后一次提交不是合并提交,则拉动是快进的。这意味着您的本地分支上没有任何不在远程分支上的内容。但是,您可能仍然希望恢复您的本地分支。您可以查看git日志并确定要还原的具体提交,然后对其执行git reset--hard。

我会像@Spoonmiser的回答那样进行硬重置,但我不会对reflog执行硬重置。reflog很特别——我们可能需要参考它,但在日常git使用中不需要重置它

相反,我会在您提取之前找到分支的最后一次提交,然后执行以下操作:

git reset --hard 46c80011b9845548000f8ed2178755d28c5e6832
或者随便什么

您应该能够通过执行
git log
找到散列。如果pull执行了合并,则最近的提交将是合并。git日志的输出如下所示:

commit eddb8b70c9167cf88653d7649f054c0d69a5ee8a
Merge: a89faff 980a815
Author: jwg <jwg@example.com>
Date:   Wed Mar 15 10:22:16 2017 +0000

    Merge branch 'some_random_remote_branch' of git_server:foo/bar into my_precious_local_branch
提交eddb8b70c9167cf88653d7649f054c0d69a5ee8a
合并:a89faff 980a815
作者:jwg
日期:2017年3月15日星期三10:22:16+0000
将git_服务器的分支“一些随机的远程分支”:foo/bar合并到my_珍贵的本地分支
第二行显示合并的两个提交。其中一个是远程分支,另一个是
my\u precious\u local\u分支
,您应该能够找到哪个分支


如果最后一次提交不是合并提交,则拉动是快进的。这意味着您的本地分支上没有任何不在远程分支上的内容。但是,您可能仍然希望恢复您的本地分支。您可以查看
git日志
并确定要还原的具体提交,然后对其执行
git reset--hard

我运行了
git reset--hard
,但我仍然有来自该分支的未跟踪文件。@Rudolph-请看这个:我运行了
git reset--hard
,但我仍然有来自那个分支的未跟踪文件。@Rudolph-请看这个: