我在python程序中使用制表符进行缩进,但是我想与使用空格的人进行协作(使用git)。
git是否有办法在推入/提取时自动在空格和制表符之间进行转换(例如4个空格= 1个制表符)?(类似于CR / LF转换)
我在python程序中使用制表符进行缩进,但是我想与使用空格的人进行协作(使用git)。
git是否有办法在推入/提取时自动在空格和制表符之间进行转换(例如4个空格= 1个制表符)?(类似于CR / LF转换)
Answers:
这是完整的解决方案:
在您的存储库中,添加一个文件.git/info/attributes
,其中包含:
*.py filter=tabspace
Linux / Unix
现在运行命令:
git config --global filter.tabspace.smudge 'unexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'expand --tabs=4 --initial'
OS X
首先在brew中安装coreutils:
brew install coreutils
现在运行命令:
git config --global filter.tabspace.smudge 'gunexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'gexpand --tabs=4 --initial'
所有系统
现在,您可以签出项目的所有文件。您可以执行以下操作:
git checkout HEAD -- **
并且所有的python文件现在都将带有制表符而不是空格。
编辑:更改了强制结帐命令。当然,您应该首先提交您的工作。
homebrew
,然后运行brew install coreutils
)。
是的,一种可能的解决方案是使用git属性过滤器驱动程序(另请参见GitPro书),以定义污迹/清除机制。
那样:
您可以tabspace
在.git/info/attributes
(适用于Git存储库中所有文件的过滤器)中声明此过滤器驱动程序(在此处命名为' '),其内容如下:
*.py filter=tabspace
现在运行命令:
# local config for the current repo
git config filter.tabspace.smudge 'script_to_make_tabs'
git config filter.tabspace.clean 'script_to_make_spaces'
请参阅奥利维尔(Olivier)的答案,以获取此类污迹/清洁指令集的具体工作示例。
--global
标志,因为这意味着您要向每个协作项目发送空间...
.gitattributes
。但是,是的,更容易理解配置是否在本地存储库中。我已经编辑了答案。
~/.gitconfig
[filter "tabspace"]
smudge = unexpand --tabs=4 --first-only
clean = expand --tabs=4 --initial
[filter "tabspace2"]
smudge = unexpand --tabs=2 --first-only
clean = expand --tabs=2 --initial
然后我有两个文件:
attributes
*.js filter=tabspace
*.html filter=tabspace
*.css filter=tabspace
*.json filter=tabspace
和 attributes2
*.js filter=tabspace2
*.html filter=tabspace2
*.css filter=tabspace2
*.json filter=tabspace2
mkdir project
cd project
git init
cp ~/path/to/attributes .git/info/
这样,当您最终在github上进行工作时,它在代码视图中看起来并不傻,8 space tabs
这在所有浏览器中都是默认行为。
mkdir project
cd project
git init
cp ~/path/to/attributes2 .git/info/attributes
git remote add origin git@github.com:some/repo.git
git pull origin branch
这样,您就可以使用2 space indented
项目上的常规选项卡。
当然4 space to 2 space
,如果您想为我发布的项目做贡献,并且在开发过程中倾向于使用2个空格,那么您可以编写类似的解决方案以进行转换。
.gitattributes
在回购中使用(并提交)文件
如果您在Windows上,则还有一些额外的步骤可以使@Olivier Verdier的解决方案正常工作。