У меня есть следующая ситуация в моем репозитории GIT. Кто-то забыл сделать попытку хозяина, прежде чем совершать его изменения, а затем совершил свой собственный мастер. После этого он почему-то объединил источник/мастер в своего местного хозяина, а затем толкнул его. В результате, происхождение/мастер вроде бы «переключилось» на то, что было его местным мастером. Имею ли я смысл? Вот пример:Исправление истории в репозитории GIT
ПЕРЕД PUSH
x----x-----x----x----x----x----x-----x----x (MASTER)
ПОСЛЕ PUSH
---------------------------------------------x---x (MASTER)
| |
x----x-----x----x----x----x----x-----x----x-------
Это своего рода перепутались в хранилище, так как все уже история, кажется, был на ветке.
После этого появились новые коммиты, которые были перенесены на нового хозяина, а затем по той причине, которая не имеет значения прямо сейчас, мы решили, что мы этого не хотим, поэтому нам удалось сбросить коммиты, и в то же время восстановить MASTER на свое старое место. Как это:
ПЕРЕД
---------------------------------------------x---x---x---x---x (MASTER)
| |
x----x-----x----x----x----x----x-----x----x-------
ПОСЛЕ
(2)
---------------------------------------------x---x---x---x---x--
| | |
x----x-----x----x----x----x----x-----x----x-----x----------------x (MASTER)
(1) (3)
Как вы можете видеть, теперь, совершить который был Dónde на парня, который забыл ту тянуть были объединены в то, что первоначально был мастером , Это было достигнуто, как это:
git checkout <HASH OF COMMIT MARKED AS (1) >
git checkout -b refactor_master
git merge --no-ff <HASH OF COMMIT MARKED AS (2) >
git push origin refactor_master
git merge --strategy=ours mastergit checkout master
git merge refactor_master
git push origin master
Это efectively внесли изменения, заложенные эти фиксации исчезает от мастера, а также обратился хозяин к тому, что было раньше. Однако у меня теперь есть «ветвь», которой не должно было существовать. Фактически последнее коммит, помеченное как (3), не вносит никаких изменений. Он только «переключает» мастеров. Есть ли способ заставить эти коммиты исчезнуть?
Я не уверен, полностью ли я слежу за тем, что вы говорите, но я сделаю этот комментарий: у Git нет понятия «какая ветвь» произошла передача. На втором графике она могла быть обработана большей частью x в первой строке и 2 x на второй строке; он представляет один и тот же граф фиксации таким образом. – Nayuki
Почему бы просто не вернуть мастера к последнему фиксации до того, как все плохие вещи произошли? –
Что это значит, что «вся история теперь, похоже, была на ветке»? Где еще будет? Как мастер-ветвь может оказаться не в том месте? Имеет ли филиал физическое местоположение? –