应用git add --all后修改的文件未显示

时间:2014-07-28 16:05:52

标签: git github

我将git存储库克隆到我的本地计算机中 我替换了我物理位置的四个文件。 执行

git status

产生以下结果

在分支XXX上 未提交更改的更改:   (使用" git add ..."更新将要提交的内容)   (使用" git checkout - ..."放弃工作目录中的更改)

    modified:   ABC.xml
    modified:   XYZ.java
    modified:   DBCD.java
    modified:   sdfsd.java

没有为提交添加任何更改(使用" git add"和/或" git commit -a")

此后,我

git add --all

获取以下消息:

warning: LF will be replaced by CRLF in ABC.xml.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in XYZ.java.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in DBCD.java.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in sdfsd.java
The file will have its original line endings in your working directory.

现在我做的时候

git status

以下显示的消息似乎表明git已丢失了文件的跟踪。它们不会出现在要提交的更改部分

On branch XXX
nothing to commit, working directory clean

此外,这四个文件变为只读模式。

另外,git whatchanged并不表示文件已提交。

不确定我在做什么错?我应该承诺吗? 此外,当

时会发生什么
git add --all

发生了吗?

更新:我再一次改变了整个过程。而不是使用

git add --all

我用过

git add ABC.XML

即使是现在,也会发生类似的事情。 ABC.XML文件未显示在要提交的更改部分下。 Git Status不显示ABC.XML的状态,但是所有其他文件仍显示在git Status

3 个答案:

答案 0 :(得分:2)

这是您的行结束转换设置的结果。您的工作目录中的文件具有与上次提交中存储的行不同的行结尾,因此对于git status,它们看起来是不同的文件(大小不同,散列不匹配)。但是,当您执行git add并转换行结尾以便将文件添加到存储库时,它会发现转换后的文件与上次提交的文件匹配,这意味着没有更改文件。 git add的副作用是使用文件的当前时间戳更新索引,因此在git status看到时间戳未更改且未更改后git add检查第二次运行时的大小和哈希值。

您可以运行比较git diffgit diff -b的输出(忽略空白/行结束更改)以查看差异 - 至少在git add之前......

答案 1 :(得分:0)

如果我理解你的问题。

如果您要提交4个文件。那你就可以做到。

git commit -a

所有修改过的文件将立即提交,作为单个提交(One SHA)

答案 2 :(得分:0)

我现在意识到了一个事实,我应该在这里提一下。这对我来说似乎无关紧要。这个活动的大局是我正在将代码库从ClearCase迁移到Git。上周我迁移了完整的代码库,但本周我被告知,其中有四个已迁移的代码库文件未被我合并。所以这些文件是由第三人合并的。 我今天更新了我的代码库并执行了复制粘贴方法。 我没有退房就从机器上的VOB复制了文件。文件处于只读模式。

文件在我放入我的本地GIT存储库并运行git add之后仍然是只读的,然后在他的回复中引用了@twalberg,git add尝试转换行结尾但是因为文件被读取而无法执行只要。该命令终止,我猜这些文件在没有人的土地中谚语,因此git status不显示该怎么做。

我需要在Clearcase中签出这些文件,然后尝试复制粘贴。