2012-07-18 15 views
17

Sto rivedendo manualmente un numero enorme di modifiche (nei 1000) effettuate da uno script di ricerca e sostituzione su alcuni cataloghi di messaggi. Al momento sto facendo git add -p, ma continuo a fare pause per controllare altri file o regolare lo script, quindi lo sto alternando con git checkout -p per scartare le modifiche che non desidero. C'è un modo per combinare i due? Cioè per ogni pezzo voglio l'opzione per metterlo in scena o scartarlo.Simultaneamente git add -p e git checkout -p

+0

Ho lo stesso problema. Usando 'git add -p' per selezionare alcuni hunks che vorrei nel mio primo commit. Passando a 'git checkout -p' per scartarne alcuni. Aggiungere altro Esegui commit e quindi aggiungi tutto ciò che rimane per un secondo commit. Sarebbe bello combinare aggiungere e checkout! – Tieme

risposta

-1

fase tutto ciò che serve, commit e quindi ripristinare o stash per pulire la directory di lavoro per sbarazzarsi di ciò che non è necessario.

4

Se si utilizza Windows o Mac OS, è possibile utilizzare l'app SourceTree GUI gratuita che consente di mettere in scena o eliminare ogni hunk (o anche selezionare le righe da ciascun hunk) nella visualizzazione diff.

Stage/Discard hunk

+0

Sì, sarebbe una soluzione. Stavo cercando una soluzione cli. Bu grazie comunque :) – Tieme

0

come circa digitando j - leave this hunk undecided, see next undecided hunk per fusti che non si desidera mettere in scena, e dopo tutti questi, eseguire git checkout --, poi andrà in scena quei grossi pezzi selezionati, e altri scartati.

quando si utilizza git add -p, digitando ? mostrerà l'aiuto

Stage this hunk [y,n,q,a,d,/,e,?]? 
y - stage this hunk 
n - do not stage this hunk 
q - quit, do not stage this hunk nor any of the remaining ones 
a - stage this and all the remaining hunks in the file 
d - do not stage this hunk nor any of the remaining hunks in the file 
g - select a hunk to go to 
/- search for a hunk matching the given regex 
j - leave this hunk undecided, see next undecided hunk 
J - leave this hunk undecided, see next hunk 
k - leave this hunk undecided, see previous undecided hunk 
K - leave this hunk undecided, see previous hunk 
s - split the current hunk into smaller hunks 
e - manually edit the current hunk 
? - print help 
+0

Sempre usando 'j' per tutti gli hunks che non vuoi mettere in scena ti metteranno in loop ... Potresti usare' n' per alle che non vuoi mettere in scena e poi poi 'git checkout -> in seguito, in effetti .. ma non funzionerà per il caso che ho cercato di descrivere nel mio commento al di sotto della domanda. – Tieme

0

Hai avuto uno sguardo al git gui. Si tratta di un'utilità che viene fornita in bundle con git in questi giorni e cerca di semplificare le operazioni complesse che sono mix di gestione e checkout. Puoi leggere a riguardo here

Puoi scegliere di mettere in scena un blocco e scartare il resto delle modifiche. Effettuando ctrl + j o cmd + j è possibile eseguire il checkout del file selezionato.

So che è molto più veloce usare git da shell, ma in casi complessi come questi, il passaggio da un comando all'altro diventa un overhead.