Як можна узгодити відокремлену ГОЛОВУ з головним / походженням?


1558

Я новачок у складності розгалуження Git. Я завжди працюю над однією гілкою і здійснюю зміни, а потім періодично піднімаюсь до свого віддаленого походження.

Десь недавно я здійснив скидання деяких файлів, щоб позбутися їх постановки, а пізніше зробив rebase -iдля позбавлення пари останніх місцевих комітетів. Зараз я перебуваю у стані, якого я не зовсім розумію.

У моїй робочій зоні git logпоказано саме те, чого я очікував - я на правильному поїзді з зобов'язаннями, яких я не хотів, і новими там і т.д.

Але я просто натиснув у віддалене сховище, і що там різного - пару комітетів, які я вбив у ребасті, підштовхнули, а нових, скоєних локально, там немає.

Я думаю, що "master / origin" відмежований від HEAD, але мені не на 100% зрозуміло, що це означає, як візуалізувати це за допомогою інструментів командного рядка та як це виправити.


Чи натиснули ви комітети до ребайна?
manojlds

@manojlds: Не впевнений, що ти маєш на увазі. Я просунув деякий час до ребазування, але не відразу до цього.
Ben Zotto

Як і раніше, ви раніше натискали комітети, які ви видалили в ребазі -i .. З вашої відповіді я думаю, що ні.
manojlds

@manojlds: Правильно. Я лише вбивство, яке було останнім часом, ніж останній натиск. (Хоча, як я вже згадував, я з тих пір штовхнув, так як я вважав, що все в порядку)
Ben Zotto

Чи можете ви пояснити, що ви робили I did a reset of some files to get them out of commit stagingчастково? вибачте за питання :)
manojlds

Відповіді:


2521

Спочатку давайте уточнимо, що таке HEAD і що це означає, коли воно від'єднується.

HEAD - символічна назва для поточно перевірених комірок. Якщо HEAD не відокремлений ("нормальна" 1 ситуація: у вас є філія перевірена), HEAD насправді вказує на "ref" гілки, а гілка вказує на фіксацію. Таким чином, HEAD "прикріплений" до гілки. Коли ви робите нове зобов’язання, гілка, на яку вказує HEAD, оновлюється, щоб вказувати на нову комісію. HEAD слід автоматично, оскільки він просто вказує на гілку.

  • git symbolic-ref HEADврожайність refs/heads/master
    Відділення з назвою «майстер» перевірено.
  • git rev-parse refs/heads/masterурожай, 17a02998078923f2d62811326d130de991d1a95a
    який виконує, є поточним наконечником або "головою" головного відділення.
  • git rev-parse HEADтакож дає результат. 17a02998078923f2d62811326d130de991d1a95a
    Це те, що означає бути "символічною рефлексією". Він вказує на об’єкт через якусь іншу посилання.
    (Спочатку символічні рефлекси спочатку реалізовувалися як символьні посилання, але згодом були змінені на звичайні файли з додатковою інтерпретацією, щоб їх можна було використовувати на платформах, що не мають посилань.)

У нас є HEADrefs/heads/master17a02998078923f2d62811326d130de991d1a95a

Коли HEAD відокремлюється, він вказує безпосередньо на фіксування, а не опосередковано вказує на один через гілку. Ви можете подумати про відокремлену ГОЛОВУ як про неназвану гілку.

  • git symbolic-ref HEAD не вдається з fatal: ref HEAD is not a symbolic ref
  • git rev-parse HEADурожаї 17a02998078923f2d62811326d130de991d1a95a
    Оскільки це не символічний перелік, він повинен вказувати безпосередньо на себе.

У нас HEAD17a02998078923f2d62811326d130de991d1a95a

