Git 从 Win10 提交和 Ubuntu WSL - 如何处理文件执行模式更改?
Git commit from Win10 and Ubuntu WSL - How to handle file execute mode change?
我正在 Ubuntu WSL 和 Windows 10 中开发一个项目。我希望能够通过 sublime/ 编辑 windows 10 文件系统中的文件...并在 Ubuntu WSL 中通过 VScode/...并将更改推送到远程。执行此操作时我注意到 2 个问题:
- 当我在 Ubuntu WSL 上通过 VSCode 编辑时,文件模式更改为 755,当我在 windows 上编辑时,文件模式更改为 644。因此,每次提交有数以千计的更改 - 仅针对文件可执行位更改。
我应该怎么做才能在 windows 文件系统和 WSL 文件系统之间编辑和推送更改保持相同的模式?
现在,每次通过 windows 进行更改时,我都在尝试使用以下命令。
git add . --chmod=+x
(来源:How to create file execute mode permissions in Git on Windows?)
有没有更好的方法来处理这种情况?
- 有时,git diff 显示整个文件被删除(即所有行)并再次添加所有行。类似于:
- print('hello')
+ print('hello')
我不确定为什么会这样。
我还在学习 Git 并且想知道我所做的是否正确,或者是否有更好的方法来处理从不同文件系统编辑相同的 repo。
如果您将存储库存储在 Windows 文件系统上,那么它不会保留 Unix 可执行位,您需要依赖 --chmod
标志来设置这些位相应的许可。如果您仅将其存储在 Linux 文件系统上并在 Windows 下使用 \$wsl
路径表示法,那么如果 (a) 您坚持使用 Linux,则权限将被保留] Git 二进制和 (b) 您的编辑器覆盖现有文件,而不是写入到一边并重命名旧文件。
您看到所有行都被修改的原因是因为您的一位编辑(可能是 Windows 一位)正在编写 Windows 行结尾 (CRLF) 而另一位正在编写 Unix行结尾 (LF)。如果您在存储库中创建一个名为 .gitattributes
的文件,其中包含行 * text=auto
,那么这将导致存储库中的所有文本文件在提交时都以 LF 行结尾进行规范化,这通常是你想要什么。
我正在 Ubuntu WSL 和 Windows 10 中开发一个项目。我希望能够通过 sublime/ 编辑 windows 10 文件系统中的文件...并在 Ubuntu WSL 中通过 VScode/...并将更改推送到远程。执行此操作时我注意到 2 个问题:
- 当我在 Ubuntu WSL 上通过 VSCode 编辑时,文件模式更改为 755,当我在 windows 上编辑时,文件模式更改为 644。因此,每次提交有数以千计的更改 - 仅针对文件可执行位更改。
我应该怎么做才能在 windows 文件系统和 WSL 文件系统之间编辑和推送更改保持相同的模式?
现在,每次通过 windows 进行更改时,我都在尝试使用以下命令。
git add . --chmod=+x
(来源:How to create file execute mode permissions in Git on Windows?) 有没有更好的方法来处理这种情况?
- 有时,git diff 显示整个文件被删除(即所有行)并再次添加所有行。类似于:
- print('hello')
+ print('hello')
我不确定为什么会这样。
我还在学习 Git 并且想知道我所做的是否正确,或者是否有更好的方法来处理从不同文件系统编辑相同的 repo。
如果您将存储库存储在 Windows 文件系统上,那么它不会保留 Unix 可执行位,您需要依赖 --chmod
标志来设置这些位相应的许可。如果您仅将其存储在 Linux 文件系统上并在 Windows 下使用 \$wsl
路径表示法,那么如果 (a) 您坚持使用 Linux,则权限将被保留] Git 二进制和 (b) 您的编辑器覆盖现有文件,而不是写入到一边并重命名旧文件。
您看到所有行都被修改的原因是因为您的一位编辑(可能是 Windows 一位)正在编写 Windows 行结尾 (CRLF) 而另一位正在编写 Unix行结尾 (LF)。如果您在存储库中创建一个名为 .gitattributes
的文件,其中包含行 * text=auto
,那么这将导致存储库中的所有文本文件在提交时都以 LF 行结尾进行规范化,这通常是你想要什么。