Подтвердить что ты не робот

Git: как ветка я не совершаю раньше начала/хозяина

Я работаю на 100% с веткой, которую я сделал с главной ветвью. Теперь, когда коллега оттолкнулся к происхождению/мастеру, я попытался вставить эти изменения в свою личную ветку. Когда я делаю "git мастер проверки", за которым следует статус git, я получаю следующее:

# Your branch is ahead of 'origin/master' by 2 commits.

Как ветка я никогда не совершаю вперед в 2 коммиты? Каков наилучший способ узнать, что они совершают, и существенно отменить их? Я не хочу ничего нажимать на источник/мастер, поскольку это может вызвать неизвестные конфликты.

4b9b3361

Ответ 1

Чтобы увидеть фиксации, которые у вас есть в HEAD, которые не находятся в исходном состоянии/ведущем:

git log origin/master..

Сдуть их и сделать HEAD таким же, как оригинал/мастер:

git reset --hard origin/master

Как вы вносили изменения в свой собственный репозиторий? Я заметил, что вы упомянули "толчок"... Является ли происхождение центральным репо? Ваш коллега репо? Я подозреваю, что вы на самом деле хотели сделать, это повлечь за собой изменения ваших коллег, прямо или из центральной промежуточной точки, а не подталкивать. Это может быть просто то, что 2 изменения, которые у вас есть впереди оригинала/мастера, на самом деле являются вашими коллегами, но ветка отслеживания origin/master устарела.

Ответ 2

Вы работаете над ветвью мастера, и вы сделали две коммиты, которые не находятся в origin/master.

В сообщении # Your branch is ahead of 'origin/master' by 2 commits. говорится:

# Your branch 'mybranch' has two commits not in 'origin/master'

Воображая git пользователей SVN-подобных номеров ревизий, вы ответили 1, 2, 3, 4, 5, но origin/master только 1, 2, 3. Таким образом, история изменений выглядит примерно так: после дрянной диаграммы ASCII..

your branch                                   -- [commit 4]--[commit 5]
                                             /                    /\ HEAD
master --[commit 1]--[commit 2]--[commit 3]-/
                                       /\ origin/master

Чтобы отобразить последние две записи в журнале, вы можете сделать.

git log HEAD..HEAD~2

Ответ 3

Проделали ли вы какой-либо git rebase 'на ветке, над которой работаете?

Если вы не можете попробовать копировать свою ветку (git checkout -b testrebase) и выдать git rebase master, чтобы увидеть, работает ли это. Это приведет к распутыванию всех коммитов, которые вы сделали по отношению к мастеру, а затем попытайтесь применить их обратно (делает историю имеет смысл, в основном). Если он не работает, просто удалите testrebase.

Ответ 4

Возможно, вам потребуется убедиться, что ваш источник/мастер обновлен с вашей версией репо мастера. Попробуйте запустить:

git fetch origin master

так что ваше местное происхождение/мастер такое же, как и мастер репо. Затем, когда вы запустите

git pull origin master

вы должны получить точное отображение того, сколько коммитов впереди вашего локального мастера. После этого вы можете запустить команду araqnid, чтобы увидеть, какие фиксации на самом деле различны.