Важливо пам’ятати з відокремленою ГОЛОВОЮ, що якщо комісія, на яку вона вказує, інакше не буде відновлена ​​(жодна інша відповідь не може її досягти), вона стане «звисаючою», коли ви перевірите якусь іншу комісію. Врешті-решт, такі звисаючі домовленості будуть обрізані через процес вивезення сміття (за замовчуванням вони зберігаються щонайменше 2 тижні і можуть зберігатися довше, якщо на них посилається рефлог HEAD).

1 Цілком чудово виконувати «звичайну» роботу з відокремленою ГОЛОВОЮ, вам просто потрібно слідкувати за тим, що ви робите, щоб уникнути необхідності виловлювати історію з рефлогу.


Проміжні етапи інтерактивної бази даних виконуються з відокремленою HEAD (частково, щоб уникнути забруднення рефлогу активної гілки). Якщо ви закінчите повну операцію ребаші, вона оновить вашу початкову гілку з сукупним результатом операції ребасті та повторно приєднає HEAD до початкової гілки. Я здогадуюсь, що ви ніколи повністю не завершили процес відновлення; це дозволить залишити вас відокремленою HEAD, яка вказує на комітет, який останнім часом був оброблений операцією ребайна.

Щоб відновитись із своєї ситуації, вам слід створити гілку, яка вказує на зобов’язання, на яке зараз вказує ваш відокремлений HEAD:

git branch temp
git checkout temp

(ці дві команди можна скоротити як git checkout -b temp)

Це приєднає вашу голову до нової tempгілки.

Далі слід порівняти поточну комісію (та її історію) із звичайною гілкою, над якою ви очікували працювати:

git log --graph --decorate --pretty=oneline --abbrev-commit master origin/master temp
git diff master temp
git diff origin/master temp

(Ви, ймовірно, захочете поекспериментувати з параметрами журналу: додайте -p, залиште, --pretty=…щоб переглянути все повідомлення журналу тощо)

Якщо ваша нова tempгілка виглядає добре, ви можете оновити (наприклад), masterщоб вказати на неї:

git branch -f master temp
git checkout master

(ці дві команди можна скоротити як git checkout -B master temp)

Потім можна видалити тимчасову гілку:

git branch -d temp

Нарешті, ви, ймовірно, захочете просунути відновлену історію:

git push origin master

Вам може знадобитися додати --forceдо кінця цієї команди, щоб натиснути, якщо віддалену гілку неможливо "перемотати" до нової комісії (тобто ви скинули або переписали якусь діючу комісію або іншим чином переписали деякий біт історії).

Якщо ви були в середині операції з ребайнами, ви, ймовірно, повинні її очистити. Ви можете перевірити, чи працювала база даних, шукаючи каталог .git/rebase-merge/. Ви можете вручну очистити незавершене базу даних, просто видаливши цей каталог (наприклад, якщо ви більше не пам’ятаєте мету та контекст активної операції ребасті). Зазвичай ви користуєтесь цим git rebase --abort, але це робить додаткове скидання, якого ви, мабуть, хочете уникнути (він переміщує HEAD назад до початкової гілки та скидає його назад до оригінальної фіксації, що скасує частину роботи, яку ми зробили вище).


6
Цікаво з man git-symbolic-ref: "Раніше .git/HEADсимволічне посилання вказувало на це refs/heads/master. Коли ми хотіли перейти на іншу гілку, ми це зробили ln -sf refs/heads/newbranch .git/HEAD, і коли ми хотіли дізнатися, на якій гілці ми знаходимось, ми це зробили readlink .git/HEAD. Але символічні посилання не є повністю портативними. , тож вони тепер застарілі, а символьні відхилення (як описано вище) використовуються за замовчуванням. "
Дмитро Міньковський

10
Я погоджуюся з @AntonioSesto: для більшості проектів (навіть досить великих) вам не потрібна приголомшлива складність, яка є Git. Мій мозок бунтується, бореться з чимось, що так чітко перероблено. Мені це не потрібно, і я цього не хочу.
Джаспер Спренгерс

