Мен біріктіру қақтығысымен бетпе-бет келемін. Біріктіруді қалай үзуге болады?

Мен өзімнің git pull біріктіріп,

 unmerged: _widget.html.erb You are in the middle of a conflicted merge. 

Мен файлдың басқа нұсқасы жақсы екенін және менің шахматымды білетіндігімде, менің барлық өзгерістерім кері қайтарылуы керек. Мұны қалай жасауға болады?

1947
19 сент. Gwyn Morfey орнатқан 19 қыркүйек 2008-09-19 16:21 '08 сағат 16 : 00-де 2008-09-19 16:21
@ 10 жауап

Себебі сіздің сәтсіздікке сәтсіздікке ұшырады, онда HEAD ( HEAD^ ) сіздің соңғы «жарамды» болып табылады:

 git reset --hard HEAD 

Қажетті бөлік - өзгертулеріңізден асып кетуіне мүмкіндік беру.

Бұрынғы ескі нұсқалар «оларды» біріктіру стратегиясын пайдалануға мүмкіндік берді:

 git pull --strategy=theirs remote_branch 

Бірақ ол осы лауазымда Джунио Хамано (ілеспе гитара) сипаттағандай жойылған болатын. Сілтемеде көрсетілгендей, сіз келесі әрекеттерді орындайсыз:

 git fetch origin git reset --hard origin 
1752
19 сент. Жауап Пэт Ноц 19 қыркүйек 2008-09-19 17:33 '08 в 17:33 2008-09-19 17:33

Егер git reset --merge нұсқасы> 1.6.1 болса, git reset --merge функциясын пайдалануға болады.

Сонымен қатар, @Michael Джонсонның айтуынша, егер гитара нұсқасы> 1.7.4 болса, сіз де git merge --abort пайдалана аласыз.

Әдеттегідей, біріктіруді бастамас бұрын, сізсіз өзгертулеріңіз жоқ екеніне көз жеткізіңіз.

Барып біріктіру адам бетінде

border=0

git merge --abort git reset --merge кезде git reset --merge MERGE_HEAD .

MERGE_HEAD біріктіру кезінде орын алады.

Сондай-ақ, біріктіруді бастау кезінде рұқсатсыз өзгерістерге қатысты:

Егер біріктіруді бастамас бұрын жасағыңыз келмейтін өзгерістер бар болса, біріктіруден кейін немесе біріктіруден кейін git stash pop біріктіріп, біріктірмес бұрын оларды git stash pop .

1610
29 марта '10 в 2:16 2010-03-29 02:16 жауапты Карл 29 наурызда 10:16 сағатта 2010-03-29 02:16
 git merge --abort 

Шешімдерді реттеу процесін тоқтатып, алдын-ала біріктіру күйін қалпына келтіру әрекеті.

Егер біріктіру басталған кезде жұмыс жағдайында жұмыс істемейтін өзгерістер git merge --abort , кейбір жағдайларда бұл өзгерістерді қалпына келтіре алмайды. Сондықтан, галереяны біріктіргенге дейін өзгерістерді жазуға немесе жазуға кеңес береміз.

git merge --abort git reset --merge балама - git reset --merge кезде.

http://www.git-scm.com/docs/git-merge

382
13 нояб. жауап берілді 13 қараша. 2012-11-13 00:40 '12 at 0:40 2012-11-13 00:40

Осы нақты пайдалану жағдайында, шын мәнінде біріктіруді бұзғыңыз келмейді, қақтығысты белгілі бір жолмен шешу керек.

Басқа стратегиямен біріктіруге және біріктіруге ерекше қажеттілік жоқ. Келіспеушіліктер гитарамен дұрыс бөлінді, ал үшінші тұлғалардың өзгерістерін қабылдау туралы талап тек осы бір файл үшін.

Қақтығыстағы байланыссыз файл үшін, гитарадағы қол жетімді ортақ негізді, файлдың жергілікті және қашықтағы нұсқаларын қамтамасыз етеді. (Мұнда олар git mergetool көмегімен үш жақты дифференциалды құралда пайдалану үшін git mergetool .) Сіз оларды git show көру үшін пайдалана аласыз.

 # common base: git show :1:_widget.html.erb # 'ours' git show :2:_widget.html.erb # 'theirs' git show :3:_widget.html.erb 

