Чому я не можу змінити гілки?


81

Я намагаюся змінити гілки в git, але я отримую таке повідомлення про помилку:

error: you need to resolve your current index first

Я використовую git під xcode4

git status
# On branch DateCode
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
#
no changes added to commit (use "git add" and/or "git commit -a")
Frappuccinos-MacBook-Pro:whereami

# Незлиті шляхи: # (використовувати "git reset HEAD <file> ..." для вимкнення) # (використовувати "git add / rm <file> ..." відповідно до позначення роздільної здатності) #
lampShade

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

git reset {{currentBranchName}}тоді git checkout . вирішить вашу проблему
muthukumar selvaraj

Це відповідає на ваше запитання? Помилки злиття Git
Хенке,

Відповіді:


96

Спробуйте це, якщо ви не хочете жодного злиття, перерахованого в git status:

git reset --merge

Це скидає індекс і оновлює файли в робочому дереві, які відрізняються між <commit>і HEAD, але зберігає ті, що відрізняються між індексом і робочим деревом (тобто, які зміни не були додані).

Якщо файл, який відрізняється між <commit>індексом та індексом, має нестадійні зміни - скидання скасовано.

Більше про це - https://www.techpurohit.com/list-some-useful-git-commands & Doc link - https://git-scm.com/docs/git-reset


53

Ви потрапляєте both modifiedдо результату, git statusякщо конфлікти, спричинені злиттям. git не дозволяє вам змінювати гілку, доки ви не вирішите ці конфлікти. Якщо ви редагуєте цей файл, ви повинні побачити в ньому деякі маркери конфліктів - у посібнику git є посібник з вирішення цих конфліктів . (Оскільки kernel.org зараз не працює, ви можете натомість знайти цей посібник тут .)

Крім того, якщо ви вважаєте злиття помилкою, ви можете скасувати це за допомогою: git reset --merge


19

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

git checkout -f {{insert your branch name here}}


3
Це було саме те, що мені потрібно - у мене була тестова гілка, де злиття не вдалося з великою кількістю конфліктів, і я просто хотів викинути гілку. Я не зміг повернутися до хорошої гілки (перевірка не вдалася, а git reset --mergeтакож не вдалася). Але checkout -fпрацював чудово.
Чад,

6

Я отримав це повідомлення під час оновлення нових файлів з віддаленого, а індекс вийшов з ладу. Спробував виправити індекс, але вирішення через Xcode 4.5, GitHub.app (103) та GitX.app (0.7.1) не вдалося. Отже, я зробив це:

git commit -a -m "your commit message here"

який працював в обхід індексу git.

Два повідомлення в блозі, які допомогли мені зрозуміти Git та Xcode:

  • Рей Вендерліх на Xcode 4.5 та
  • Олівер Стіл з 2008 року


  • 6

    Ви можете скинути свою гілку за допомогою HEAD

    git reset --hard branch_name
    

    потім отримати гілки та видалити гілки, які не на віддаленому від локального,

    git fetch -p 
    

    1

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

    Git не дозволить вам перемикати гілку, якщо це означає, що незбережені зміни будуть видалені.


    Помилка та git statusвихідні дані вказують на те, що це не просто зміни в робочому дереві, які будуть втрачені при зміні гілки - вони вказують на те, що злиття не вдалося і конфлікти повинні бути вирішені в індексі.
    Mark Longair

    1

    Оскільки файл модифікується обома, Вам потрібно додати його до

    git add Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

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

    git reset HEAD Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    Після цього просто переключіть свою гілку, це має зробити трюк.

    Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
    Licensed under cc by-sa 3.0 with attribution required.