Переключитесь на другое ответвление, не изменяя файлы рабочей области

Я клонировал репозиторий мерзавца от GitHub, внес некоторые изменения и некоторые фиксации; я сделал довольно много, и все довольно грязны, таким образом, они не подходят для запроса получения по запросу. Теперь я создал ответвление cleanchanges от origin/master, таким образом, это чисто, и я хочу фиксировать свои изменения там как одну фиксацию с хорошим комментарием фиксации.

Когда я нахожусь на локальном ведущем устройстве, я хочу переключиться на мой cleanchanges но не изменяя файлы. И затем я могу фиксировать.

Как я могу переключить ответвления, не изменяя файлы?

Я хочу прояснить: у Меня есть все изменения, фиксировавшие в локальном master. Нет никаких незафиксированных изменений.

61
задан 28 May 2016 в 05:24

1 ответ

Почему не всего 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> после этого.

0
ответ дан 31 October 2019 в 15:58

Другие вопросы по тегам:

Похожие вопросы: