我有我的文本编辑器在保存文件时自动修剪尾随空格,我正在为一个开源项目做出贡献,该项目在跟踪空白时存在严重问题.
每次我尝试提交补丁时,我必须首先忽略所有仅限空白的更改,以便仅选择相关信息.不仅如此,但是当我跑步时,git rebase我经常因为它们而遇到几个问题.
因此,我希望能够以类似的方式添加索引非空白更改git add -p,但不必自己选择所有更改.
有谁知道如何做到这一点?
编辑:我不能改变项目的工作方式,他们在邮件列表上讨论之后决定忽略这一点.
我在功能分支上工作,这些功能分支有很烦人的名字,所以当我需要从我的本地功能分支推送到功能分支时,我常常会抓住当前的分支名称,如下所示:
git branch | grep '*' | sed 's/* //' | xargs git push origin
Run Code Online (Sandbox Code Playgroud)
这很好用.我想把它变成别名,所以我在〜/ .gitconfig中做了这个:
[alias]
pushcur = branch | grep '*' | sed 's/* //' | xargs git push origin
Run Code Online (Sandbox Code Playgroud)
现在,当我运行时git pushcur,我收到以下错误:
usage: git branch [options] [-r | -a] [--merged | --no-merged]
Run Code Online (Sandbox Code Playgroud)
让我相信别名没有正确解析管道.我还有别的办法来实现所需的别名吗?
我正在处理的脚本需要从 git diff 中遍历每个文件。但是,我不知道如何处理文件名中的空格。任何有空格的文件都被分成“2 个文件”。我知道它们需要被包裹," "但我不知道如何在它进入@参数之前实现它。
当文件名中有空格时,我应该如何遍历文件
git diff --name-only $1
Run Code Online (Sandbox Code Playgroud)
?
这是一个重现错误的简单测试:
copyfiles()
{
echo "Copying added files"
for file in $@; do
new_file=$(echo ${file##*/})
directory=$(echo ${file%/*})
echo "Full Path is is $file"
echo "File is $new_file"
echo "Directory is $directory"
cp $file $COPY_TO
done
}
COPY_TO="testDir"
DIFF_FILES=$( git diff --name-only $1)
copyfiles $DIFF_FILES
Run Code Online (Sandbox Code Playgroud)
该脚本目前运行如下:
test.sh <git commit id>
Run Code Online (Sandbox Code Playgroud)