36
Це хороша відповідь, але я вважаю, що немає необхідності в тимчасовій гілці (хоча я зазвичай використовую одне своє). git branch -f master HEAD && git checkout masterдостатньо - якщо припустити, що ваша мета - утримати поточну голову, але призначити її такою master. Інші цілі також мають сенс і закликайте до інших рецептів.
Адріан Ратнапала

38
Лол у коментарі, що гарчить про довжину. Тоді як решта з нас просто переглянемо, поки ми не дійдемо до рядка, який говорить "Оговтатися від вашої ситуації [...]", і підемо звідти, роблячи думки про те, що є корисна добре пояснена історія, яку ми можемо прочитати в дощовий день. Варіант , щоб читати більше тебе не боляче, але це дійсно отримають користь інших.
підкреслюй_d

5
Цьому тому я ненавиджу git.
Моніка Геднек

626

Просто зробіть це:

git checkout master

Або якщо у вас є зміни, які ви хочете зберегти, зробіть це:

git checkout -b temp
git checkout -B master temp

57
Це небезпечна реакція. Люди, які приходять до цієї відповіді, мають різні стани, і відповіді "просто зробіть це, щоб виправити це" не відповідають на запитання. Цей легко може знищити роботу.
Архонічний

15
! "git checkout master" призведе до втрати всіх змін, якщо від'єднана голова не входить до складу головного !!
Тоні

3
@Blauhirn Ви, мабуть, перевірили комісію, а не філію. Гілка все ще вказує на ту саму комісію, але ви перебуваєте в іншому "режимі".
Даніель Алексюк

1
git resetслід поставитись з попередженням "Якщо ви не маєте поняття, що ви робите, припиніть це". Щойно оговтався від години терору, думаючи, що втратив останній тиждень роботи. Дякую!
Opus1217

1
Погодьтеся з @Archonic Важливо зрозуміти, як працює git, перш ніж сліпо виконувати будь-які команди. Ви можете заощадити час, не прочитавши великої відповіді, але можете втратити більше часу, якщо ваша робота втрачена.
Yusufali2205

132

Я зіткнувся з цим питанням і, коли прочитав вгорі проголосовану відповідь:

HEAD - символічна назва для поточно перевірених комірок.

Я подумав: А-а! Якщо HEADсимволічне ім'я для комісії з оформлення замовлення на товар, я можу погодити його master, відкинувши його проти master:

git rebase HEAD master

Ця команда:

  1. перевіряє master
  2. ідентифікує батьківські зобов'язання HEADназад до точки, HEADвідхиленої відmaster
  3. відтворює ці коміти на вершині master

Кінцевим результатом є те, що всі комісії, які були, HEADале не masterбули, тоді також є master. masterзалишається перевіреним.


Щодо дистанційного:

декілька комітетів, які я вбив у базі даних, підштовхнулися, а нових, скоєних на місцях, немає.

Віддалену історію більше не можна пересуватись за допомогою локальної історії. Вам потрібно буде примусити натиснути ( git push -f), щоб перезаписати віддалену історію. Якщо у вас є співробітники, зазвичай має сенс узгодити це з ними, щоб усі знаходилися на одній сторінці.

Після натискання masterна віддалене originвідділення віддаленого відстеження origin/masterбуде оновлено, щоб вказати на те саме, що і master.


3
git: "По-перше, перемотування голови для того, щоб повторити свою роботу поверх цього ... Швидкий перехід майстра до HEAD." мені: "приємно!"
Бенджамін

81

Тут шукайте основні пояснення відірваної голови:

http://git-scm.com/docs/git-checkout

Командний рядок для візуалізації:

git branch

або

git branch -a

ви отримаєте вихід, як показано нижче:

* (no branch)
master
branch1

У * (no branch)шоу ви в окремих голові.

Ви могли б прийти до цього стану, роблячи git checkout somecommitтощо, і це попередило б вас про таке:

