git重置的文件不清楚<;路径>;命令

git重置的文件不清楚<;路径>;命令,git,git-reset,Git,Git Reset,摘自: 运行git reset更新索引项后,可以使用git checkout[1]将索引中的内容签出到工作树。或者,使用git checkout[1]并指定提交,您可以一次性将提交中的路径内容复制到索引和工作树 Q有人能举例说明引用的段落的含义吗 注意此问题专门询问所引用的git reset[-q][-]段落…​变量。我知道git reset的功能,但无法理解上面的片段。我建议阅读Pro git的前三章,这将使您更好地理解git模型,这是理解这一点的关键 tl;dr是指此版本的reset仅更新

摘自:

运行git reset更新索引项后,可以使用git checkout[1]将索引中的内容签出到工作树。或者,使用git checkout[1]并指定提交,您可以一次性将提交中的路径内容复制到索引和工作树

Q有人能举例说明引用的段落的含义吗



注意此问题专门询问所引用的
git reset[-q][-]段落…​变量。我知道git reset的功能,但无法理解上面的片段。我建议阅读Pro git的前三章,这将使您更好地理解git模型,这是理解这一点的关键

tl;dr是指此版本的
reset
仅更新索引(即缓存、暂存区),而不触及工作树(您可以看到的文件)或
标题
,如果这样做,您可以使用
签出
使您的工作树与索引保持一致(或者只需使用
checkout
一次完成这两项操作—获取特定版本的文件并用它们更新索引和工作树)


让我们以Git存储库为例。首先,我将确定一个具体的提交和一个具体的更改作为示例:

$ git show --stat HEAD
commit e7e07d5a4fcc2a203d9873968ad3e6bd4d7419d7
Author: Junio C Hamano <gitster@pobox.com>
Date:   Fri Feb 24 10:49:58 2017 -0800

    Git 2.12

    Signed-off-by: Junio C Hamano <gitster@pobox.com>

 Documentation/RelNotes/2.12.0.txt | 6 ++++++
 Documentation/git.txt             | 5 +++++
 GIT-VERSION-GEN                   | 2 +-
 3 files changed, 12 insertions(+), 1 deletion(-)

$ git show HEAD -- Documentation/git.txt
commit e7e07d5a4fcc2a203d9873968ad3e6bd4d7419d7
Author: Junio C Hamano <gitster@pobox.com>
Date:   Fri Feb 24 10:49:58 2017 -0800

    Git 2.12

    Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --git a/Documentation/git.txt b/Documentation/git.txt
index 4f208fab9..aa895da4a 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -44,6 +44,11 @@ unreleased) version of Git, that is available from the 'master'
 branch of the `git.git` repository.
 Documentation for older releases are available here:

+* link:v2.12.0/git.html[documentation for release 2.12.0]
+
+* release notes for
+  link:RelNotes/2.12.0.txt[2.12].
+
 * link:v2.11.1/git.html[documentation for release 2.11.1]

 * release notes for
我们可以检查索引状态与
HEAD
之间的区别,如下所示:

$ git diff --staged
diff --git a/Documentation/git.txt b/Documentation/git.txt
index aa895da4a..4f208fab9 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -44,11 +44,6 @@ unreleased) version of Git, that is available from the 'master'
 branch of the `git.git` repository.
 Documentation for older releases are available here:

-* link:v2.12.0/git.html[documentation for release 2.12.0]
-
-* release notes for
-  link:RelNotes/2.12.0.txt[2.12].
-
 * link:v2.11.1/git.html[documentation for release 2.11.1]

 * release notes for
请注意,这与
HEAD
commit完全相反:索引中
Documentation/git.txt
的版本与
HEAD^
中记录的版本匹配。我们还可以将工作树与
HEAD
进行比较:

$ git diff HEAD
# no output, because there's no difference
我们还可以将工作树与索引进行比较:

$ git diff
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 4f208fab9..aa895da4a 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -44,6 +44,11 @@ unreleased) version of Git, that is available from the 'master'
 branch of the `git.git` repository.
 Documentation for older releases are available here:

+* link:v2.12.0/git.html[documentation for release 2.12.0]
+
+* release notes for
+  link:RelNotes/2.12.0.txt[2.12].
+
 * link:v2.11.1/git.html[documentation for release 2.11.1]

 * release notes for
$ git diff HEAD
diff --git a/Documentation/git.txt b/Documentation/git.txt
index aa895da4a..4f208fab9 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -44,11 +44,6 @@ unreleased) version of Git, that is available from the 'master'
 branch of the `git.git` repository.
 Documentation for older releases are available here:

-* link:v2.12.0/git.html[documentation for release 2.12.0]
-
-* release notes for
-  link:RelNotes/2.12.0.txt[2.12].
-
 * link:v2.11.1/git.html[documentation for release 2.11.1]

 * release notes for
这恰好与
HEAD
中的提交相似,因为我们的索引对应于
HEAD^
,但我们的工作树仍然与
HEAD
!(这一部分特别容易混淆,但一旦您了解了它的工作原理,它就会更有意义。)如果我们
签出
(因此,将索引中的版本复制到工作树中),不再是这种情况:

$ git checkout -- Documentation/git.txt

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   Documentation/git.txt
这种组合(
git-reset-HEAD^--Documentation/git.txt&&git-checkout--Documentation/git.txt
)相当于
git-checkout-HEAD^--Documentation/git.txt

  • 引用段落第一部分的一个例子: 运行git reset更新索引项后,可以使用git checkout[1]将索引中的内容签出到工作树

    $ git checkout -- hello.c
    
    $ git status
    On branch feature02
    nothing to commit, working tree clean
    
git reset
开始,以获得更好的上下文。假设我们在工作树中更改了hello.c,并将其添加到索引中

$ git status
On branch feature02
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   hello.c
现在,索引和工作树都被更新以匹配HEAD。因此它表示
workingtree clean

  • 所引用段落第二部分的示例: 或者,使用git checkout[1]并指定提交,您可以一次性将提交中的路径内容复制到索引和工作树

开始时恢复到原始状态:

$ git status
On branch feature02
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   hello.c
在这里,索引和工作树都被更新以匹配HEAD。这就是为什么我们一次调用它


这里有一些技巧是git checkout的两种用法:

git checkout -- hello.c
&

第一个没有命名提交的是从索引(到工作树)复制内容,而后一个是从提交历史(到索引和工作树)

$ git status
On branch feature02
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   hello.c
$ git checkout HEAD hello.c

$ git status
On branch feature02
nothing to commit, working tree clean
git checkout -- hello.c
git checkout HEAD hello.c