Відмовитись від Git Merge


119

Я працюю над проектом, використовуючи Git як VCS. Я отримав xyzзріз гілки від основної гілки майстра. Пропрацювавши деякий час, я вчинив свій код і взяв на голову лінію гілки.

Потяг був чудовий. Потім я об'єднав код з master. Після злиття виникли проблеми в певних файлах. Я не вчинив код після об'єднання. Чи може хтось, будь ласка, вказувати, як я можу перервати це злиття і довести свою філію, де я зараз працюю, до стану, в якому воно було до того, як я злився?



Ви не можете просто відновити попередню комісію гілки?
Wutipong Wongsakuldej


1
Зауважте, що в Git revert- це назва команди, яка створює нову команду, що повертає зміни до попереднього комітету, так що, мабуть, це не слово, яке ви шукаєте тут. Я відредагував ваше запитання, щоб уточнити.
Скотт Велдон

Відповіді:


296

до тих пір, поки ви не взяли на себе зобов'язання, ви можете набрати

git merge --abort

так, як запропонував командний рядок.


4
Я отримав це повідомлення при спробі цього: error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
SMBiggs

1
@Ahmad git не починає злиття з незапущеними змінами (вже відстежуваних файлів) на місці. git не може захистити те, чого не знає.
Тімоті Вікторле

так, ви це, я дізнався це, втративши код. ось детально моя проблема, як я потрапив у проблему. stackoverflow.com/questions/55474092/how-to-undo-the-git-abort
Ахмад

23

Якщо ви маєте "статус git" під час конфлікту злиття, перше, що git показує вам, це як скасувати злиття.

вихід статусу git при конфлікті злиття


Приємно, це підказало мені, git reset HEAD <file>що фактично вилучив "злиття", що згортається з керування джерелом розширення git => тоді я міг або вирішити конфлікти, або просто відновити зміни в списку розширень GIT :)
jave.web

6

Правду кажучи, існує багато, багато ресурсів, що пояснюють, як це зробити вже в Інтернеті:

Git: як відновити об'єднання комісії?

Git: як відновити об'єднання комісії?

Скасування злиття з блогу Git (отримано з "Wayback Machine" archive.org)

Тому я думаю, що я просто підсумую деякі з них:

  1. git revert <merge commit hash>
    Це створює додатковий комітет "повернення", який скаже, що ви скасуєте злиття

  2. git reset --hard <commit hash *before* the merge>
    Це історія скидання до того, як ви зробили об'єднання. Якщо у вас є коміти після злиття, вам знадобиться cherry-pickїх згодом.

Але чесно, цей посібник тут кращий за все, що я можу пояснити, за допомогою діаграм! :)


1
Посилання немає. Зітхнути.
SMBiggs

@ScottBiggs Я думаю, що вони перемістили його на git-scm.com/book/en/v2/… . Денисе, якщо ти це прочитав, можеш перевірити? І якщо це дійсно те саме, чи можете ви, будь ласка, оновити посилання у своїй відповіді? Дякую!
Фабіо каже:
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.