在处理其他文件时,我编辑了README.md
,然后运行了git add README.md
。在进行git提交时,我发现README.md
都在"要提交的更改中#{1}}和#34;未提交的更改"。
这有意义吗?我可以在.git
中查看此文件的权威状态吗?
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: README.md
# modified: utils/arrterm
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README.md
答案 0 :(得分:16)
这意味着您所做的部分更改将暂停以进行提交,而部分更改则不会。
如果您运行
,可以查看暂存的内容git diff --staged -- README.md
并通过运行
检查未暂停的内容git diff -- README.md
大多数版本控制系统通常只存储两种状态之间的变化。 git的工作方式,当你对文件进行多次更改时,你必须添加/标记它们中的每一个,作为一组更改的一部分a.k.a一个提交。当您使用git add
时,这将自动完成。
然而,这并不是您将所有个人更改(帅哥)添加到您的&#34;索引&#34;的唯一方法。例如,您可以对同一个文件进行多次更改,并在不同的提交中提交它们,或者只对提交添加特定的更改。例如。明确地为你的&#34;索引&#34;添加一些更改。但不是其他人,你可以使用git add -p
只添加一些&#34;帅哥&#34; (组)更改而不是整个更改列表本身。
此处发生的事情是您在登台(README.md
)之前对git add
所做的更改将在暂存时显示,并且您在之后所做的任何更改> strong> staging README.md
将显示为未上映的。
答案 1 :(得分:7)
在.git中我可以查看此文件的权威状态吗?
使用git diff
:
git diff -- yourFile
会为您提供尚未上演的更改(尚未添加到索引中)git diff --cached -- yourFile
会为您提供已添加到索引中的更改。请参阅&#34; Changes, not files&#34;:
大多数版本控制系统都使用文件。您将文件添加到源控件,系统将跟踪此时的更改。
Git专注于对文件的更改,而不是文件本身
git add file
命令不会告诉git将文件添加到存储库,而是要记录文件的当前状态,以便稍后提交。
另见&#34; git add -p
: The most powerful git feature you're not using yet&#34;
请注意,git status -v -v将很快(Git 2.3.4,2015年第2季度)显示两个差异(分阶段和非分阶段),可能列出同一文件的不同差异。
请参阅&#34; Show both staged & working tree in git diff?&#34;。
答案 2 :(得分:1)
实际上你看到的状态很容易重现:
git init
touch test
git add test #1
echo 42 > test #2
git status #3
在#1中,我们将空的测试文件暂存。 #2更改文件的内容。这些更改不会被暂存(因为您需要使用git add
显式更改更改)。 #3中git status
的输出完全告诉您。
要查看已暂存的更改,请运行git diff --cached
。要查看尚未暂停对工作副本文件的哪些更改,请运行git diff
。
在你的问题中,所以说你跑了git commit
。从您的git status
输出看起来好像没有创建提交,可能是因为您没有输入提交消息。检查git commit
的输出,git可能告诉你在尝试创建提交时出了什么问题!
答案 3 :(得分:1)
回答“这有意义吗?”
只有了解git不存储存储快照的差异才有意义。
在您描述的示例中,您的更改中有两个版本的README.md。分阶段的版本是您目前满意的版本,如果您选择提交,它将最终成为文件的最新快照。未分级版本是一个潜在的快照,如果您选择暂存,它将取代当前暂存的版本。
请阅读以下链接中的“快照,而不是差异”部分,以便更好地了解git的工作原理:
http://git-scm.com/book/en/Getting-Started-Git-Basics
另请查看以下链接,以进一步说明您已包含在问题中的方案(特别是“暂存已修改的文件”部分):
http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository