2016-09-20 7 views
1

Я неправильно переместил репозиторий GitHub (A) в новый репозиторий Bitbucket (B), добавив все файлы с A на B, которые потеряли всю историю. Я сделал некоторую работу (несколько коммитов) на B и реализовал свою ошибку, так что теперь A содержит старую историю до определенной точки, а B содержит новую историю с этой точки. Как я могу объединить историю A с B, чтобы B содержал полную историю файлов?Добавить отсутствующую историю git

P.S .: Я предполагаю, что основная проблема будет заключаться в том, что первая фиксация на B отличается от того, как она будет находиться в точке, потому что без истории она содержит полный текст каждого файла.

Пример

Repository

Commit 1: Create new File X 
Commit 2: File X 
+ Hello World 
Commit 3: File X 
+ This is a test 

Repository B

Commit 1: Create new File X: 
+ Hello World 
+ This is a Test 
Commit 2 
+ This is a new line 

Я хочу, чтобы создать новый репозиторий C со следующей историей:

Commit 1: Create new File X 
Commit 2: File X 
+ Hello World 
Commit 3: File X 
+ This is a test 
Commit 4: 
+ This is a new line 
+1

Вы должны иметь возможность запускать 'git format-patch .. ' в репозитории B, а затем использовать 'git-am' для применения результирующей серии патчей к A. –

+1

В качестве альтернативы добавьте B в качестве пульта дистанционного управления для A, выборки, затем выберите вишню, кроме первой фиксации. (Оба подхода, предполагающие первое совершение в B, соответствуют состоянию последнего фиксации в A.) –

+0

@SvenMarnach format-patch и git работают отлично, спасибо! Вы можете сделать ответ из комментария? –

ответ

1
git init c 
cd c 
git remote add a ... 
git remote add b ... 
git branch -u a master 
git pull 
git checkout b/master -b new-master 
git rebase master 

Может также помочь первое падение первоначального добавления файла из новых-мастеров; или это может только сделать его более трудным, не уверенным сейчас.