/ / Pri prepnutí z jednej pobočky do druhej, má cieľová pobočka zdediť index a zmenené súbory? - git

Pri prepínaní z jednej pobočky do druhej, má cieľová pobočka zdediť index a zmenené súbory? - git

V spoločnosti Git mám experimentálnu pobočku (EXP-12). Urobil som tam nejaké zmeny, ale ešte nie som pripravený na splnenie. Potrebujem vykonať úpravy majstra.

Idem na zvládnutie.

Možné sú dva prípady:

  1. Ak som zahrnul zmeny do indexu EXP-12, zobrazia sa aj v indexe na hlavnej pobočke.
  2. Ak by som nemal zahrnúť moje zmeny do indexu EXP-12, tieto súbory sa budú zobrazovať ako zmeny, ktoré nie sú vykonané pre spúšťanie na hlavnej pobočke.

Môj problém je, že chcem, aby všetko na pánovi a EXP-12 byť oddelené. Chcem robiť nejaké experimentálne zmeny EXP-12 > prejdite na master> vykonajte zmeny na master> fáze všetko pre commit (git add -A)> commit> prepnite späť na EXP-12 a pokračujte v pokusoch. Teraz, keď to urobím, môj záväzok na hlavnej pobočke bude zahŕňať všetky zmeny EXP-12.

Aká je logika za tým? Alebo mi niečo chýba?

odpovede:

0 pre odpoveď č. 1

Klasické riešenie tohto problému je použiť git stash - keď ste znovu zapnutý EXP-12 môžete robiť:

git stash save --keep-index "Some work-in-progress on EXP-12"

... potom zmeňte pobočku na zvládnutie ako obvykle, urobte nejakú prácu, zmeňte späť a aplikujte posledný stash:

git checkout master

[... do some stuff ...]

git checkout EXP-12

git stash pop

Ja však osobne preferujem vytvorenie pracovného postupu a neskôr buď:

  • Zmeňte to git commit --amend
  • Presunúť vetvu späť na predchádzajúci odovzdanie, ale ponechať všetku vašu prácu ako nestabilné zmeny pomocou: git reset HEAD^
  • ... alebo použite git rebase -i <EARLIER-COMMIT> na squash niekoľko work-in-progress záväzky dohromady.

Výhoda vytvorenia skutočného odovzdaniapomocou skrytu môžete použiť skrytie na akýkoľvek záväzok, nie len ten, na ktorý ste ho uložili, zatiaľ čo normálny záväzok presunie túto pobočku dopredu a je viazaný na predchádzajúce záväzky.