2014-09-01 4 views
4

Вот сценарий, что произошло (я предполагаю, что это как появилась моя проблема, но не 100% уверен):Git/Github: Фиксировать заблудился

  • Кто послал PR, я объединить его, но потом я вернулся его, используя revert кнопки GitHub
  • Он другой PR с теми же коммитами (плюс один, чтобы исправить ошибку)
  • Я сливался (используя Github merge кнопку)
  • коммитов, который был возвращён в первый PR имел исчезновение красный от главного репо!

Почему это произошло? Как возможно, что теперь, из вилки, которая сделала PR, это говорит There isn't anything to compare, хотя эти фиксации не находятся на ветке оригинала удаленного репо.

И, наконец, как я могу восстановить эти коммиты?

EDIT: В соответствии с просьбой, вот интересный пар из моих git log:

* | | 25f28fb Merge branch 'FooUser-develop' into develop 
|\ \ \ 
| * \ \ 73768b7 Merge branch 'develop' of https://github.com/FooUser/mainRepo into FooUser-develop 
| |\ \ \ 
| | * | | 2e61235 Invert adresses 
* | | | | d522031 Merge branch 'develop' of https://github.com/mainUser/mainRepo into develop 
|\ \ \ \ \ 
| |////
|/| | | | 
| * | | | 1e6e61b Merge pull request #946 from mainUser/revert-945-develop 
| |\ \ \ \ 
| | * | | | 6767f03 (origin/revert-945-develop) Revert "Corrections" 
| |////
| * | | | 5ccc9cd Merge pull request #945 from FooUser/develop 
| |\ \ \ \ 
| | |/// 
| | * | | 6e0c08b Corrections structuration 
| | * | | f7ade9b Correction 
| | * | | 4844437 Nb to Str 
| | * | | 1729a83 Fix adress 
| | * | | ceab88d Corrections: @ssert 
| | * | | a3c8d1a #891 Fix 
| |/// 

я, видимо, потерял большую часть первых фиксаций (#891 Fix, например).

Searching немного больше, я обнаружил, например, что некоторые файлы я добавил в a3c8d1a(первая фиксация) были правильно объединены на 73768b7(второй в прошлое) - они не были просто beore, на d522031, из-за возврата - но затем исчез на 25f28fb(последний).

EDIT 2: Я думаю, проблема была в том, что вилка не была синхронизирована (он не собирался тянуть/сливаться, когда я принимал его PR, а затем возвращал его). Как я мог это предотвратить? (кстати «исправить» это я должен был Cherry Pick все коммиты не хватает ..)

+0

Можете ли вы предоставить нам 'GIT журнал --graph --oneline --decorate --all' из хранилища? –

+0

Есть много других коммитов, я попытаюсь немного их почистить! – Bonswouar

+1

Только 10 последних коммитов должно быть достаточно, чтобы лучше понять ситуацию. Просто добавьте '-10' в предыдущую команду. –

ответ

0

Если вы убираете слияния коммит, вы должны вернуться к Revert первым, прежде чем вы можете объединить ветку снова.

См: https://stackoverflow.com/a/1078209/1049112

Какие ссылки http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt

+0

Это то, чего я боялся. Поэтому, когда у вас есть публичное репо, вам действительно нужно быть осторожным, я думаю. Благодаря ! – Bonswouar

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