Қашықтағы репозиторийлерге тасымалданған арнайы глобалды болдырмау

Белгілі бір міндеттемелерді жоюдың ең оңай жолы қандай:

  • басында немесе басында емес
  • Қашықтағы компьютерде басылды.

Өйткені бұл соңғы түзету болмаса,

 git reset HEAD 

жұмыс істемейді. Ал қашықтан басқару пультіне шықты,

 git rebase -i 

және

 git rebase --onto 

консольдерде кейбір мәселелер туындауы мүмкін.

Сонымен қатар, мен тарихты шынымен өзгерткім келмейді. Егер жаман код болса, ол тарихта болған және оны көруге болады. Мен жай ғана жұмыс істейтін көшірмеде болғым келеді, мен біріктіруді түзетуге қарсы емеспін.

Басқаша айтқанда, Git дегеніміз келесі svn пәрмендеріне сәйкес келеді:

 svn merge -r 303:295 http://svn.example.com/repos/calc/trunk 

ол барлық өзгертулерді 295-тен 302-ге дейін жойып, осы түзетулердегі барлық өзгерістерді жаңа міндеттеме ретінде кері біріктіреді.

 svn merge -c -302 ^/trunk 

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

Менің ойымша, Git-тегі қарапайым операция және өте кең таралған жағдай болуы керек деп ойладым. Атомдық міндеттердің мәні қандай?

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

527
23 февр. 23 ақпанда Лакшман Прасад қойды 2010-02-23 17:21 '10 at 17:21 2010-02-23 17:21
@ 3 жауаптар

git log арқылы тапсырма git log анықтаңыз, содан кейін осы өзгерістерді алып тастайтын жаңа міндеттеме жасау үшін git revert <commit> функциясын git revert <commit> . Айтпақшы, git revert қайтымды белгісі - git cherry-pick кері таңбасы - соңғы біреу оны жоғалтқан филиалға түзетеді, біріншісі оны бар тармақтан алып тастайды.

829
23 февр. 23 ақпанда Эндрю Эйлетт жауап берді. 2010-02-23 17:31 '10 в 17:31 2010-02-23 17:31

Маған git revert үшін авто-міндеттеме ұнайды, сондықтан бұл кейбіреулер үшін пайдалы болуы мүмкін.

Егер өзгертілген файлдар автоматты түрде жасалмайтынын қаласаңыз, - --no-commit пайдалануға болады

 % git revert --no-commit <commit hash> 
border=0

бұл -n

 % git revert -n <commit hash> 
250
17 мая '13 в 1:50 2013-05-17 01:50 жауап 17-мамырда, сағат 13:50-да, 2013-05-17 01:50

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

30
23 февр. 23-ақпан күні moatPylon берген жауап 2010-02-23 17:28 '10 at 17:28 2010-02-23 17:28

тегтері туралы басқа сұрақтарға немесе Сұрақ қою