GitÔÇÖteki bir dosyan─▒n sadece bir b├Âl├╝m├╝n├╝ i┼čle


Al─▒nan cevaba git


Git'teki bir dosyada de─či┼čiklik yapt─▒─č─▒mda, de─či┼čikliklerin sadece baz─▒lar─▒n─▒ nas─▒l yapabilirim?

├ľrne─čin, bir dosyada de─či┼čtirilmi┼č 30 sat─▒r─▒n sadece 15 sat─▒r─▒n─▒ nas─▒l i┼čleyebilirim?


2596









Cevap say─▒s─▒n─▒ say: 23






Kullanabilirsiniz git add --patch <filename> (veya -p k─▒saca), ve git dosyan─▒z─▒ mant─▒kl─▒ "yak─▒┼č─▒kl─▒" oldu─čunu d├╝┼č├╝nd├╝─č├╝ ┼čeye b├Âlmeye ba┼člayacakt─▒r (dosyan─▒n b├Âl├╝mleri). Daha sonra bu soruyu soracak:

 Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
 

Her se├žene─čin a├ž─▒klamas─▒ a┼ča─č─▒dad─▒r:

  • y Bir sonraki i┼členi┼č i├žin bu ├Âbeyi haz─▒rla
  • n Bir dahaki i┼člem i├žin bu i┼čten at─▒lma
  • q├ž─▒k─▒n; bu par├žaya veya geri kalan par├žalardan herhangi birine evreleme yapmay─▒n
  • a Bu ├Âbek ve t├╝m sonraki ├Ânsezi dosyas─▒nda sahne
  • d bu ├Âbe─či veya dosyadaki sonraki ├Âbeklerin herhangi birini a┼čamal─▒ olarak kullanmay─▒n
  • g gitmek i├žin bir par├ža se├žin
  • / Verilen regex ile e┼čle┼čen bir hunk aray─▒n
  • j bu iri par├žay─▒ karars─▒z b─▒rak, sonraki karars─▒z iri par├žas─▒na bak
  • J bu par├žay─▒ karars─▒z b─▒rak, bir sonraki par├žaya bak
  • k bu iriyi karars─▒z b─▒rak, ├Ânceki karars─▒z iri par├žas─▒na bak
  • K bu iriyi karars─▒z b─▒rak─▒n, ├Ânceki iriyi g├Âr├╝n
  • s mevcut par├žay─▒ daha k├╝├ž├╝k par├žalara b├Âlmek
  • e ge├žerli par├žay─▒ el ile d├╝zenleme
  • ? iri yard─▒m yazd─▒rma

Dosya hen├╝z depoda de─čilse, ├Ânce yapabilirsiniz git add -N <filename> . Daha sonra devam edebilirsiniz git add -p <filename> .

Daha sonra ┼čunlar─▒ kullanabilirsiniz:

  • git diff --staged do─čru de─či┼čiklikleri yapt─▒─č─▒n─▒z─▒ kontrol etmek i├žin
  • git reset -p yanl─▒┼čl─▒kla eklenmi┼č yak─▒┼č─▒kl─▒s─▒
  • git commit -v Taahh├╝t mesaj─▒n─▒ d├╝zenlerken Taahh├╝d├╝n├╝z├╝ g├Âr├╝nt├╝lemek i├žin

Bunun, git format-patch amac─▒ .patch dosyalar─▒ bir dosyaya i┼člemek olan ayr─▒┼čt─▒rmak olan komuttan ├žok farkl─▒ oldu─čunu unutmay─▒n .

Gelecek i├žin referans: Git Ara├žlar─▒ - Etkile┼čimli A┼čama


3456







Sen kullanabilirsiniz git add --interactive veya sonra ve ( de─čil ); bkz ─░nteraktif modu i├žinde git-add man sayfas─▒na veya sadece y├Ânergeleri izleyin. git add -p <file> git commit git commit -a http://git-scm.com/docs/git-add

Modern Git'te ayr─▒ca git commit --interactive (ve git commit --patch etkile┼čimli g├Âr├╝nt├╝lemede yama se├žene─činin k─▒saltmas─▒).

GUI'den yapmay─▒ tercih ederseniz, git-gui kullanabilirsiniz . Taahh├╝tlere dahil etmek istedi─činiz par├žalar─▒ i┼čaretleyebilirsiniz. ┼×ahsen kullanmaktan daha kolay buluyorum git add -i . QGit veya GitX gibi di─čer git GUI'leri de bu i┼člevselli─če sahip olabilir.


242







git gui bu i┼člevi farkl─▒ g├Âr├╝n├╝mler alt─▒nda sa─člamaktad─▒r. ─░lgilendi─činiz sat─▒r (lara) sa─č t─▒klay─▒n ve "i┼člemek i├žin bu sat─▒r─▒ a┼čamal─▒" men├╝ ├Â─česini g├Ârmelisiniz.


136







Bunun git add -e myfile en kolay yol oldu─čuna inan─▒yorum (en az─▒ndan benim tercihim) ├ž├╝nk├╝ bir metin edit├Âr├╝ a├ž─▒yor ve hangi ├žizgiyi olu┼čturmak istedi─činizi ve hangisini yapmad─▒─č─▒n─▒z─▒ se├žmenizi sa─čl─▒yor. D├╝zenleme komutlar─▒yla ilgili olarak:

eklenen i├žerik:

Eklenen i├žerik "+" ile ba┼člayan ├žizgilerle g├Âsterilir. Herhangi bir ekleme sat─▒r─▒n─▒ silerek sahnelemeyi ├Ânleyebilirsiniz.

kald─▒r─▒lan i├žerik:

Kald─▒r─▒lan i├žerik "-" ile ba┼člayan ├žizgilerle g├Âsterilir. "-" i┼čaretini "" (bo┼čluk) 'a d├Ân├╝┼čt├╝rerek onlar─▒n kald─▒r─▒lmas─▒n─▒ ├Ânleyebilirsiniz.

de─či┼čtirilmi┼č i├žerik:

De─či┼čtirilen i├žerik "-" sat─▒rlarla (eski i├žeri─či kald─▒rarak) ve ard─▒ndan "+" sat─▒rlarla (de─či┼čtirilen i├žeri─či ekleyerek) g├Âsterilir. "-" Sat─▒rlar─▒ "" 'ye d├Ân├╝┼čt├╝rerek ve "+" sat─▒rlar─▒n─▒ kald─▒rarak de─či┼čiklik a┼čamas─▒n─▒ ├Ânleyebilirsiniz. ├çiftin sadece yar─▒s─▒n─▒n de─či┼čtirilmesinin endekste kafa kar─▒┼čt─▒r─▒c─▒ de─či┼čiklikler yapmas─▒ muhtemeldir.

Hakk─▒nda her detay git add mevcuttur git --help add


72







E─čer vim kullan─▒yorsan─▒z, ka├žak olarak adland─▒r─▒lan m├╝kemmel eklentiyi denemek isteyebilirsiniz .

Bir dosyan─▒n fark─▒n─▒ ├žal─▒┼čma kopyas─▒ ve index ile birlikte g├Ârebilir :Gdiff ve ard─▒ndan klasik vim diff komutlar─▒n─▒ kullanarak dizine sat─▒rlar veya ├Âbekler ekleyebilirsiniz dp . De─či┼čiklikleri dizine kaydedin ve ayn─▒ :Gcommit i┼člemi yap─▒n.

Burada ├žok iyi tan─▒t─▒m senaryolar─▒ var (bkz. B├Âl├╝m 2 ).


42







Atlassian'dan SourceTree kullanarak ┼čiddetle tavsiye ediyorum . (├ťcretsizdir.) Bunu ├Ânemsiz k─▒l─▒yor. Bireysel kod par├žalar─▒n─▒ veya tek tek kod sat─▒rlar─▒n─▒ h─▒zl─▒ ve kolay bir ┼čekilde a┼čamaland─▒rabilirsiniz.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


28


2014-08-12





Yeni bir dosya i├žin kullanmak git add --patch i├žin ilk ├Ânce dosyay─▒ dizinine eklemeniz gerekir : git add --intent-to-add

 git add -N file
git add -p file
 

24







├çok fazla de─či┼čikli─če sahip oldu─čumda ve de─či┼čikliklerden bir ka├ž taahh├╝t olu┼čturdu─čumda, bir ┼čeyleri sahnelemeden ├Ânce ba┼člang─▒├ž ÔÇőÔÇőnoktam─▒ ge├žici olarak kaydetmek istiyorum.

Bunun gibi:

 $ git stash -u
Saved working directory and index state WIP on master: 47a1413 ...
$ git checkout -p stash
... step through patch hunks
$ git commit -m "message for 1st commit"
$ git checkout -p stash
... step through patch hunks
$ git commit -m "message for 2nd commit"
$ git stash pop
 

Nedenmarrh'in cevab─▒ genellikle yapt─▒─č─▒m ┼čeydir, bazen ├žok fazla de─či┼čiklik var ve i┼čleri sahneleyken bir hata yapabilece─čimi s├Âyleyebilirim ve ikinci bir ge├ži┼č i├žin geri d├Ânebilece─čim kararl─▒ bir devlet istiyorum.


22







E─čer Emacs'─▒ kullanmak durumunda, bakmak Magit emacs'dan i├žin bir git aray├╝z sa─člar. Bu destekler hunks evreleme olduk├ža iyi (dosyalar─▒n par├žalar─▒).


12







Intellij IDEA (ve san─▒r─▒m serinin di─čer t├╝m ├╝r├╝nleri) v2018.1ÔÇÖden bu yana k─▒smi taahh├╝tler i├žin destek sa─člam─▒┼čt─▒r.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


10







Jdsumsion'un cevab─▒na benzer ┼čekilde, ┼ču anki ├žal─▒┼čman─▒z─▒ da saklayabilirsiniz ancak daha sonra se├žilen de─či┼čiklikleri saklamaktan ├žekmek i├žin meld benzeri bir difftool kullan─▒n. Bu ┼čekilde ├Ânsezi el ile ├žok kolay bir ┼čekilde d├╝zenleyebilirsiniz, bu durum a┼ča─č─▒daki durumlarda biraz ac─▒ vericidir git add -p :

 $ git stash -u
$ git difftool -d -t meld stash
$ git commit -a -m "some message"
$ git stash pop
 

Stash y├Ântemini kullanmak, kodunuz hala ├žal─▒┼č─▒yorsa, i┼čleme ba┼člamadan ├Ânce test etme f─▒rsat─▒ sunar.


8







Git Uzant─▒lar─▒ kullananlar i├žin :

Teslim Et penceresinde, k─▒smen i┼člemek istedi─činiz dosyay─▒ se├žin, ard─▒ndan sa─č b├Âlmede i┼člemek istedi─činiz metni se├žin, daha sonra se├žime sa─č t─▒klay─▒n ve i├žerik men├╝s├╝nden 'Se├žili sat─▒rlar─▒ se├ž' se├žene─čini se├žin.


8







vim-gitgutter eklentisi, vim edit├Âr├╝n├╝ kullanmadan k─▒saca sahne alabilir

 :GitGutterStageHunk
 

Bunun yan─▒ s─▒ra, baz─▒ modern IDE'lerde oldu─ču gibi bir diff i┼čareti s├╝tunu gibi di─čer harika ├Âzellikler sunar

─░fadenin sadece bir k─▒sm─▒ vim-ka├žak olarak sahnelenirsehttps://github.com/tpope/vim-fugitive

 :Gdiff
 

g├Ârsel aral─▒k se├žimine izin verir :'<,'>diffput ya da :'<,'>diffget bireysel hat de─či┼čikliklerini a┼čamaland─▒r─▒r / geri al─▒r.


6







Denedim git add -p filename.x , ama bir mac ├╝zerinde gitx'i ( http://gitx.frim.nl/ veya https://github.com/pieter/gitx ) tam olarak istedi─čim ├žizgileri i┼člemeyi daha kolay buldum.


5







TortoiseGit ile:

dosyaya sa─č t─▒klay─▒n ve kullan─▒n Context Menu Ôćĺ Restore after commit . Bu, dosyan─▒n oldu─ču gibi bir kopyas─▒n─▒ olu┼čturur. Ard─▒ndan dosyay─▒, ├Ârne─čin TortoiseGitMerge'de d├╝zenleyebilir ve taahh├╝t etmek istemedi─činiz t├╝m de─či┼čiklikleri geri alabilirsiniz. Bu de─či┼čiklikleri kaydettikten sonra dosyay─▒ kabul edebilirsiniz.


4







├ľnceki bir cevaba ekleyerek, komut sat─▒r─▒n─▒ kullanmay─▒ tercih git add -e myfile ederseniz, girmeniz size taahh├╝t etmek istediklerinizi sat─▒r sat─▒r se├žme se├žene─či sunar , ├ž├╝nk├╝ bu komut a┼ča─č─▒daki gibi farkl─▒l─▒klarla birlikte bir d├╝zenleyici a├žar:


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Bildi─činiz gibi ba┼člayan + sat─▒rlar eklentilerdir, ile ba┼člayan sat─▒rlar - silme i┼člemleridir. Yani:

  • Ekleme a┼čamas─▒na ge├žmemek i├žin bu sat─▒r─▒ silin.
  • Silme a┼čamas─▒na ge├žmemek - i├žin bo┼člukla de─či┼čtirin .

Bu git add -h ┼čekilde dosya ekleme hakk─▒nda ne diyor (dosya ekleyerek):

Eklenen i├žerik Eklenen i├žerik "+" ile ba┼člayan ├žizgilerle g├Âsterilir. Herhangi bir ekleme sat─▒r─▒n─▒ silerek sahnelemeyi ├Ânleyebilirsiniz.

kald─▒r─▒lan i├žerik: Kald─▒r─▒lan i├žerik "-" ile ba┼člayan ├žizgilerle g├Âsterilir. "-" i┼čaretini "" (bo┼čluk) 'a d├Ân├╝┼čt├╝rerek onlar─▒n kald─▒r─▒lmas─▒n─▒ ├Ânleyebilirsiniz.

de─či┼čtirilmi┼č i├žerik: De─či┼čtirilmi┼č i├žerik "-" sat─▒rlarla (eski i├žeri─či kald─▒rarak) ve ard─▒ndan "+" sat─▒rlarla (de─či┼čtirilen i├žeri─či ekleyerek) g├Âsterilir. "-" Sat─▒rlar─▒ "" 'ye d├Ân├╝┼čt├╝rerek ve "+" sat─▒rlar─▒n─▒ kald─▒rarak de─či┼čiklik a┼čamas─▒n─▒ ├Ânleyebilirsiniz. ├çiftin sadece yar─▒s─▒n─▒n de─či┼čtirilmesinin endekste kafa kar─▒┼čt─▒r─▒c─▒ de─či┼čiklikler yapmas─▒ muhtemeldir.

Dikkat: Dosyan─▒n i├žeri─čini de─či┼čtirmeyin, bunun i├žin uygun bir yer de─čil. Sadece silinen veya eklenen sat─▒rlar─▒n operat├Ârlerini de─či┼čtirin.


4







─░├žin Atom kullan─▒c─▒lar─▒, paket github tarz─▒nda interaktif kademelendirme i├žerir git gui . K─▒sayollar i├žin paketin belgelerine bak─▒n .

Atom kullanmak, koyu arka plan─▒ olan (varsay─▒lan olarak git gui beyaz arka plan─▒ olan) bir temayla ├žal─▒┼čman─▒za izin verir .


3







Bu sorunun sorulmas─▒ndan bu yana 10 y─▒l ge├žti. Ve umar─▒m bu cevap birileri i├žin faydal─▒ olacakt─▒r. Cevapta belirtildi─či ├╝zere burada GUI bir se├ženek olmad─▒─č─▒ durumlarda, Andrew Shadura en crecord uzatma biz i┼člemek i├žin ├žizgileri se├žebilece─činiz bir ncurses'in penceresini getirir.

Uzant─▒y─▒ a┼ča─č─▒daki gibi ayarlay─▒n:

 git clone https://github.com/andrewshadura/git-crecord
cd git-crecord
./setup.py install
ln -s $PWD/git-crecord ~/.local/bin/git-crecord
 

git repo'nuza cd yaz─▒n ve a┼ča─č─▒daki gibi ├ža─č─▒r─▒n:

 git crecord
 

Bu, a┼ča─č─▒da g├Âsterildi─či gibi kullan─▒labilecek ncurses aray├╝z├╝n├╝ getirir. Ncurses penceresinde a┼ča─č─▒daki tu┼člara basmak belirli i┼člemleri yapar:

 f       hunk toggle fold (arrow keys can also be used)
space   toggle hunk selection
a       toggle commit or amend
c       confirm and open commit window
 

├ľrnek kullan─▒m g├Âsteren screencast
├ľrnek


3


2019-03-24





Emacs i├žin ayr─▒ca gitsum var


2


2009-07-12





git-meld-index - web sitesinden al─▒nt─▒:

git-meld-index meld - veya herhangi bir git difftool (kdiff3, diffuse, vb.) - git indeksinde (git a┼čama alan─▒ olarak da bilinir) etkile┼čimli olarak a┼čama a┼čama yapman─▒z─▒ sa─člamak i├žin ├žal─▒┼č─▒r.

Bu, git add -p ve git add --interactive'in i┼člevselli─čine benzer. Baz─▒ durumlarda meld, git add -p'den daha kolay / h─▒zl─▒ kullan─▒l─▒r. Bunun nedeni, meld'in ├Ârne─čin:

  • daha fazla i├žerik g├Ârmek
  • sat─▒r i├ži farklar─▒ g├Âr├╝n
  • elle d├╝zenleyin ve 'canl─▒' fark g├╝ncellemelerini g├Âr├╝n (her tu┼ča bas─▒ld─▒ktan sonra g├╝ncellenir)
  • atlamak istedi─činiz her de─či┼čikli─če 'n' demeden bir de─či┼čikli─če gidin

kullan─▒m

Git deposunda, ko┼č:

 git meld-index
 

Meld (veya sizin yap─▒land─▒r─▒lm─▒┼č git difftool) 'unun a├ž─▒ld─▒─č─▒n─▒ g├Âreceksiniz:

LEFT : ├žal─▒┼čma dizininden kopyalanan ge├žici dizinde ├žal─▒┼čan dosyalar

SA─× : dizinin i├žeri─čini i├žeren ge├žici dizin. Bu, ayn─▒ zamanda hen├╝z dizinde bulunmayan ancak ├žal─▒┼čan kopyada de─či┼čtirilen veya izlenmeyen dosyalar─▒ da i├žerir - bu durumda, dosya i├žeri─čini HEAD'den g├Âr├╝rs├╝n├╝z.

Mutlu olana kadar dizini (sa─č taraf) d├╝zenleyin. Gerekti─činde tasarruf etmeyi unutmay─▒n.

─░┼činiz bitti─činde, meld'i kapat─▒n ve git-meld-index, dizini, d├╝zenledi─činiz meld'in sa─č taraf─▒ndaki ge├žici dizinin i├žeri─čiyle e┼čle┼čecek ┼čekilde g├╝nceller.


2







Yukar─▒daki cevaplardan birinin g├Âsterdi─či gibi kullanabilirsiniz. git add --patch filename.txt

veya k─▒sa form git add -p filename.txt

... ama zaten deponuzdaki dosyalar i├žin, ss do─črudan komut sat─▒r─▒nda --patch flag'─▒ kullanmaktan daha iyidir (git'in yeterince yeni bir s├╝r├╝m├╝n├╝ kullan─▒yorsan─▒z): git commit --patch filename.txt

... veya yine k─▒sa form git commit -p filename.txt

... ve daha sonra s├Âz konusu anahtarlar─▒ kullanarak (y / n vb.), sat─▒ra dahil edilecek sat─▒rlar─▒ se├žmek i├žin kullan─▒n.


1







A├ž─▒ksa Windows platformu, bence git gui ├žok iyi bir ara├ž oldu─čunu stage / commit dan birka├ž sat─▒r unstaged dosyas─▒