Ви перебуваєте в стані "відокремленої ГЛАВИ". Ви можете озирнутися, внести експериментальні зміни та здійснити їх, а також можете відмовитись від будь-яких зобов’язань, які ви зробили в цьому стані, не впливаючи на жодні гілки, виконавши іншу перевірку.

Якщо ви хочете створити нову гілку, щоб зберегти створені вами зобов’язання, ви можете зробити це (зараз чи пізніше), використовуючи знову -b з командою оформлення замовлення. Приклад:

git checkout -b new_branch_name

Тепер, щоб перенести їх на майстра:

Зробіть git reflogабо навіть просто git logі відзначте свої зобов'язання. Тепер git checkout masterі git mergeзобов’язання.

git merge HEAD@{1}

Редагувати:

Щоб додати, використовуйте git rebase -iне тільки для видалення / вбивства зобов’язань, які вам не потрібні, але і для їх редагування. Просто вкажіть "редагувати" у списку комісій, і ви зможете внести зміни до своїх зобов’язань, а потім надішліть і надалі git rebase --continue. Це забезпечило б те, щоб ви ніколи не заходили на відокремлену ГОЛОВУ.


Дякуємо за деталі та чудові інформаційні вказівки тут. Здається, явне злиття не було необхідним, але це візуалізувало деякі концепції, до яких я повернусь. Дякую.
Ben Zotto

6
Що робить "@ {1}"?
ebi

35

Поставте свою окрему комісію на власну гілку

Просто запустіть git checkout -b mynewbranch.

Потім запустіть git log, і ви побачите, що комісія зараз HEADна цій новій гілці.


Якщо я це роблю, чи mynewbranchдодає щось до чого?
Бенджон

1
Так, він прикріплюється до того, де була б прикріплена відокремлена голівка, саме цього я хотів. Дякую!
Бенджон

22

якщо у вас є лише головна гілка і хочете повернутися до "розвитку" або функція, просто зробіть це:

git checkout origin/develop

Примітка: перевірка походження / розвитку .

Ви перебуваєте у відокремленому стані HEAD . Ви можете озирнутися, внести експериментальні зміни та здійснити їх, а також можете відмовитись від будь-яких зобов’язань, які ви зробили в цьому стані, не впливаючи на жодні гілки, виконавши іншу замовлення ...

тоді

git checkout -b develop

Це працює :)


7
Те, що для мене спрацювало, це не «походження / розвиток гет-кас», а «розвиток git checkout». Використання "походження / розвитку" завжди призводило до жодних змін, тим самим залишаючись у "HEAD відключеному у початковому / розвиненому". Пропуск частини "походження" виправив усе.
DrStrangepork

18

Якщо ви хочете натиснути поточну відокремлену ГОЛОВУ (перевірте git logраніше), спробуйте:

git push origin HEAD:master

щоб надіслати свою відокремлену ГЛАВУ в головну галузь за початком. Якщо ваш поштовх відхилено, спробуйте git pull origin masterспочатку отримати зміни від походження. Якщо вас не хвилюють зміни від походження та вони відхиляються, оскільки ви зробили деяку навмисну ​​перезавантаження і ви хочете замінити origin / master на свою відокремлену гілку - тоді ви можете змусити це ( -f). Якщо ви втратили доступ до попередніх комісій, ви завжди можете запустити, git reflogщоб переглянути історію з усіх гілок.


Щоб повернутися до головної гілки, зберігаючи зміни, спробуйте виконати наступні команди:

git rebase HEAD master
git checkout master

Див.: Git: "На даний момент не існує жодної гілки". Чи є простий спосіб повернутися на гілку, зберігаючи зміни?


2
Це дійсно відправляє відокремлені зобов’язання на походження / майстер. Щоб прикріпити голову до місцевого відділення, зробіть це: stackoverflow.com/a/17667057/776345
Paschalis

