首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Git中提交之前修补所有更改过的文件

如何在Git中提交之前修补所有更改过的文件
EN

Stack Overflow用户
提问于 2012-10-25 16:31:30
回答 3查看 98关注 0票数 2

在提交更改的文件之前,我需要删除所有尾随的空格。问题是怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-25 21:16:25

我不认为有一个好的方法可以在提交时自动删除尾随的空格(如果可以的话,我也不认为这是一个好主意)。

我以前使用过一个钩子来拒绝添加尾随空格的提交,这对我来说效果很好;在.git/hooks/pre-commit中创建/添加以下内容并使其可执行:

代码语言:javascript
复制
# Work out what to diff against
if git rev-parse --verify HEAD >/dev/null 2>&1
then
    against=HEAD
else
    # Initial commit: diff against an empty tree object
    against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi

# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --
票数 1
EN

Stack Overflow用户

发布于 2012-10-25 16:43:05

默认情况下,Git会对尾随空格发出警告,并且可以配置为拒绝添加空格错误的提交。

删除空格只能通过更改文件并重做git-add阶段来实现--虽然可以在添加时自动执行此操作,但这会留下一个与暂存的文件不同的工作树,因此文件在git-status输出中仍将显示为“已更改但未更新”。

删除尾随空格的最简单方法是

代码语言:javascript
复制
sed -i -e 's/[:blank:]*$//' file.c ...
票数 0
EN

Stack Overflow用户

发布于 2012-10-26 14:56:20

最终,我决定为此编写gitadd命令。

代码语言:javascript
复制
#!/bin/bash


# Number of arguments passed
argc=$#


if [ $argc -eq 0  ]; then
        argv=( $(git diff --name-only HEAD) )
else
        argv=( $@ )
fi

for file in "$argv"; do

        sed -i -e 's/^[[:blank:]]\+$//' $file

        git add $file # stage patched file

done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13064617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档