我在github.com上托管了我的Git存储库。我想将更新等推送到github.com,然后登录到我的Windows服务器并执行git pull以获取我的更改(已经过验证可以在我的本地计算机上运行。理想情况下我应该将另一台服务器设置为我的本地计算机设置与实时服务器不同。但我很便宜。)。
似乎每当我尝试在服务器上执行git pull时,文件似乎都会在上次拉动时以某种方式进行修改。所以我无法获得更新,因为git说我需要提交本地(Windows服务器)更改。
我怎样才能像我想的那样使用git?或者有更好的方法吗?
答案 0 :(得分:1)
是否有可能在克隆存储库后更改git core.autocrlf标志?
谷歌代码项目表单上的Issue 83 msysGit深入探讨了这一主题。
如果是这样的话,做一个新的克隆应该可以解决问题(只要没有触摸标记)。
答案 1 :(得分:1)
您使用的是Git GUI还是Git Bash?
出于某种原因,即使在尝试使用Git Bash在全局配置中设置core.autocrlf之后,Windows上的Git GUI也没有在克隆存储库时默认配置core.autocrlf(可能是GUI设置或环境问题,如果纠正,可以使GUI成为可行的选择。)
另外,出于某种原因,Git GUI在某些情况下似乎认为最好在新的repo中创建一个master分支,而不是使用克隆的repo中的现有分支。在Git GUI创建此主分支之后,它会在克隆之后立即检出此主分支。由于您正在使用pull并遇到问题,如果您最初使用Git GUI进行克隆,这可能只是问题。
最有可能的是,你是core.autocrlf设置。以下步骤应为您设置回购并确保正确的crlf设置......
在没有修改文件垃圾的情况下克隆的步骤:
在Windows文件夹中使用Git Bash中的以下命令将repo克隆为完整副本,而不进行分支的初始签出。
git clone -n --no-hardlinks
通过在克隆时不检出分支,您现在可以在签出分支之前验证.git / config文件是否具有autocrlf的正确设置。您可能希望添加safecrlf只是为了安全;)要更新这些设置crlf设置,请使用Git Bash从新克隆的Windows repo执行以下命令:
git config core.autocrlf true
git config core.safecrlf警告
要验证更改是否正确,请打开.git / config文件,您应该看到:
autocrlf = true
safecrlf = warn
请注意:您希望在您的Linux回购中输入autocrlf设置...设置为true适用于您的Windows回购。另外,我只使用warn on safecrlf,你可能想使用true。
设置了crlf配置后,最终可以使用git checkout检查分支。
如果新的本地Windows克隆中仍有修改过的文件,则可能是因为您的Linux存储库中有CRLF而不是LF。这可以通过对Linux repo中的文件使用十六进制编辑器进行验证,并搜索是否存在0D0A,或者是否一切都只是0A。