Коли я це роблю, я отримую Цей сховище налаштовано для Git LFS, але 'git-lfs' на вашому шляху не знайдено. Якщо ви більше не бажаєте використовувати Git LFS, видаліть цей гачок, видаливши .git / hooks / post-checkout.
користувач2568374

16

Я знайшов це питання під час пошуку You are in 'detached HEAD' state.

Проаналізувавши те, що я зробив, щоб потрапити сюди, порівняно з тим, що робив у минулому, я виявив, що помилився.

Моя нормальна витрата:

git checkout master
git fetch
git checkout my-cool-branch
git pull

Цього разу я зробив:

git checkout master
git fetch
git checkout origin/my-cool-branch
# You are in 'detached HEAD' state.

Проблема в тому, що я випадково зробив:

git checkout origin/my-cool-branch

Замість:

git checkout my-cool-branch

Виправленням (у моїй ситуації) було просто запустити вищевказану команду і потім продовжити потік:

git checkout my-cool-branch
git pull

11

Наступне працювало для мене (використовуючи лише майстер відділення):

git push origin HEAD:master
git checkout master        
git pull

Перший підштовхує відокремлену ГОЛОВУ до віддаленого походження.

Другий рухається до ведучого відділення.

Третій відновлює голову, яка приєднується до ведучого відділення.

Проблеми можуть виникнути при першій команді, якщо натискання буде відхилено. Але це більше не буде проблемою відірваної голови, а полягає в тому, що відокремлена ГОЛА не знає про деякі віддалені зміни.


не працює, я отримав: цей сховище налаштовано для Git LFS, але 'git-lfs' на вашому шляху не знайдено. Якщо ви більше не бажаєте використовувати Git LFS, видаліть цей гачок, видаливши .git / hooks / pre-push. І ви зараз не на відділенні. Вкажіть, будь ласка, з якою галуззю ви хочете об'єднатись.
користувач2568374

11

Я щойно зіткнувся з цим питанням сьогодні, і я впевнений, що вирішив це:

git branch temp
git checkout master
git merge temp

Я був на своєму робочому комп’ютері, коли зрозумів, як це зробити, і зараз я стикаюся з тією ж проблемою на особистому комп’ютері. Тож доведеться чекати до понеділка, коли я знову за робочим комп’ютером, щоб побачити, як саме я це зробив.


@StarShine Kenorb виправив це. Тепер він зберігає ваші відокремлені зобов’язання до нової гілки, temp, перемикає на master та об'єднує temp у master.
Cees Timmerman

Я не знаю, чому ppl знімає це, він виправив мою проблему stat, але ви, можливо, захочете включити команду видалення temp гілки.
GlassGhost

8

Якщо ви повністю впевнені, що HEAD - це хороший стан:

git branch -f master HEAD
git checkout master

Ви, мабуть, не можете підштовхнути до походження, оскільки ваш господар відхилився від походження. Якщо ви впевнені, що ніхто більше не використовує репо, ви можете натиснути:

git push -f

Найкорисніше, якщо ви знаходитесь у гілці функцій, яку ніхто більше не використовує.


6

