相关疑难解决方法(0)

仅添加非空白更改

我有我的文本编辑器在保存文件时自动修剪尾随空格,我正在为一个开源项目做出贡献,该项目在跟踪空白时存在严重问题.

每次我尝试提交补丁时,我必须首先忽略所有仅限空白的更改,以便仅选择相关信息.不仅如此,但是当我跑步时,git rebase我经常因为它们而遇到几个问题.

因此,我希望能够以类似的方式添加索引非空白更改git add -p,但不必自己选择所有更改.

有谁知道如何做到这一点?

编辑:我不能改变项目的工作方式,他们在邮件列表上讨论之后决定忽略这一点.

git whitespace

325
推荐指数
6
解决办法
8万
查看次数

管道在git别名?

我在功能分支上工作,这些功能分支有很烦人的名字,所以当我需要从我的本地功能分支推送到功能分支时,我常常会抓住当前的分支名称,如下所示:

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)

让我相信别名没有正确解析管道.我还有别的办法来实现所需的别名吗?

unix git bash

40
推荐指数
2
解决办法
5340
查看次数

git diff --name-only 迭代结果时如何处理文件名中的空格

我正在处理的脚本需要从 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)

git bash spaces git-diff git-bash

5
推荐指数
3
解决办法
3442
查看次数

标签 统计

git ×3

bash ×2

git-bash ×1

git-diff ×1

spaces ×1

unix ×1

whitespace ×1