Қақтығысты шешудің ең оңай жолы - қашықтағы нұсқаны пайдалану:

 git show :3:_widget.html.erb >_widget.html.erb git add _widget.html.erb 

Немесе go> = 1.6.1:

 git checkout --theirs _widget.html.erb 
73
20 сент. Жауап CB Bailey 20 Sep. 2008-09-20 13:41 '08 at 13:41 pm 2008-09-20 13:41

Менің ойымша, сізге git reset қажет.

Айтуға болмайды, бұл git revert дегеніміз, мысалы, svn revert - Subversion-де, қайтару (өзгеріссіз) өзгерістерді алып тастап, файлды ағымдағы нұсқаға репозиторийден git revert ескеріңіз.

git reset баламасы svn revert , яғни қажетсіз өзгерістерді алып тастаңыз.

72
19 сент. Жауап David Precious берген 19 қыркүйек 2008-09-19 16:25 '08 сағат 16: 25- те 2008-09-19 16:25

Өйткені түсініктеме git reset --merge - git merge --abort үшін бүркеншік болып табылады, - деп айтуға болады, бұл git merge --abort баламалы git reset --merge , егер тек MERGE_HEAD . Бұл біріктіру пәрмені үшін өт көмекінен табуға болады.

 git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present. 

Сәтсіз аяқталғаннан кейін, MERGE_HEAD болмаған кезде, сәтсіз git reset --merge , бірақ міндетті емес - git merge --abort , сондықтан бір нәрсе үшін ескі және жаңа синтаксис ғана емес, жойылуы мүмкін.

Мен жеке- git reset --merge , сценарийлер үшін әлдеқайда күшті, және тұтастай алғанда сәтсіз біріктіруге жол git reset --merge .

29
02 апр. Жауап Martin ұсынды 02 Сәуір. 2015-04-02 15:16 '15 at 15:16 2015-04-02 15:16

Git 1.6.1.3 бітіргеннен кейін бірден біріктірудің екі жағына да тексеру жүргізілді:

 git checkout --theirs _widget.html.erb 
16
17 июля '10 в 4:29 2010-07-17 04:29 17-шілдеде сағат 16: 30-да Ален О'Дэйге жауап берілді 2010-07-17 04:29

Жұмыс көшірмесін жасаудың баламасы:

 git stash git merge --abort git stash pop 

Мен бұған қарсы кеңес беремін, себебі ол Subversion-де біріктіру ретінде тиімді, себебі ол келесі әрекеттегі тармақталған қарым-қатынасты төмендетеді.

14
13 июля '10 в 21:57 2010-07-13 21:57 13-шілдеде сағат 21: 57-да Ален О'Дэй жауап береді. 2010-07-13 21:57

Егер біріктіру қақтығысын аяқтасаңыз және ештеңе жасамаңыз, бірақ біріктіру қатесі төмендегі барлық пәрмендер қолданылғаннан кейін көрсетілсе,

 git reset --hard HEAD git pull --strategy=theirs remote_branch git fetch origin git reset --hard origin 

алып тастаңыз

.git \ index.lock

файлды [қалпына келтіру жағдайында паста басқа орынға бөліңіз], содан кейін қай нұсқаға қажет болатынына байланысты келесі пәрмендердің кез келгенін енгізіңіз.

 git reset --hard HEAD git reset --hard origin 

Бұл көмектеседі деп сенемін !!!

9
11 апр. 11 сәуірде Нирав Мехта жауап береді 2018-04-11 00:26 '18 at 0:26 2018-04-11 00:26

Мен үшін не істегенін таптым (бір файлды алдын ала біріктіру күйіне қайтару):

 git reset *currentBranchIntoWhichYouMerged* -- *fileToBeReset* 
1
31 окт. 31 қазан күні Малколм Боххоф жауап береді . 2017-10-31 03:56 '17 те 3:56 2017-10-31 03:56

Тегтер туралы басқа сұрақтарға өту немесе Сұрақ қойыңыз