Paano ko maaayos ang isang maling git branch?

Ginawa ko >

414
31 мая '10 в 8:30 2010-05-31 08:30 naitakda ng mikewilliamson sa Mayo 31 '10 sa 8:30 ng umaga 2010-05-31 08:30
@ 8 sagot

Kung hindi mo pa nai-click ang iyong mga pagbabago, maaari mo ring gawin ang isang soft reset:

 git reset --soft HEAD^ 

Ito ay babalik ng isang gumawa, ngunit ibabalik ang naitama na mga pagbabago sa iyong index. Sa pag-aakala na ang mga sanga ay relatibong modernong kamag-anak sa bawat isa, ang git ay magpapahintulot sa iyo na magpatakbo ng isang tseke sa isa pang sangay, kung saan maaari mo lamang ayusin:

 git checkout branch git commit 

Ang kawalan ay kai>

618
31 мая '10 в 8:53 2010-05-31 08:53 sumagot kay Blair Holloway noong Mayo 31 '10 sa 8:53 2010-05-31 08:53

Kung mayroon kang isang malinis (hindi nabagong) kopya ng pagtatrabaho

Ibalik ang isang gumawa (siguraduhin mong suriin ang commit hash para sa susunod na hakbang):

 git reset --hard HEAD^ 

Upang ilipat ang pagkapirmi sa isa pang sangay:

border=0
 git checkout other-branch git cherry-pick COMMIT-HASH 

Kung nagbago ka o hindi sinusubaybayan ang mga pagbabago

Tandaan din na i- git reset --hard anumang hindi git reset --hard at mabago na mga pagbabago na maaaring mayroon ka, kaya kung mayroon kang mga mas gusto mo:

 git reset HEAD^ git checkout . 
79
31 мая '10 в 8:33 2010-05-31 08:33 sumagot kay Michael Mrozek noong Mayo 31 '10 sa 8:33 2010-05-31 08:33

4 na taon sa huli sa paksa, ngunit maaaring ito ay kapaki-pakinabang sa isang tao.

Kung nakalimutan mong lumikha ng isang bagong sangay bago ka gumawa at ilipat ang lahat ng bagay upang makabisado, gaano man ka magawa, mas simple ang sumusunod na paraan:

 git stash # skip if all changes are committed git branch my_feature git reset --hard origin/master git checkout my_feature git stash pop # skip if all changes were committed 

Ngayon ang iyong pangunahing sangay ay origin/master , at lahat ng mga bagong gumawa ay nasa my_feature . Tandaan na my_feature ay isang lokal na branch, hindi isang remote.

61
06 февр. Ang sagot ay ibinigay fotanus 06 Peb. 2014-02-06 17:44 '14 sa 17:44 2014-02-06 17:44

Kung ginawa mo na ang iyong mga pagbabago, kakai>

 git reset --hard HEAD^ git merge COMMIT_SHA1 git push --force 

Babala: ang hard reset ay kanselahin ang anumang mga nakabinbing pagbabago sa iyong nagtatrabaho kopya, habang patulak ay ganap na i-overwrite ang estado ng remote na sangay gamit ang kasalukuyang estado ng lokal na sangay.

Kung sakali, sa Windows (gamit ang Windows command line, hindi Bash), may mga tunay na apat ^^^^ halip ng isa, samakatuwid

 git reset --hard HEAD^^^^ 
17
31 мая '10 в 9:11 2010-05-31 09:11 ang sagot ay ibinigay ni Igor Zevaka noong Mayo 31 '10 sa 9:11 2010-05-31 09:11

Ginawa ko kamakailan ang ginawa ko nang hindi ko sinasadyang ginawa ang paglipat sa master, kapag kai>

Kung nagawa mo >

 // rewind master to point to the commit just before your most recent commit. // this takes all changes in your most recent commit, and turns them into unstaged changes. git reset HEAD~1 // temporarily save your unstaged changes as a commit that not attached to any branch using git stash // all temporary commits created with git stash are put into a stack of temporary commits. git stash // create other-branch (if the other branch doesn't already exist) git branch other-branch // checkout the other branch you should have committed to. git checkout other-branch // take the temporary commit you created, and apply all of those changes to the new branch. //This also deletes the temporary commit from the stack of temp commits. git stash pop // add the changes you want with git add... // re-commit your changes onto other-branch git commit -m "some message..." 

TANDAAN. Sa halimbawa sa itaas, rewound ko ang 1 fixation sa git reset HEAD ~ 1. Ngunit kung gusto mong i-rewind n commits, pagkatapos ay maaari mong gawin ang git reset HEAD ~ n.

Bukod pa rito, kung natapos mo na ang pagtatrabaho sa maling branch, at tapos na rin ang pagsulat ng isa pang code, bago mo matanto na nagawa mo na ang maling branch, maaari mong gamitin ang git stash upang i-save ang iyong hindi natapos na trabaho:

 // save the not-ready-to-commit work you're in the middle of git stash // rewind n commits git reset HEAD~n // stash the committed changes as a single temp commit onto the stack. git stash // create other-branch (if it doesn't already exist) git branch other-branch // checkout the other branch you should have committed to. git checkout other-branch // apply all the committed changes to the new branch git stash pop // add the changes you want with git add... // re-commit your changes onto the new branch as a single commit. git commit -m "some message..." // pop the changes you were in the middle of and continue coding git stash pop 

TANDAAN. Ginamit ko ang site na ito bi>https://www.clearvision-cm.com/blog/what-to-do-when-you-commit-to-the-wrong-git-branch/

4
31 мая '17 в 0:51 2017-05-31 00:51 ang sagot ay ibinigay ni Ali Mizan noong Mayo 31 '17 sa 0:51 2017-05-31 00:51

Kaya, kung ang iyong script ay nagpapasa ka ng master , ngunit nilayon upang pumasa sa another-branch (na maaaring o hindi pa umiiral), ngunit hindi ka pa nag-click, ito ay medyo madali upang ayusin.

 // if your branch doesn't exist, then add the -b argument git checkout -b another-branch git branch --force master origin/master 

Ngayon ang lahat ng iyong mga pangako sa master ay sa another-branch .

Pinagmulan: http://haacked.com/archive/2015/06/29/git-migrate/

2
08 апр. Sumagot Lorcan O'Neill Abril 8 2016-04-08 16:19 '16 sa 4:19 ng 2016-04-08 16:19

Kung nakatagpo ka ng problemang ito, at mayroon kang Visual Studio, maaari mong gawin ang mga sumusunod:

Mag-right-click sa iyong sangay at piliin ang View History :

2019

05 апр. ang sagot ay ibinigay kay Trevor 05 Abr 2017-04-05 02:39 '17 sa 2:39 2017-04-05 02:39

Kung ang sangay na nais mong ilapat ang iyong mga pagbabago ay umiiral na (halimbawa, upang bumuo ng mga sanga), sundin ang mga tagubilin na ibinigay ng fotanus sa ibaba, pagkatapos ay:

 git checkout develop git rebase develop my_feature # applies changes to correct branch git checkout develop # 'cuz rebasing will leave you on my_feature git merge develop my_feature # will be a fast-forward git branch -d my_feature 

At, malinaw naman, maaari mong gamitin ang pansamanta>

Bi>

0
24 авг. ang sagot ay ibinigay ng fbicknel 24 aug. 2016-08-24 01:15 '16 sa 1:15 am 2016-08-24 01:15

Iba pang mga katanungan tungkol sa tags o Magtanong ng isang Tanong