Как зафиксировать мои текущие изменения в другой ветке в git [duplicate]

некоторое обходное решение для python 2.6, когда это поведение нежелательно

# python
Python 2.6.6 (r266:84292, Aug  9 2016, 06:11:56)
Type "help", "copyright", "credits" or "license" for more information.
>>> x=0
>>> a=list(x for x in xrange(9))
>>> x
0
>>> a=[x for x in xrange(9)]
>>> x
8
601
задан Auron 31 May 2010 в 15:26
поделиться

3 ответа

Другие ответы, предлагающие проверить другую ветку, а затем зафиксировать ее, работают только в том случае, если проверка возможна с учетом локальных изменений. Если нет, то вы наиболее часто используете git stash :

git stash
git checkout other-branch
git stash pop

Первый stash скрывает ваши изменения (в основном это временная фиксация), а последующие stash pop повторно применяет их. Это позволяет git использовать свои возможности слияния.

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

С другой стороны, если вы действительно напортачили, и в вашем рабочем дереве есть сочетание изменений для двух ветвей, а конфликты возникают только в тех, которые вы хотите зафиксировать обратно в исходной ветке, вы можете сэкономьте немного работы. Как обычно, есть много способов сделать это.Вот один из них, начиная с того момента, как вы открываете и видите конфликты:

# Unstage everything (warning: this leaves files with conflicts in your tree)
git reset
# Add the things you *do* want to commit here
git add -p     # or maybe git add -i
git commit
# The stash still exists; pop only throws it away if it applied cleanly
git checkout original-branch
git stash pop
# Add the changes meant for this branch
git add -p 
git commit
# And throw away the rest
git reset --hard

В качестве альтернативы, если вы заранее понимаете, что это произойдет, просто зафиксируйте то, что принадлежит текущей ветке. Вы всегда можете вернуться и исправить эту фиксацию:

git add -p
git commit
git stash
git checkout other-branch
git stash pop

И, конечно, помните, что все это потребовало некоторой работы, и избегайте этого в следующий раз, возможно, указав имя вашей текущей ветки в командной строке, добавив $ ( __git_ps1) на вашу PS1 в вашем bashrc. (См., Например, Git in Bash docs.)

953
ответ дан 22 November 2019 в 21:53
поделиться

Вы можете просто создать новую ветку и переключиться на нее. Затем зафиксируйте свои изменения:

git branch dirty
git checkout dirty
// And your commit follows ...

В качестве альтернативы вы также можете проверить существующую ветку (просто git checkout ). Но только, если нет коллизий (база всех редактируемых файлов такая же, как в вашей текущей ветке). В противном случае вы получите сообщение.

57
ответ дан 22 November 2019 в 21:53
поделиться
  1. git checkout my_other_branch
  2. git add my_file my_other_file
  3. git commit -m

И предоставьте сообщение о фиксации.

21
ответ дан 22 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

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