出于某种原因,Git告诉我,我有一个既"要提交"又"没有提交进行"的文件?这没有意义:
% git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: Dir1/Dir2/filename.cpp
#
# 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: Dir1/Dir2/filename.cpp
Run Code Online (Sandbox Code Playgroud)
Dir1
,Dir2
并filename.cpp
肯定所有的同一个文件.我不得不filename.cpp
再次添加以使其显示为要提交的更改(在它最初位于存储库之后).关于唯一可能导致问题的是我被藏起来了pull --rebase
,然后弹出了stash
?.gitignore
没有列出Dir1
,Dir2
或filename.cpp
在任何地方,模式不建议他们会抓住这个文件?
Cam*_*ner 31
这意味着您进行了更改filename.cpp
,添加了更改(带git add
),然后进行了另一项尚未添加的更改.
"要提交的更改"部分意味着Git已通过更改更新其索引.运行时git commit
,对索引的更改将用于创建新的提交对象.
"未更改的更改"部分显示索引与工作副本之间的差异.
您可以重现您所看到的内容:
git status
.你会看到"没有上演的变化".git add filename.cpp
git status
.您将看到"要提交的更改".git status
.您将看到"未上演的更改"和"已提交的更改".那有意义吗?解释Git如何工作总是有点棘手.
ams*_*ams 11
在CVS,SVN,BZR以及毫无疑问的其他工具中,一旦添加了文件,这意味着它将被包含在下一次提交中.
不是那么GIT.
在git中你没有"添加文件",你"添加一个更改"(有时它被称为"阶段变化").
如果您更改文件两次,则必须"添加"两次.
如果你修改一个文件,添加它,然后他们重新修改文件,你会得到这种行为。当您执行 git add 时,它会将更改添加到该点,然后在不重新添加的情况下提交仅提交第一组添加的更改。
$ git status
# On branch master
nothing to commit (working directory clean)
matthewfarwell (master)
$ vi foo.txt <-- add lines 1,2,3 here
matthewfarwell (master)
$ git add foo.txt
matthewfarwell (master)
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: foo.txt
#
matthewfarwell (master)
$ vi foo.txt <-- add lines 4,5,6, here
matthewfarwell (master)
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: foo.txt
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: foo.txt
#
Run Code Online (Sandbox Code Playgroud)
因此,如果我现在提交,则只会提交第 1、2、3 行。
归档时间: |
|
查看次数: |
13273 次 |
最近记录: |