diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-04-16 19:28:10 +0900 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-04-16 19:28:10 +0900 |
| commit | 3feaacbaa15f6437a1767935a5ff04fdef0e86e3 (patch) | |
| tree | 5e0aee35a024e67148c29a351c7f5e57cae62a0a | |
| parent | e9bd21c3373278a9eabaf20cb60dbb6aa694e37e (diff) | |
| parent | a7256debd4b6ba9f6ccb94c0958ef48cdd8cb664 (diff) | |
| download | git-3feaacbaa15f6437a1767935a5ff04fdef0e86e3.tar.xz | |
Merge branch 'nd/checkout-m-doc-update'
Doc about the above.
* nd/checkout-m-doc-update:
checkout.txt: note about losing staged changes with --merge
| -rw-r--r-- | Documentation/git-checkout.txt | 2 | ||||
| -rw-r--r-- | builtin/checkout.c | 9 |
2 files changed, 11 insertions, 0 deletions
diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt index f179b43732..877e5f503a 100644 --- a/Documentation/git-checkout.txt +++ b/Documentation/git-checkout.txt @@ -242,6 +242,8 @@ should result in deletion of the path). + When checking out paths from the index, this option lets you recreate the conflicted merge in the specified paths. ++ +When switching branches with `--merge`, staged changes may be lost. --conflict=<style>:: The same as --merge option above, but changes the way the diff --git a/builtin/checkout.c b/builtin/checkout.c index 0e6037b296..f95e7975f7 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -726,6 +726,8 @@ static int merge_working_tree(const struct checkout_opts *opts, struct tree *result; struct tree *work; struct merge_options o; + struct strbuf sb = STRBUF_INIT; + if (!opts->merge) return 1; @@ -736,6 +738,13 @@ static int merge_working_tree(const struct checkout_opts *opts, if (!old_branch_info->commit) return 1; + if (repo_index_has_changes(the_repository, + get_commit_tree(old_branch_info->commit), + &sb)) + warning(_("staged changes in the following files may be lost: %s"), + sb.buf); + strbuf_release(&sb); + /* Do more real merge */ /* |
