Я пытаюсь перейти от одной локальной ветви к другой. Гит говорит мне, что я не могу этого сделать, потому что мой local changes to the following files would be overwritten by checkout
.В чем разница между git-stash и git-checkout?
Затем я получаю «рекомендацию» Please, commit your changes or stash them before you can switch branches
.
Я знаю, что мне не нужны изменения в указанном файле. Это нормально, чтобы перезаписать их. Итак, я стараюсь stash
. Я выполняю git stash file_name
. В результате я получаю:
Usage: git stash list [<options>]
or: git stash show [<stash>]
or: git stash drop [-q|--quiet] [<stash>]
or: git stash (pop | apply) [--index] [-q|--quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [<message>]]
or: git stash clear
ОК. Это не работает. Затем я попробую git checkout file_name
. Никаких жалоб от git. Затем я могу переключиться с одной ветви на другую. Итак, кажется, что я получил то, что мне было нужно (перейдите во вторую ветку без сохранения изменений в первую ветку).
Однако, я хотел бы спросить, почему stash
не работает, и как конечный результат будет отличаться в случае, если он сработал?
'stash' не работает, потому что вы использовали его неправильно. См. 'Git help stash'. Разница, которую вы просите, заключается в том, что если бы вы спрятали изменения, они были бы спрятаны, но теперь вы потеряли эти изменения. – Biffen
Что значит «сшить» изменения? Если изменения «спрятаны», то они как бы запомнены? Тогда в чем разница между «stash» и «add».Я запоминаю изменения (в ветке), если я «добавлю» эти изменения в промежуточную область. – Roman
'git help stash' объяснит это подробно. – geoffspear