Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除git中所有暂存文件的最快方法是什么?_Git - Fatal编程技术网

删除git中所有暂存文件的最快方法是什么?

删除git中所有暂存文件的最快方法是什么?,git,Git,在GitBash中,我试图将BranchTheir合并到branchMine中。当我运行git merge branchTheirs时,我有需要解决的合并冲突。这些合并冲突显示在CLI的“未合并路径:”部分下面 未合并的路径: (使用“git add…”标记分辨率) 两个都已修改:src/main/java/gov/hrsa/nextgen/sitepoc/api/config/CachingConfiguration.java 两个都已修改:src/main/java/gov/hrsa/nex

在GitBash中,我试图将BranchTheir合并到branchMine中。当我运行git merge branchTheirs时,我有需要解决的合并冲突。这些合并冲突显示在CLI的“未合并路径:”部分下面

未合并的路径:
(使用“git add…”标记分辨率)
两个都已修改:src/main/java/gov/hrsa/nextgen/sitepoc/api/config/CachingConfiguration.java
两个都已修改:src/main/java/gov/hrsa/nextgen/sitepoc/api/constants/ApiDocumentationConstants.java
好吧,这就是我所期望的

但是,在CLI的“要提交的更改:”(暂存区域?)部分下面有一长串文件,有些是修改过的,有些是新的,我不想用消除冲突的文件推送这些文件

要提交的更改:
修改:../career portal api/pom.xml
修改:../CareerPortalApiApplication/src/main/java/gov/hrsa/nextgen/cp/api/CareerPortalApiApplication.java
修改:../career portal api/src/test/resources/test.properties
[大量数据区中的非常长的文件列表]
在提交解除冲突的文件之前,如何删除所有暂存文件

git reset HEAD -- .
这可能会奏效
git reset head
是用于解除文件存储的命令,
重置当前目录中的所有内容


小心点。如torek所述,git reset HEAD的命令
git
将删除正在进行的合并的记录。但是,如果该命令与文件名一起使用,例如
git reset HEAD myfile.txt
,它将简单地取消文件的存储,这意味着如果您提交,那么该文件将不会包含在提交中

在提交解除冲突的文件之前,如何删除所有暂存文件

git reset HEAD -- .
首先,正确的答案可能是:不要这样做。(除非你正在做非常高级的事情。)

其次,如果您确实想这样做,您可以对每个这样的文件使用
git reset
,一次一个,或一个命令中的所有命令,例如:

git reset -- file1 file2 ... fileN
请记住,将文件的索引副本更改回与文件的
副本匹配的效果意味着下一次提交将不会使用从另一次提交中引入的所有内容,也就是说,扔掉另一个人对其另一个分支所做的所有更改,保持所有文件与您的分支中的文件相同

这种重置类似于git签出头--file1 file2。。。fileN,除了
git checkout
变量不仅将
HEAD
copy复制到索引中,而且还将索引副本(现在与
HEAD
copy相同)复制到工作树中,以便您可以看到要提交的内容。这将完全失去合并工作,这几乎肯定不是您想要的。因此,这里的
git reset
可能比
git checkout
更明智,但两者似乎都不是您想要的

不过,如果这是您想要的,您可以使用
git-status--short
git-status--ceral
获得一个更方便的文件名列表。例如:

git status --short > /tmp/instructions
[edit /tmp/instructions; replace first three columns of each line with `git reset --`]
sh /tmp/instructions      # run each `git reset`
通过
git reset
而不是
git checkout
单独保留工作树副本,意味着
git status
现在将比较索引和工作树,并显示大量未提交的
更改。如果使用的是
git status--short
,则它们会在第二列中显示为一个字母。第一列字母会显示
HEAD
和index之间的差异

(像这样重置或签出往往是程序员在合并过程中丢弃其他人工作的两种方式之一,通常不打算这样做。因此“不要”建议。使用:

git reset -- .

--的一个轻微变体是指从当前目录向下递归地将所有文件从
HEAD
复制到索引中。从顶层执行,这不仅会重置通过合并带来的更改,还会重置冲突的条目。这可能也不是您想要的。)

但这也会取消合并,不是吗?我不知道你的意思。“git reset head[filename]”所做的全部工作就是取消显示当前已暂存的更改。它不应更改合并的状态。在对不希望成为合并提交一部分的文件(即git reset HEAD[filename])使用git reset后,您可以使用git add[filename])重新添加要加入合并的文件。在合并中需要的所有文件都暂存之后,您可以提交更改。这里有一个关于git reset的链接,可能会有帮助。
git reset HEAD
实际上会删除正在进行的合并的记录。但是,
git复位头--.
将不会
git reset HEAD*
更像是
git reset HEAD--.
,除了shell扩展
*
(在Windows上除外),如果文件名为
--hard
,则可能是错误的。:-)谢谢你,托瑞克,我想在我最初的回答中提到这些要点会很好。看看新的“恢复”命令和“-staged”选项。