Неге go жоқ -m опциясы туралы шағым қайтарады?

Сондықтан, мен басқа адамдармен жобада жұмыс істеймін, сонда бірнеше форвардтар бар. Біреулер бұл мәселені шеше алады, мен оның шанышқымен біріктірдім, бірақ содан кейін жақсы шешім таба алатынымды түсіндім. Мен жасаған міндеттемелерімді жойғым келеді. Мен бұны git revert HEAD тырыстым, бірақ ол маған осы қатені берді:

  қайғылы: Commit <SHA1> біріктіру, бірақ ешқандай-м нұсқасы берілмеді. 

Бұл нені білдіреді? Мен біріктіріп, мұны істегенде, -m опциясын «Пайдаланушы аты арқылы біріктіру» деп айтуға қолданамын.

Мен мұнда дұрыс емес жұмыс істеймін?

92
12 мая '11 в 0:34 2011-05-12 00:34 icnhzabot 12 мамырда орнатылды , '11 0:34 2011-05-12 00:34
@ 3 жауаптар

Әдепкі бойынша, git revert біріктіру міндеттемесін қайтарудан бас тартады, өйткені шын мәнінде бұл бір мәнді дегенді білдірмейді. Менің ойымша, сіздің HEAD - бұл біріктіру түзету.

Біріктіруді болдырмауды қаласаңыз, негізгі біріктіру сызығы, яғни сіз қайтып оралғыңыз келетін, қандай негізгі біріктіру элементін қарағыңыз келетінін көрсетуіңіз керек.

Жиі бұл ата-ананың біреуі болады, мысалы, егер сіз git merge unwanted болсаңыз және git merge unwanted қаласаңыз, біріктіруді кері қайтару туралы шешім unwanted . Алғашқы ата-ана сіздің алдын-ала біріктіру master , ал екінші ата-ана unwanted .

Бұл жағдайда сіз:

 git revert -m 1 HEAD 
103
12 мая '11 в 0:48 2011-05-12 00:48 жауапты Чарльз Бэйли 12 мамырда 0: 48-да 2011-05-12 00:48

Басқа бір жігіт foo үстіндегі тақтаны құрастырды делік, бірақ сіз бір уақытта базаны құрдыңыз, содан кейін біріктіріп, оқиға бере аласыз

  $ git lola * 2582152 (HEAD, шебері) «otherguy» филиалын біріктіру | \   |  * c7256de (otherguy) жолағы * |  b7e7176 базасы | |   * 9968f79 foo 

Ескерту: git lola - стандартты емес, бірақ пайдалы бүркеншік.

git revert бар текше жоқ:

  $ git қайтадан HEAD өлімге әкеліп соқтырады: Commit 2582152 ... біріктіру, бірақ ешқандай-м нұсқасы берілген жоқ. 

Чарльз Бэйли әдеттегідей үлкен жауап берді. git revert пайдалану бұрынғыдай git revert

  $ git қайтару - жоқ-edit -m 1 HEAD [master e900aad] Кайтару «Біріктіру филиалы» басқа «  0 файл өзгерді, 0 кірістіру (+), 0 өшіру (-)  жою режимі 100644 жолағы 

bar тиімді түрде жояды және тарихты қалыптастырады

border=0
  $ git lola * e900aad (HEAD, master) «Біріктіру филиалы» басқа « * 2582152 «otherguy» филиалын біріктіру | \   |  * c7256de (otherguy) жолағы * |  b7e7176 базасы | |   * 9968f79 foo 

Бірақ біріктіруді тастағысы келетініне күмәнданамын:

  $ git reset - хард HEAD ^ HEAD енді b7e7176 базасында $ git lola * b7e7176 (HEAD, master) базасы |  * c7256de (otherguy) жолағы | |   * 9968f79 foo 

git rev-parse нұсқаулығында көрсетілгендей

<rev>^ , мысалы. HEAD ^, v1.5.1^0
Тексеру параметріне ^ суффиксі бұл тапсырма нысанының бірінші бастамасы. ^<n> n элементінің элементі дегенді білдіреді (яғни, <rev>^ <rev>^1 ). Ерекше ереже ретінде, <rev>^0 өзі міндеттемені білдіреді және <rev> нысанымен байланысты тег нысанының атауы болғанда қолданылады.

сондықтан гуляты git reset алдында HEAD^ (немесе HEAD^1 ) болды b7e7176 және HEAD^2 c7256de болды, яғни бірігудің бірінші және екінші ата-аналары тиісінше.

git reset --hard , өйткені ол жұмысын бұзуы мүмкін.

34
12 мая '11 в 1:20 2011-05-12 01:20 жауапты Грэг Бэкон мамыр 12, '11 уақытында 1: 20-да 2011-05-12 01:20

Менде бұл мәселе болды, шешімді fixing кестесі (gitk арқылы) қарау және келесіде болғанымды көру:

 * commit I want to cherry-pick (x) |\ | * branch I want to cherry-pick to (y) * | |/ * common parent (x) 

Енді мен не істегім келетінін түсінемін.

 git cherry-pick -m 2 mycommitsha 

Бұл -m 1 бірыңғай ата-анасының негізінде біріктіріледі, себебі -m 2 y тармағының негізінде біріктіріледі, яғни, шие-таңдайтынды қалаймын.

3
24 окт. жауап 24 айға шмиш111 беріледі . 2014-10-24 15:56 '14 сағат 15:56 2014-10-24 15:56