Внесение незафиксированных изменений в Master в новую ветку от Git - PullRequest
188 голосов
/ 29 августа 2009

Как вы можете поместить незафиксированные изменения в ветку TEST, когда я нахожусь в ветке master?

Ответы [ 4 ]

195 голосов
/ 17 декабря 2010

Также вы можете создать новую ветку и переключиться на нее, выполнив:

git checkout -b new_branch
git add .

Я использую это все время, потому что я всегда забываю начать новую ветку, прежде чем я начну редактировать код.

150 голосов
/ 29 августа 2009

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

Предположим, вы находитесь в главной ветке:

git checkout test
git add .
git add deletedFile1
git add deletedFile2
...
git commit -m "My Custom Message"

Я не совсем уверен насчет удаленных файлов, но я думаю, что они не включены, когда вы используете git add .

35 голосов
/ 13 ноября 2012

Почему бы просто не использовать git stash. Я думаю, что это более интуитивно, как копирование и вставка.

$ git branch
  develop
* master
  feature1
  TEST
$

У вас есть файлы в текущей ветке, которые вы хотите переместить.

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#      modified:   awesome.py
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   linez.py
#
$
$ git stash
Saved working directory and index state \
  "WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$

Перейти к другой ветке.

$ git checkout TEST

и применить

$ git stash apply
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   awesome.py
#      modified:   linez.py
#

Мне также нравится git stash, потому что я использую git flow, который жалуется, когда вы хотите закончить ветвь функции, сохраняя изменения в вашем рабочем каталоге.

Так же, как @Mike Bethany, это происходит со мной все время, потому что я работаю над новой проблемой, забывая, что я все еще в другой ветке. Таким образом, вы можете хранить свою работу, git flow feature finish... и git stash apply в новую git flow feature start ... ветку.

5 голосов
/ 29 августа 2009
git checkout TEST
git add file1 file2
git commit
...