mirror of
https://github.com/git/git
synced 2024-07-17 11:07:55 +00:00
git-rm: don't remove newly added file without -f
Given this set of commands: $ echo "newly added file" >new $ git add new $ git rm new the file "new" was previously removed from the working directory and the index. Because it was not in HEAD, it is available only by searching for unreachable objects. Instead, we now err on the safe side and refuse to remove a file which is not referenced by HEAD. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
c0ce981f5e
commit
e4d9516b21
18
builtin-rm.c
18
builtin-rm.c
|
@ -89,20 +89,10 @@ static int check_local_mod(unsigned char *head)
|
|||
if (ce_match_stat(ce, &st, 0))
|
||||
errs = error("'%s' has local modifications "
|
||||
"(hint: try -f)", ce->name);
|
||||
if (no_head)
|
||||
continue;
|
||||
/*
|
||||
* It is Ok to remove a newly added path, as long as
|
||||
* it is cache-clean.
|
||||
*/
|
||||
if (get_tree_entry(head, name, sha1, &mode))
|
||||
continue;
|
||||
/*
|
||||
* Otherwise make sure the version from the HEAD
|
||||
* matches the index.
|
||||
*/
|
||||
if (ce->ce_mode != create_ce_mode(mode) ||
|
||||
hashcmp(ce->sha1, sha1))
|
||||
if (no_head
|
||||
|| get_tree_entry(head, name, sha1, &mode)
|
||||
|| ce->ce_mode != create_ce_mode(mode)
|
||||
|| hashcmp(ce->sha1, sha1))
|
||||
errs = error("'%s' has changes staged in the index "
|
||||
"(hint: try -f)", name);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue