Kaip kopijuoti vieno failo versiją iš vieno gitų filialo į kitą?

Turiu du filialus, kurie yra visiškai sujungti.

Tačiau po to, kai užbaigiamas sujungimas, suprantu, kad vienas failas buvo sugadintas sujungus (kažkas sukūrė automatinį formatą, gah), ir būtų lengviau pereiti prie naujos versijos kitame filiale, o po to perkėlus jį į savo filialą, vėl įdėkite mano vienos eilutės pakeitimą .

Taigi, kas yra paprasčiausias būdas tai padaryti?

635
21 нояб. rinkinys madlep 21 nov. 2008-11-21 04:50 '08 at 4:50 am 2008-11-21 04:50
@ 5 atsakymai

Paleiskite jį iš filialo, kuriame norite baigti failą:

 git checkout otherbranch myfile.txt 

Bendrosios formulės:

 git checkout <commit_hash> <relative_path_to_file_or_dir> git checkout <remote_name>/<branch_name> <file_or_dir> 

Kai kurios pastabos (iš komentarų):

  • Naudojant hash įsipareigojimas, galite ištraukti failus iš bet įsipareigojimo
  • Tai veikia failams ir katalogams.
  • perrašo failą myfile.txt ir mydir
  • Laukiniai ženklai neveikia.
  • bet santykiniai takai

alternatyva:

 git show commit_id:path/to/file > path/to/file 
1227
21 нояб. atsakymas suteiktas madlep 21 nov. 2008-11-21 07:31 '08, 07:31, 2008-11-21 07:31

Šiame numeryje susidūriau su panašia paieška. Mano atveju ieškojau failo iš kitos šakos ištraukimo į dabartinį darbo katalogą, kuris skiriasi nuo pradinės failo vietos. Atsakymas :

border=0
 git show TREEISH:path/to/file >path/to/local/file 
59
17 авг. atsakymas duotas lkraav 17 rug . 2011-08-17 23:38 '11 11:38 val. 2011-08-17 23:38

Kaip naudoti komandą „Checkout“:

  git diff --stat "$branch" git checkout --merge "$branch" "$file" git diff --stat "$branch" 
34
06 марта '10 в 17:30 2010-03-06 17:30 atsakymas pateikiamas RzR kovo 6 d. 10 val. 17:30 2010-03-06 17:30

Atsakę į „madlep“, taip pat galite tiesiog nukopijuoti vieną katalogą iš kito filialo, naudodami BLOB katalogą.

 git checkout other-branch app/** 

Kalbant apie op klausimą, jei ten pakeitėte tik vieną failą, jis veiks gerai ^ _ ^

9
07 июня '15 в 0:29 2015-06-07 00:29 atsakymas duotas 6ft Dan birželio 15 d. 15 val. 0:29 2015-06-07 00:29

1) Įsitikinkite, kad esate filiale, kur jums reikia failo kopijos. Pavyzdžiui: noriu, kad vaiko filialo failas būtų pagrindinis, taigi jums reikia patikrinti arba turėti pagrindinį git checkout master

2) Dabar pasirinkite konkretų failą tik tai, ko norite iš pagalbinės šakos į vedlį,

 git checkout sub_branch file_path/my_file.ext 

čia, sub_branch reiškia, kad turite šį failą, o po to - failo, kurį reikia kopijuoti, pavadinimą.

6
29 июня '17 в 11:47 2017-06-29 11:47 Atsakymą pateikė „ Mohideen ibn Mohammed “ birželio 17 d. 17 val. 11:47 2017-06-29 11:47

Kiti klausimai apie žymes arba Užduoti klausimą