команда git - фильтрация коммитов при нажатии - PullRequest
4 голосов
/ 14 июля 2011

Я сделал несколько коммитов, но пока не хочу, чтобы все коммиты были перенесены. Есть ли способ подтолкнуть только те коммиты, которые я хочу?

Спасибо

Ответы [ 2 ]

5 голосов
/ 14 июля 2011

У вас есть два варианта,

перебазироваться

Скажем, вы хотите включить 3 из пяти последних коммитов:

git rebase -i HEAD~5           # reorder the lines in the text editor, 
                               # leave the 'private' commits at the end
git push origin HEAD~2:master  # push all but the last two

вишня

Это временная ветвь и намного больше работы

git checkout -b temp HEAD~5
git cherrypick <hash1>
git cherrypick <hash2>
git cherrypick <hash3>
git push origin master

Рекомендации

  • Я рекомендую не использовать cherrypicking, поскольку он более подвержен ошибкам и легко делает идентичные коммиты «неидентичными»
  • используйте --cherry-pick или --cherry-mark options с git log, чтобы увидеть фактическую разницу между ссылками (git log --cherry-pick --oneline master...origin/master)
1 голос
/ 14 июля 2011

Эта команда может помочь:

$ git push origin <thelonghash>:master

Но если у вас есть коммиты A->B->C->D и вы делаете git push origin C:master, то коммиты A,B, и C будут переведены в исходное положение. Так что, если вам нужен только толчок C, вам нужно использовать git rebase -i для переставьте коммиты так, чтобы C был самым ранним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...