繁体   English   中英

如何Git提交第二个空文件而不删除第一个非空文件?

[英]How to Git commit a second empty file and not delete the first non-empty file?

在Fedora版本20上使用Git版本1.9.3时,我反复遇到这样的问题:如果不让Git认为我删除了先前版本的非空foo文件,我将无法提交空的bar文件。 这两个文件恰好位于同一文件夹中。 我添加和提交空bar文件的命令如下所示:

ls
# bar foo

file bar foo
# bar: empty
# foo: ASCII text

git status --short -- .
# ?? bar

git add --intent-to-add --verbose bar
# add 'bar'

git diff --cached -- .
# diff --git c/bar i/bar
# new file mode 100644
# index 0000000..e69de29

git commit --message=bar
# [master 1234567] bar
1 file changed, 44 deletions(-)
delete mode 100644 foo

git status --short -- .
# AM bar
# A  foo

file bar foo
# bar: empty
# foo: ASCII text

您有我观察到的有关Git行为的解释吗? 有什么办法吗?

我误解了git add --intend-to-add -- bar单独添加一个空条目到索引。 Git允许我以这种状态提交索引,从而导致空提交,就像我已经写了git add --allow-empty 但是,空提交确实是我想要的。 我想要的对应于以下命令序列:

echo foo > bar
git add --intent-to-add -- bar
git add --patch -- bar
# Edit (e) the hunk to be staged and make it empty.
git commit --message 'add empty bar file.'
git log --oneline --name-status -1
# 1234567 add empty bar file
# A bar

我缺少的命令是git add --patch -- bar 没有它,将不会在最后打印A bar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM