为新的未跟踪文件生成git diff

时间:2015-04-18 15:36:36

标签: git

我常常发现我想在git树中共享工作状态而不使用git diff和pastebins,email等进行提交/分支。当所有更改都对已经跟踪的文件进行修改时,这种方法很有效,但是当涉及新文件时却没有。我可以使用git add -N添加一个空的跟踪文件来进行区分,但是如果我要在有问题的更改之前提交其他内容(或者如果有问题的更改只是垃圾我),则会出现问题想要扔掉)。是否有一种简单的方法来获取差异以添加git diff中包含的新文件而不更改其在存储库中的状态?到目前为止,我所拥有的是一个难看的剧本:

for i in "$@" ; do diff -u /dev/null "$i" | sed -e 's@^+++ @+++ b/@ ; done

这是最好的方式吗?

我并不完全反对改变git状态的替代解决方案,只要它在更改之前很容易返回到完全状态(例如,修改了各种文件,某些更改已暂停,等等。)

1 个答案:

答案 0 :(得分:0)

您可以将未跟踪,修改或删除的文件导出到.tar.gz这样的存档,并将其发送给您的同事。您可以尝试以下方法:

  • 导出修改,移动和删除的文件

    tar zvcf ~/new-files-cache.tar.gz `git diff --name-only --diff-filter=ACMRT`

  • 导出未跟踪(新),已修改和已删除的文件

    tar zvcf ~/new-files-cache.tar.gz ` git status --short | sed 's/^ *[^ ]* \(.*\)/\1/g' `

我在这里找到了解决方案:https://cmanios.wordpress.com/2014/04/12/export-untracked-modified-moved-and-deleted-files-from-a-git-repository-to-archive/