Нажмите изменения в новую ветку - PullRequest
1 голос
/ 04 ноября 2019

Я все еще немного запутался в ветвях с помощью git.

Я закодировал все свои изменения в ветке local master, а затем понял, что хочу перенести эти изменения в новую ветку вместоremote master филиал. Итак, теперь я создал новую ветку с именем dev в своем удаленном репо на github и обновил список ветвей в IntelliJ. Это выглядит так:

git branches on intellij

Как мне обеспечить внесение изменений (что, я думаю, в настоящее время выполняется на local master, но я не сделалзафиксировал / выдвинул их) нажал на ветку remote dev?

Ответы [ 3 ]

1 голос
/ 07 ноября 2019

Я использовал интерфейс IntelliJ (с Ctrl+K) для git add нужных мне файлов и для установки сообщения для моего git commit. После коммита, который произошел в моей текущей ветке "local master", я просто использовал git push origin HEAD:dev и все заработало как положено.

0 голосов
/ 04 ноября 2019

Если вы не зафиксировали никаких файлов, они должны остаться прежними после того, как вы выполните checkout для только что созданной вами удаленной ветви (особенно, если эти две ветви идентичны). Это создаст вашу локальную ветку , где вы можете фиксировать столько, сколько хотите, но это будет только локально . Последние локальные коммиты / изменения будут отправляться в удаленную ветвь только тогда, когда вы выполните push.

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

0 голосов
/ 04 ноября 2019
git checkout dev
git add <the_changed_files_you_want_to_add>
git commit
git push origin dev

В идеальной ситуации приведенных выше команд должно быть достаточно.

git checkout dev может произойти сбой из-за конфликтов, которые могут привести к жалобе

error: Your local changes to the following files would be overwritten by checkout:
    ....
Please commit your changes or stash them before you switch branches.

Если это так, вы можете попробовать:

# commit the changes on "master"
git add <the_changed_files_you_want_to_add>
git commit

# if there are any changed files left
git stash
# if "git stash" is not run here, DON'T run "git stash pop" in the end

# create the local dev and apply the new commit
git checkout dev
git cherry-pick master

# if there are any conflicts, open and edit the conflicted files and resolve them and then
git add <conflicted_files>
git cherry-pick --continue

# push the local dev to the server
git push origin dev

# restore and clean the local master
git checkout master
# discard the commit whose changes you want to be on "dev"
git reset HEAD^ --hard
# only if "git stash" was run
git stash pop
...