我们所有的开发人员都在windows机器上工作,构建是在linux上完成的。
为了符合真实的方式,我们决定规范化行结束符并遵循场景described on GitHub
后来看来,在从一个分支切换到另一个分支时,有时会将某些文件标记为已更改,而不会检测到任何内容更改。
然后我遇到了GitBook documentation在线结束和它的标准化。
所以我想知道这两种方法有什么区别?以下内容:

git rm --cached -r .
# Remove everything from the index.

git reset --hard
# Write both the index and working directory from git's database.

git add .
# Prepare to make a commit by staging all the files that will get normalized.
# This is your chance to inspect which files were never normalized. You should
# get lots of messages like: "warning: CRLF will be replaced by LF in file."

git commit -m "Normalize line endings"
# Commit


$ 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 status中提供不同的文件集。
何时将规范化文件推送到远程?
upd:下面是我在运行git命令和在分支之间切换时遇到的情况:
>git status
on develop, no changes

>git checkout -t origin/BRANCH-1 && git status
Branch BRANCH-1 set up to track remote branch GPIII-96 from origin.
Switched to a new branch 'BRANCH-1'
modified: A.java
modified: B.java
modified: C.java

>file A.java
A.java: ASCII text, with CRLF line terminators

>git rm --cached -r . && git reset --hard && git status
# On branch BRANCH-1
nothing to commit (working directory clean)

*WTF??*

>git checkout develop -f && git status
modified: D.java

*WTF???*

>git checkout BRANCH-1 -f && git status
modified: A.java
modified: B.java
modified: C.java

*WTF???*

最佳答案

我也有过同样的问题。我只能给你一个建议。
对我来说,管理我们的线路终端不是风投的工作。这是开发人员或ide的工作。因此,规范化一次行尾,然后将windows机器ide上的行尾切换到unix行尾,并再次高兴起来。这就解决了我们的问题。

关于git - 再次在git行尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22790758/

10-13 05:46