Мой старый git не появляется в BitBucket, переписан кем-то другим - PullRequest
0 голосов
/ 27 марта 2019

Я работаю над проектом с другим человеком, использующим git (в BitBucket)

У меня изначально были мои коммиты:

my_commit_4
my_commit_3
my_commit_2
my_commit_1

Теперь я пошел проверять BitBucket неделю спустя, и он показывает:

his_commit_4
his_commit_3
his_commit_2
his_commit_1

his_commit_1 охватывает все коммиты my_commit_x, а также некоторые его собственные дополнения.

Я попытался посмотреть на reflog, и у меня все еще есть свои коммиты локально. Я не могу вытащить из origin master, потому что я получаю следующую ошибку:

From https://bitbucket.org/myaccount/myapp
 * branch            master     -> FETCH_HEAD
 + 1145d3e...fa3d2de master     -> origin/master  (forced update)
fatal: refusing to merge unrelated histories

Что именно произошло?

Есть ли способ заставить мои исходные коммиты снова показываться в BitBucket?

1 Ответ

2 голосов
/ 27 марта 2019

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

Вы можете удалить его фиксирует и заменяет их вашими, сиськи.Вероятно, это не очень хорошая стратегия, но это вариант, если у вас есть разрешение на использование git push --force (именно это он должен был использовать для удаления ваших коммитов и замены их своими). ​​

Вы можете объединитьнесмотря на несвязанные истории.Это может быть легко или сложно.Чтобы объединиться, несмотря на несвязанные истории, используйте git merge --allow-unrelated-histories.Git, по сути, добавит фальшивый коммит перед всеми своими коммитами и перед всеми вашими коммитами, к которым подключаются все его и все ваши.Этот фальшивый коммит совершенно пустой.Поэтому все файлы в его последнем коммите новые, созданные полностью им;все файлы в вашем последнем коммите новые, созданные полностью вами;и Git объединит эти файлы, взяв те файлы, которые являются уникальными для его коммита, и любые файлы, уникальные для вашего коммита, и объявив конфликт слияния для всех оставшихся файлов с одинаковым именем в обоих коммитах.Вам придется объединить каждый из этих файлов вручную.

Конечно, он может затем снова использовать git push --force, чтобы отменить всю вашу работу.Вы, вероятно, должны убедиться, что он этого не сделает.

В конечном счете, способ решить эту проблему - поговорить с ним и выяснить, почему он отказывается от ваших коммитов.Это, вероятно, непреднамеренное, но если это преднамеренное, не существует технического решения: это политическая проблема.

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