Все, що вам потрібно зробити, - це "git checkout [гілка-ім'я]", де [гілка-ім'я] - це ім'я оригінальної гілки, з якої ви потрапили в відокремлений головний стан. (Відірваний від asdfasdf) зникне.

Так, наприклад, у відділенні "dev" ви оформляєте комісію asdfasd14314 ->

'git checkout asdfasd14314'

Ви зараз перебуваєте у відокремленій голові держави

'git branch' відобразить щось на зразок ->

* (detached from asdfasdf)
  dev
  prod
  stage

але вийти з відокремленої глави держави і повернутися до dev ->

'git checkout dev'

а потім 'git branch' відобразиться у списку ->

* dev
  prod
  stage

але це, звичайно, якщо ви не маєте наміру зберігати будь-які зміни від відокремленої глави держави, але я вважаю, що це роблю багато, не маючи намір вносити будь-які зміни, а просто дивитись на попередню комісію


6

Як вказував Кріс, у мене була така ситуація

git symbolic-ref HEAD не вдається з fatal: ref HEAD is not a symbolic ref

Однак git rev-parse refs/heads/masterвказував на хороший фіксатор, звідки я міг би відновитиgit show [SHA]

Я робив багато безладних речей після цього, але те, що, здається, виправлене, це просто,

git symbolic-ref HEAD refs/heads/master

І голова прикріплена!


1
Дякую! Моя голова відірвалася. Я міг би наздогнати це майстра, але вони випадково вказували на той самий фільтр, а не головою, що вказує на майстра, який вказав на поступку. Гарна порада = D
RagingRoosevelt

4

Замість того, щоб робити git checkout origin/master

просто робити git checkout master

то git branchпідтвердить вашу філію.


4

У мене сьогодні була ця проблема, де я оновлював підмодуль, але не був на жодній гілці. Я вже вчинив, так що зберігання, оформлення замовлень, видалення не буде працювати. Я закінчив вибирати вишневу головку. Тож відразу після того, як я здійснив (коли натиск не вдався), я зробив:

git checkout master
git cherry-pick 99fe23ab

Моє мислення пішло: я на відстороненій голові, але хочу бути господарем. Якщо припустити, що моє відокремлене стан не сильно відрізняється від майстра, якби я міг застосувати свої зобов'язання до майстра, я був би налаштований. Це саме те, що робить вишня.


3

Якщо ви зробили якісь зобов’язання поверх головного майстра і просто хочете там "назад злитися" master(тобто ви хочете masterвказати на нього HEAD), однолінійним буде:

git checkout -B master HEAD
  1. Це створює нову гілку з назвою master, навіть якщо вона вже існує (це як рух, masterі це те, що ми хочемо).
  2. Новостворене відділення встановлено на точку HEAD, де ви знаходитесь.
  3. Нова гілка перевірена, тож ви вже masterпізніше.

Я вважаю це особливо корисним у випадку з підрепозиторіями, які також часто бувають у відокремленому стані.


3

У мене була така ж проблема, і я вирішив її, пройшовши наступні кроки.

Якщо вам потрібно зберегти свої зміни

  1. Спочатку потрібно запустити git checkout masterкоманду, щоб повернути вас у головну гілку.
  2. Якщо вам потрібно тримати зміни, просто запустіть git checkout -b changesі git checkout -B master changes

Якщо вам не потрібні ваші зміни

  1. Щоб видалити всі незафіксовані файли з вашого відділення git clean -df.

  2. Потім потрібно очистити всі нестандартні зміни у вашому сховищі. Для цього вам потрібно бігтиgit checkout --

  3. Нарешті, ви повинні повернути свою гілку до головної гілки за допомогою git checkout masterкоманди.


3

Для мене це було так само просто, як знову видалити локальну гілку, оскільки у мене не було місцевих комітетів, які я хотів би натиснути:

Так я і зробив:

git branch -d branchname

А потім ще раз перевірити відділення:

git checkout branchname

1

Коли я особисто опиняюся в ситуації, коли виявляється, що я вніс деякі зміни, поки не перебуваю master(тобто HEADвід'єднаний праворуч над ними, masterі між ними немає ніяких комісій), сховання може допомогти:

git stash # HEAD has same content as master, but we are still not in master
git checkout master  # switch to master, okay because no changes and master
git stash apply  # apply changes we had between HEAD and master in the first place

1

Простими словами, відокремлений стан HEAD означає, що ви не перевірені в HEAD (або наконечнику) жодної гілки .

Зрозумійте з прикладом

Гілка в більшості випадків - це послідовність з декількох комітетів, таких як:

Виконувати 1: master -> branch_HEAD (123be6a76168aca712aea16076e971c23835f8ca)

Комісія 2: master -> 123be6a76168aca712aea16076e971c23835f8ca -> branch_HEAD (100644a76168aca712aea16076e971c23835f8ca)

Як ви бачите вище у випадку послідовності комітетів, ваша філія вказує на останнє зобов’язання. Тож у такому випадку, якщо ви зареєструєтесь, щоб здійснити 123be6a76168aca712aea16076e971c23835f8ca, тоді ви опинилися б у відокремленому стані, оскільки HEAD вашого відділення вказує на 100644a76168aca712aea16076e971c23835f8ca, а технічно вас перевіряють у HEAD відсутності. Отже, ви перебуваєте у відстороненому стані HEAD.

Теоретичне пояснення

У цьому блозі чітко зазначено, що репозиторій Git - це дерево дерев-комітетів, при цьому кожен комікт вказує на свого предка, коли кожен покажчик фіксації оновлюється, і ці вказівки на кожну гілку зберігаються у підкаталогах .git / refs. Теги зберігаються у .git / refs / теги, а гілки зберігаються у .git / refs / heads. Якщо ви подивитесь на будь-який з файлів, ви побачите, що кожен тег відповідає одному файлу, з хешем фіксування на 40 символів, і як описано вище @Chris Johnsen та @ Yaroslav Nikitenko, ви можете перевірити ці посилання.


0

Я потрапив у справді нерозумний стан, я сумніваюся, що хтось інший знайде це корисним .... але про всяк випадок

git ls-remote origin
0d2ab882d0dd5a6db93d7ed77a5a0d7b258a5e1b        HEAD
6f96ad0f97ee832ee16007d865aac9af847c1ef6        refs/heads/HEAD
0d2ab882d0dd5a6db93d7ed77a5a0d7b258a5e1b        refs/heads/master

з яким я врешті зафіксував

git push origin :HEAD

0

Це працювало для мене чудово:

1. git stashзберегти локальні модифікації

Якщо ви хочете відмовити зміни,
git clean -df
git checkout -- .
git clean видаляє всі незафіксовані файли (попередження: хоча він не видалить ігноровані файли, згадані безпосередньо у .gitignore, він може видалити ігноровані файли, що знаходяться у папках), а git checkout видаляє всі незмінені зміни.

2. git checkout masterперейти на головну гілку (якщо припустити, що ти хочеш використовувати майстер)
3. git pullзняти останню комісію з ведучої гілки
4. git statusщоб перевірити, чи все виглядає чудово

On branch master
Your branch is up-to-date with 'origin/master'.

0

У моєму випадку я побіг git status, і побачив, що в своєму робочому каталозі у мене є кілька незатребуваних файлів.

Для того, щоб ребаза працювала, мені просто довелося їх очистити (оскільки мені вони не потрібні).


0

Якщо ви використовуєте EGit в Eclipse: припустіть, що ваш господар є вашою основною галуззю розвитку

  • здійснити зміни у відділенні, як правило, новій
  • потім витягніть з пульта
  • потім клацніть правою кнопкою миші вузол проекту, виберіть команду та виберіть історію показу
  • потім клацніть правою кнопкою миші майстер, виберіть перевірку
  • якщо Eclipse скаже вам, є два майстри, один локальний, один віддалений, виберіть пульт

Після цього ви зможете повторно приєднатися до майстра-джерела.


-1

У мене була така ж проблема. Я зберігаю свої зміни git stashі важко скидаю гілку в місцевому рівні до попереднього вчинення (я думав, що це спричинило), тоді зробив це, git pullі я не отримую цю голову відокремленою зараз. Не забудьте git stash applyзнову змінити свої зміни.


-2
git checkout checksum  # You could use this to peek previous checkpoints
git status # You will see HEAD detached at checksum
git checkout master # This moves HEAD to master branch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.