我常常发现我想在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状态的替代解决方案,只要它在更改之前很容易返回到完全状态(例如,修改了各种文件,某些更改已暂停,等等。)
答案 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' `