Подтвердить что ты не робот

Как зафиксировать изменения в новой ветке

Я только что внес изменения в ветку. Как я могу зафиксировать изменения в другой ветке?

Я пытаюсь использовать:

git checkout "the commmit to the changed branch" -b "the other branch"

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

Должен ли я использовать следующую команду вместо этого?

git merge "the other branch"
4b9b3361

Ответ 1

git checkout -b your-new-branch

git add <files>

git commit -m <message>

Сначала проверьте свою новую ветку. Затем добавьте все файлы, которые вы хотите зафиксировать. Наконец, скопируйте все файлы, которые вы только что добавили. После этого вы можете сделать git push origin your-new-branch, чтобы ваши изменения отображались на пульте дистанционного управления.

Ответ 2

Если вы не внесли изменения

Если ваши изменения совместимы с другой веткой

Это случай из вопроса, потому что OP хочет зафиксировать новую ветвь и также применяется, если ваши изменения совместимы с целевой ветвью, не вызывая перезаписи.

Как и в принятом ответе Джона Броди, вы можете просто проверить новую ветку и зафиксировать работу:

git checkout -b branch_name
git add <files>
git commit -m "message"

Если ваши изменения несовместимы с другой веткой

Если вы получили ошибку:

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

Затем вы можете спрятать свою работу, создать новую ветвь, затем добавить изменения в stash и разрешить конфликты:

git stash
git checkout -b branch_name
git stash pop

Это будет так, как если бы вы внесли эти изменения после создания новой ветки. Затем вы можете совершить как обычно:

git add <files>
git commit -m "message"

Если вы совершили изменения

Если вы хотите сохранить коммиты в оригинальной ветке

Посмотрите ответ карла Норума с подбором вишни, который в данном случае является правильным инструментом:

git checkout <target name>
git cherry-pick <original branch>

Если вы не хотите сохранять коммиты в исходной ветке

Смотрите ответ joeytwiddle на этом потенциальном дубликате. Выполните любое из указанных выше действий, а затем откатите исходную ветку:

git branch -f <original branch> <earlier commit id>

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

Ответ 3

Если я правильно понимаю, вы сделали фиксацию на changed_branch, и вы хотите скопировать эту фиксацию на other_branch? Легко:

git checkout other_branch
git cherry-pick changed_branch