1. ─░ri bilge:

  • unstagged Changes B├Âl├╝m├╝nden dosyay─▒ se├žin
  • Haz─▒rlanmas─▒ gereken kod y─▒─č─▒n─▒n─▒ sa─č t─▒klay─▒n
  • se├žmek Stage Hunk for commit

2. Çizgi bilge:

  • unstagged Changes B├Âl├╝m├╝nden dosyay─▒ se├žin
  • Haz─▒rlanacak ├žizgiyi / ├žizgileri se├žin
  • Sa─č t─▒klay─▒n ve se├žin Stage Lines for commit

3. E─čer tam bir dosyay─▒ birka├ž sat─▒r hari├ž yerle┼čtirmek istiyorsan─▒z:

  • unstagged Changes B├Âl├╝m├╝nden dosyay─▒ se├žin
  • Bas─▒n Ctrl+T (Stage file to commit)
  • Se├žilen dosya ┼čimdi Staged Changes B├Âl├╝me ta┼č─▒n─▒r
  • Haz─▒rlanacak ├žizgiyi / ├žizgileri se├žin
  • Sa─č t─▒klay─▒n ve se├žin UnStage Lines for commit

1







git-cola harika bir GUI'dir ve yerle┼čik olarak da bu ├Âzelli─če sahiptir. Sadece sahneye ├ž─▒kacak sat─▒rlar─▒ se├žin ve tu┼čuna bas─▒n S. Se├žim yap─▒lmazsa, tam hunk sahnelenir.


0



─░lgili yay─▒nlar


Java'daki bir Dizinin yaln─▒zca bir par├žas─▒n─▒ al?

Git ile yeni bir dosyan─▒n sadece bir b├Âl├╝m├╝n├╝ nas─▒l a┼čamal─▒ hale getirin

sadece yerel git taahh├╝tlerinin bir k─▒sm─▒n─▒ nas─▒l zorlars─▒n?

Git'te, ge├žerli i┼člem karmas─▒n─▒ ayn─▒ i┼člemdeki bir dosyaya nas─▒l yazabilirim

Dev anl─▒k g├Âr├╝nt├╝ i├žin tablolar─▒n yaln─▒zca b├Âl├╝mlerinin d├Âk├╝m├╝

Bir ├ževiri biriminin sadece bir k─▒sm─▒ i├žin GCC uyar─▒lar─▒n─▒ se├žici olarak devre d─▒┼č─▒ b─▒rak?

Git & Intellij, De─či┼čen bir dosyan─▒n sadece par├žalar─▒n─▒ nas─▒l i┼čleyebilirim?

Python unittest: nas─▒l bir test dosyas─▒n─▒n sadece bir k─▒sm─▒ ├žal─▒┼čt─▒r─▒l─▒r?

Pycharm: Python dosyam─▒n sadece bir b├Âl├╝m├╝n├╝ ├žal─▒┼čt─▒r

Kar┼č─▒la┼čman─▒n sadece bir k─▒sm─▒ python re.sub ile nas─▒l de─či┼čtirilir?

Etiketle ilgili di─čer sorular [git]


TypeScript nedir ve neden JavaScript yerine kullanay─▒m? [kapal─▒]

Git onay─▒ndan dosyalar─▒ kald─▒r

S├Âzler ve G├Âzlenebilirler aras─▒ndaki fark nedir?

Git stash pop ve git stash aras─▒ndaki fark uygulan─▒r

ASP.NET Web Sitesi veya ASP.NET Web Uygulamas─▒?

Sublime Text 2'de varsay─▒lan s├Âzdizimini farkl─▒ dosya t├╝r├╝ne ayarla

Arr .__ len __ () Python'da bir dizinin uzunlu─čunu almak i├žin tercih edilen y├Ântem midir?

Python'daki [duplicate] listedeki benzersiz de─čerleri al

JavaScriptÔÇÖin ÔÇťyeniÔÇŁ anahtar kelimesi zararl─▒ olarak m─▒ kabul edilir? [kapal─▒]

Python's stdlib'i kullanarak yerel IP adreslerini bulma