在Git中,文件可以同时处于暂存和未暂存的状态吗?

9 浏览
0 Comments

在Git中,文件可以同时处于暂存和未暂存的状态吗?

在处理另一个文件时,我编辑了README.md,然后运行了git add README.md。在进行git提交时,我发现README.md同时出现在“将要提交的更改”和“未暂存的更改”中。

这有意义吗?在.git中我可以查看该文件的权威状态吗?

# 在分支master上

# 将要提交的更改:

# (使用“git reset HEAD …”来取消暂存)

#

# 修改:README.md

# 修改:utils/arrterm

#

# 未暂存的更改:

# (使用“git add …”来更新将要提交的内容)

# (使用“git checkout -- …”来丢弃工作目录中的更改)

#

# 修改:README.md

0
0 Comments

在Git中,一个文件可以同时处于staged(已暂存)和unstaged(未暂存)的状态。这种情况的出现是因为Git不存储文件的差异,而是存储文件的快照。

具体来说,在你描述的例子中,README.md文件有两个版本。已暂存的版本是你当前满意的版本,如果你选择提交它,它将成为文件的最新快照。未暂存的版本是一个潜在的快照,如果你选择将其暂存,它将替换当前已暂存的版本。

为了更好地理解Git的工作原理,请阅读以下链接中的“Snapshots, Not Differences”部分:

http://git-scm.com/book/en/Getting-Started-Git-Basics

此外,还可以查看以下链接,进一步解释了你提出的问题中的情况(尤其是“Staging Modified Files”部分):

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository

希望以上内容对你有帮助!

0
0 Comments

在Git中,文件可以同时处于暂存(staged)和未暂存(unstaged)的状态。这种情况的出现是因为Git关注的是文件的改动,而不是文件本身。

如果想要查看文件的当前状态,可以在.git文件夹中查找。除此之外,还可以使用以下命令来查看文件的状态:

- `git diff -- yourFile`:查看文件的未暂存的改动(未添加到索引中的改动)。

- `git diff --cached -- yourFile`:查看文件的已暂存的改动(已添加到索引中的改动)。

Git的官方文档中也有关于这个问题的解释,他们强调Git关注的是文件的改动,而不是文件本身。因此,使用`git add`命令不是将文件添加到仓库中,而是记录文件的当前状态,以便稍后提交。

此外,还有一个强大的Git功能是`git add -p`命令,可以逐个查看并添加文件的改动。

需要注意的是,使用`git status -v -v`命令可以同时显示已暂存和未暂存的改动。在Git 2.3.4版本之后,这个功能将会被添加到Git中。

,文件同时处于暂存和未暂存的状态是因为在两次改动之间添加了一次改动。

0
0 Comments

Git提供了一种将文件的更改分为已暂存和未暂存的功能。"已暂存"表示文件的某些更改已准备好提交,而"未暂存"表示文件的一些更改还没有准备好提交。可以通过以下命令来查看已暂存的更改:git diff --staged -- README.md,通过以下命令来查看未暂存的更改:git diff -- README.md

Git的工作方式是在对文件进行多个更改时,您必须将每个更改添加/标记为一组更改,即一个提交。当使用git add命令时,这将自动完成。但是,将所有单独的更改(hunks)添加到"索引"的方式不仅仅是使用git add。例如,您可以对同一文件进行多个更改,并在不同的提交中提交它们,或者仅将特定更改添加到提交中。您可以使用git add -p命令来显式地将某些更改添加到"索引",而不是整个更改列表。

所以,问题的原因是:您在暂存(git add)README.md文件之前所做的更改将显示为已暂存,而您在暂存README.md文件之后所做的更改将显示为未暂存。

解决方法是了解Git的工作方式,理解Git是按行而不是按文件暂存和提交内容的。这使得可以非常方便地在一个文件中提交一部分更改,而将其他更改保留在将来的提交中。使用Git图形界面可以更容易地查看和更改文件的已暂存部分。

需要注意的是,Git暂存和提交的是内容行,而不是文件本身。这在某些情况下非常有用,例如可以提交文件的部分更改,同时将其他更改保留为将来的提交。

0