Я клонировал репозиторий мерзавца от GitHub, внес некоторые изменения и некоторые фиксации; я сделал довольно много, и все довольно грязны, таким образом, они не подходят для запроса получения по запросу. Теперь я создал ответвление cleanchanges
от origin/master
, таким образом, это чисто, и я хочу фиксировать свои изменения там как одну фиксацию с хорошим комментарием фиксации.
Когда я нахожусь на локальном ведущем устройстве, я хочу переключиться на мой cleanchanges
но не изменяя файлы. И затем я могу фиксировать.
Как я могу переключить ответвления, не изменяя файлы?
Я хочу прояснить: у Меня есть все изменения, фиксировавшие в локальном master
. Нет никаких незафиксированных изменений.
Почему не всего git reset --soft <branch_name>
?
Демонстрация:
mkdir myrepo; cd myrepo; git init
touch poem; git add poem; git commit -m 'add poem' # first commit
git branch original
echo bananas > poem; git commit -am 'change poem' # second commit
echo are tasty >> poem # unstaged change
git reset --soft original
Результат:
$ git diff --cached
diff --git a/poem b/poem
index e69de29..9baf85e 100644
--- a/poem
+++ b/poem
@@ -0,0 +1 @@
+bananas
$ git diff
diff --git a/poem b/poem
index 9baf85e..ac01489 100644
--- a/poem
+++ b/poem
@@ -1 +1,2 @@
bananas
+are tasty
Одна вещь отметить, хотя, состоит в том, что текущее ответвление изменяется на original
. You’re, все еще оставленный в предыдущем ответвлении после процесса, но, может легко git checkout original
, потому что it’s то же состояние. Если Вы не хотите терять предыдущее HEAD
, необходимо отметить ссылку фиксации и сделать git branch -f <previous_branch> <commit>
после этого.