2014-09-19 3 views
1

Я уже внес несколько изменений в свою фиксацию и завершаю свою рабочую копию, после этого я тоже сделал git push.Объединить 2 разных фиксации

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

C1
README.md:
"This is the content of the first readme on README.md"

  1. git add README.md
  2. git commit -m 'initialize README.md'
  3. git push -u origin master
  4. СДЕЛАНО!

C2
после того, как я обновил свои файлы в:
The content is new on README.md

  1. как выше
  2. СДЕЛАНО!

C3 вдруг я сделал несколько изменений, как эти:
This is the content of the first readme on README.md add a few new lines add a few new lines

  1. git add README.md
  2. СДЕЛАНО!

Я не могу совершить фиксацию в этом состоянии, иначе я потеряю свои C2 изменения. В этом случае, я хочу git push моей C3 и прежде, чем я могу продолжить свою рабочую копию, я хочу объединить C2 и C3, но только «изменения». Таким образом, в данном случае, было бы, как эти:
The content is new on README.md add a few new lines add a few new lines

вопрос, почему я это сделал, потому что я забыл работать на add a few lines первых перед изменением «первой линии».

Я не думаю, что git revert будет делать магию. Большое спасибо за внимание! :)

EDIT: git cherry-pick также переписан локальные изменения T___T

ответ

1

Как насчет перебазироваться:

Шаг1: $git rebase -i HEAD^^^

Это приведет вас в редактор по умолчанию, где ваши последние два коммиты будут перечислены, замените их.

Во время переустановки ваш C3-commit станет вашим вторым фиксатором C2 ', а C2 станет C3'.

Так эффективно они будут ваши коммиты после разрешения конфликта во время перебазирования 2/2:

C1 README.md: This is the content of the first readme on README.md

C2' README.md: This is the content of the first readme on README.md add a few new lines add a few new lines

C3 ' README.md The content is new on README.md add a few new lines add a few new lines

Теперь вы должны заставить толчок ваш вверх по течению.

$git push -f -u origin master

ПРИМЕЧАНИЕ: Это будет перезаписывать ваши изменения, вы должны сказать другие, которые уже выбираются из вас сделать усилие притяжения или извлечения и слияния/перебазирования.

Надеюсь, это ответит на ваш вопрос!

+1

Или если вы не хотите переустанавливать .. (слишком много ppl выбрали ваши изменения), тогда вы можете сбросить ветку в C2, а на C3 сделать 'git merge C2-branch' –

+0

Спасибо за ваш совет :). Btw, эта ошибка возникает, когда я пробовал 'git rebase -i HEAD ^^^' "fatal: Необходима одна ревизия недействительная верхняя HEAD ^^^" – mochadwi

+1

Извините! Моя вина! Это должно быть 'git rebase -i HEAD ^^' Это связано с тем, что не может быть выполнено переполнение первой фиксации в репозитории. Его потребности по крайней мере одна фиксация для пересмотра. Именно по этой причине я создаю 0-ю коммит в каждом моем хранилище, это 0-я фиксация является пустой фиксацией. –

Смежные вопросы