git克隆后直接修改的文件
目前我遇到了版本库问题,尽管我的git-fu通常很好,但似乎无法解决此问题。git克隆后直接修改的文件
当我克隆这个存储库,然后cd到repo中,git-status显示已更改的几个文件。注意:我没有在任何编辑器或任何东西中打开回购。
我试着按照这个指南:http://help.github.com/dealing-with-lineendings/但这并没有帮助我的问题。
我试过git checkout -- .
很多次,但它似乎没有做任何事情。
任何帮助/意见将不胜感激
更新1:我在Mac上,并有在回购本身没有子模块。
更新2:文件系统是Mac上的“Journaled HFS +”文件系统,不区分大小写。这些文件是单行的,大约每个79K(是的,你听到的权利),所以看着git diff
是不是特别有用。我听说做git config --global core.trustctime false
这可能会有所帮助,当我回到计算机时,我会尝试回购它。
更新3:用事实改变了文件系统的细节!并且,我尝试了git config --global core.trustctime false
这个效果不好的技巧。
回答:
我明白了。所有其他开发人员都在Ubuntu上(我认为),因此具有区分大小写的文件系统。但是,我不(因为我在Mac上)。事实上,当我使用git ls-tree HEAD <path>
来看他们时,所有的文件都是小写的双胞胎。
我会让他们中的一个把它整理出来。
回答:
我假设你正在使用Windows。你链接的那个github页面有细节倒退。问题是,CRLF行结束一直致力于回购已经因为你有core.autocrlf设置为真正或输入,混帐要转换行结束到LF这样git status
显示每个文件被改变。
如果这是一个您只想访问但不涉及的回购,则可以运行以下命令来仅隐藏问题而不实际解决问题。
git config core.autocrlf false
如果是这样,你将积极参与,并且可以更改提交到一个回购协议。您可能希望通过提交更改repo中所有行结束的提交来解决问题,以使用LF而不是CRLF,然后采取措施防止将来再次发生此问题。
下面是直接从gitattributes man page,应该从一个干净的工作目录中执行。
echo "* text=auto" >>.gitattributes rm .git/index # Remove the index to force git to
git reset # re-scan the working directory
git status # Show files that will be normalized
git add -u
git add .gitattributes
git commit -m "Introduce end-of-line normalization"
如果不应该在git的状态进行归一化显示的任何文件,运行git add -u
之前未设置其文本属性。
manual.pdf -text
相反,git未检测到的文本文件可以手动启用规范化。
weirdchars.txt text
回答:
我在克隆回购软件后在Mac上遇到了同样的问题,它会假设所有文件都已更改。
运行后git config --global core.autocrlf input
它仍将所有文件标记为已更改。在寻找修复程序后,我在主目录中遇到了.gitattributes
文件,其中包含以下内容。
* text=auto
我评论它,从现在起任何其他克隆库工作正常。希望这可以帮助那里的任何人。
回答:
我有同样的问题。还有一台Mac。看着一台Linux机器,我注意到在回购我有两个文件:
geoip.dat和GeoIP.dat
删除了Linux机器上弃用之一,再次克隆库的MAC地址。当存在重复时,我无法从存储库的副本中提取,提交,存储或提取。
回答:
在Visual Studio中,如果您使用的是Git,则可以自动生成.gitignore和.gitattributes文件。自动生成的.getattributes文件具有以下行:
* text=auto
此行靠近文件顶部。我们只需要通过在其前面添加#来评论该行。这样做后,事情按预期运作。
回答:
我也有同样的问题。在我的情况下,我克隆了回购和一些文件立即失踪。
这是由文件的路径引起的,文件名对于Windows来说太长。为了解决这个问题,请尽可能地将回购点尽可能地克隆到hdd根目录,以减少文件路径的长度。将它克隆到C:\ A \ GitRepo而不是C:\ Users文档\ yyy \ Desktop \ GitRepo
回答:
我想添加一个更直接的“为什么”发生这种情况的答案,因为已经有一个很好的答案要解决这个问题。
因此,.gitattributes
有一个* text=auto
设置,这会导致此问题。
在我的情况GitHub的主分支上的文件有\r\n
结尾。我已拨打回购登录设置,以\n
结尾办理登机手续。我不知道git检查了什么。它应该检查与我的Linux机器上的本机结尾(\n
),但我想它检出了\r\n
结尾的文件。 Git抱怨,因为它看到已检出的\r\n
结尾在回购中,并警告我它将检查\n
设置。因此文件被“修改”。
这是我现在的理解。
回答:
也可以从不同的文件权限出现的问题,是我的情况:
新鲜克隆库(在Windows,Cygwin的):
$ git ls-tree HEAD 100755 blob 8099ea496a2c78d71125d79a05855f60ebf07904 testfile
↑↑↑
裸远程存储库(Linux的):
$ git ls-tree HEAD 100644 blob 8099ea496a2c78d71125d79a05855f60ebf07904 testfile
↑↑↑
回答:
请运行以下命令。这可能会解决这个问题。
# Remove everything from the index. git rm --cached -r .
# Write both the index and working directory from git's database.
git reset --hard
回答:
我将本地存储库复制到另一个文件夹,并显示了一堆修改后的文件。 我的解决方法是:我藏匿修改后的文件,并删除了藏匿。存储库变得干净。
回答:
git config core.fileMode false
在我的情况下,解决了这个问题
https://www.kernel.org/pub/software/scm/git/docs/v1.7.10.1/git-config.html
TL; DR;
core.fileMode
如果为false,索引和工作树之间的可执行位的差异被忽略;对破碎的文件系统如FAT很有用。请参阅git-update-index(1)。
默认值是正确的,除了GIT中克隆(1)或GIT-INIT(1)将探测并设置core.fileMode假如果合适的话在创建存储库时。
回答:
我发现的git是治疗我的文件(.PSD在这种情况下)为文本。将它设置为.gitattributes中的二进制类型解决了它。
称为*.psd binary
回答:
编辑文件:sudo gedit .git/config
sudo vim .git/config
[core] repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
[remote "origin"]
url = [email protected]:DigitalPlumbing/unicorn-magento.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "productapproval"]
remote = origin
merge = refs/heads/productapproval
变化FILEMODE =真到FILEMODE =假
以上是 git克隆后直接修改的文件 的全部内容, 来源链接: utcz.com/qa/267169.html