Mic*_*hal 3 windows git repository
我们是用户团队,在 Windows 上工作,我们的 Remote 在 Bitbucket (Linux/UNIX) 中,我们的应用程序正在部署到 Linux 机器上。我们没有注意行尾,直到有一天我们发现,我们笔记本电脑上的 .sh 脚本有 CRLF 行尾。我们决定将 core.autocrlf 设置为 false,因此 Remote 上的行尾与 Windows 笔记本电脑上的行尾没有区别。但是,此选项不会更改我们本地源代码中的 CRLF。
有什么办法,如何告诉 Git 更新所有文件,以便 CRLF 将更改为 LF 就像它在 Remote 上一样?某种重新下载,甚至会下载未更改的文件。
不,没有办法告诉git为您更改所有文件。Git 只是存储文件。但是您可以克隆您的存储库,在本地更新您的文件,然后将更改推回。
从 unix 样式的 shell 中,您可以使用常用的工具dos2unix来轻松转换。像这样的东西可能会飞:
git clone bitbucket:path/to/repo foo
cd foo
find . -type f -name \*.sh -exec dos2unix {} {} \;
git add .
git commit -m 'convert line endings on .sh files'
git push
Run Code Online (Sandbox Code Playgroud)
如果您找不到dos2unix,您可以使用许多其他工具复制该功能,这些工具的答案已在此处或通过您喜欢的搜索引擎现成可用。
如果您真正要问的是“如何刷新存储库的本地副本,覆盖不匹配的文件”,那么我相信以下方法可能有效:
git fetch --all
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)
或者,如果您在不同的分支上:
git reset --hard origin/branchname
Run Code Online (Sandbox Code Playgroud)
在git fetch重新下载远程最新的没有合并或重订(如果你是这将完成git pull)。
在git reset将重置主分支whataver只是牵强。该--hard选项更改工作树中的所有文件以匹配origin/master(或您指定的任何分支)中的文件。
注意:这会覆盖本地文件。确保隐藏任何本地更改,因为这将覆盖尚未推送的任何内容。不在回购文件将保持不变,但任何是在回购协议将被覆盖与任何被取出,和当地(unpushed)款将丢失。
| 归档时间: |
|
| 查看次数: |
9178 次 |
| 最近记录: |