Git结帐用点

Pep*_*lac 30 git

下一个git命令有什么区别:

git  checkout branch
git  checkout branch .
git  checkout  .  #<-- used at the branch
Run Code Online (Sandbox Code Playgroud)

为什么当我用不同的分支机构检查不同的分支机构时,我错过了一些文件.
但是当我使用第二个命令时,一切正常吗?

Jan*_*dec 41

git checkout(1)无论是否给定路径说明符,都会做很多不同的事情.

  1. 使用分支说明符only(git checkout branch),它会将当前工作目录切换到指定的分支,如果可能,保持本地更改,否则失败.如果你已经开启branch,它将什么都不做.它只改变了工作目录之间差异的文件HEAD,并branch和其中是否有本地修改(编入索引)失败.
  2. 使用路径说明符,它将覆盖.指定内容的所有匹配文件(所有文件匹配):
    1. 使用路径说明符(git checkout .),它会从索引中写入内容.它是unoes unstated本地修改.要撤消分阶段修改,请使用git reset路径说明符.
    2. 使用分支和路径说明符(git checkout branch .),它将内容写入指定的修订版本.它不会修改哪些HEAD点,所以如果branch不同HEAD,之后会有未分级的更改.

注意,手册页区分了使用-b/ - branch选项和-p/ - patch选项的其他情况,但这些大多是上述情况的直接扩展.

  • @Pepelac:它就在手册页中; 谷歌在结果的第一页找到了几个版本.你有没有试过? (2认同)

owa*_*786 8

上面的解释很好,但让我用例子来解释.

git checkout 可以与文件夹和分支一起使用.

假设有index.html文件和dev文件夹.

如果我不小心改变了index.html,我想撤消,我会简单地运行git checkout index.html.它会将我的文件恢复为原始格式.

现在让我说我在dev文件夹中做了一些更改,并希望这些更改回到dev文件夹中.如果我将使用git checkout dev,如果有任何dev分支,那么它将检查该dev分支而不是命名的文件夹dev.

所以我宁愿跑 git checkout -- dev

现在,这个裸露的双破折号代表当前分支.所以上面的命令是从git询问请给我当前分支的'dev'命名文件夹.

让我们谈谈你的用例.

git checkout branch 这个命令只会检查名为'branch'的分支

git checkout branch .第二个命令将告诉git请结帐.或当前文件夹名称来自名为'branch'的分支

git checkout . #<-- used at the branch正如你所说,首先你切换到名为'branch'的分支,git checkout branch然后你只是在做git checkout .现在没有命名分支.所以它只是从当前分支下拉当前文件夹名称.

  • “现在这个裸露的双破折号代表当前分支。所以上面的命令是从 git 请求的,请给我当前分支中的 'dev' 命名文件夹。” 我认为这个说法不正确, -- 只是意味着,它是选项的结尾,后面的文本是文件路径。如果没有指定分支,这意味着,将在索引中进行更改,而不是从您提到的“当前分支”中进行更改(“索引”和“当前分支”之间有区别) (3认同)