下一个git
命令之间有什么区别:
git checkout branch
git checkout branch .
git checkout . #<-- used at the branch
为什么当我用不同的文件夹将不同的分支机构检入不同的文件夹时,我错过了一些文件 但是当我使用第二个命令时,一切正常吗?
答案 0 :(得分:39)
git checkout
(1)都会做出非常不同的事情。
git checkout branch
),它会将当前工作目录切换到指定分支,保留本地更改(如果可能),否则。如果您已经在branch
,它将无所事事。它只修改工作目录中HEAD
和branch
之间不同的文件,如果其中任何一个文件有本地修改(索引与否),则会失败。.
):
git checkout .
),它会从索引中写入内容。它是unoes unstated本地修改。要撤消分阶段修改,请将git reset
与路径说明符一起使用。git checkout branch .
),它会在指定的修订版中写入内容。它将不修改HEAD
点的位置,因此,如果branch
与HEAD
不同,则之后会有非暂停更改。请注意,man page区分了使用-b / - branch选项和-p / - patch选项的其他情况,但这些选项大多是上述情况的直接扩展。
答案 1 :(得分:7)
上面的解释很好,但让我用例子来解释。
git checkout
可用于文件夹和分支。
假设有index.html
个文件和dev
文件夹。
如果我不小心更改了index.html
,我想撤消该操作,我只会运行git checkout index.html
。它会将我的文件恢复为原始格式。
现在让我说我在dev文件夹中做了一些更改,并希望这些更改回到dev文件夹中。如果我将使用git checkout dev
并且如果有任何dev
分支,那么它将检出 dev分支而不是名为dev
的文件夹。
所以我宁愿跑
git checkout -- dev
现在这个裸双击表示当前分支。所以上面的命令是从git询问请给我&#39; dev&#39;当前分支的命名文件夹。
让我们谈谈你的用例。
git checkout branch
此命令只会检出名为&#39; branch&#39;
git checkout branch .
第二个命令将告诉git请检查.
或当前文件夹名称来自名为&#39; branch&#39;
git checkout . #<-- used at the branch
正如您所说,首先您切换到名为&#39; branch&#39;使用git checkout branch
然后您只是在做git checkout .
现在没有名为.
的分支,因此它只会从当前分支下拉当前文件夹名称。