Domanda

Posso ignorare i file in locale senza inquinare la configurazione git globale per tutti gli altri? Ho i file non monitorate che sono spam nella mia git status, ma io non voglio commettere cambiamenti git configurazione per ogni singolo piccolo file non monitorate a caso ho tra le sedi locali.

È stato utile?

Soluzione

la documentazione relativa Git :

  

I modelli che sono specifiche per un particolare repository, ma che non hanno bisogno di essere condiviso con altri repository correlate (ad esempio, file ausiliari che vivono all'interno del repository, ma sono specifici per il flusso di lavoro di un utente) dovrebbero andare nel file $GIT_DIR/info/exclude.

Il file .git/info/exclude ha lo stesso formato di un file .gitignore. Un'altra opzione è quella di impostare core.excludesFile al nome di un file contenente i modelli globali.

Nota, se si dispone già di modifiche unstaged è necessario eseguire il seguente dopo la modifica ignorare-modelli:

git update-index --assume-unchanged [<file>...]

Nota sulla $GIT_DIR : Questa è una notazione usata tutto manuale git semplicemente per indicare il percorso del repository git. Se è impostata la variabile d'ambiente, allora avrà la precedenza la posizione di qualsiasi repo si trovi, che probabilmente non è quello che vuoi.

Altri suggerimenti

Aggiorna : Si consiglia di utilizzare git update-index --skip-worktree [<file>...] invece, grazie @danShumway! Vedere spiegazione di Borealid sulla differenza delle due opzioni .


Old risposta:

Se è necessario ignorare le modifiche locali ai file monitorati (abbiamo che con modifiche locali ai file di configurazione), l'uso git update-index --assume-unchanged [<file>...].

Aggiungere le seguenti righe alla sezione [alias] del file .gitconfig

ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"

Ora è possibile utilizzare git ignore my_file per ignorare le modifiche al file locale, e git unignore my_file per smettere di ignorare le modifiche. git ignored elenca i file ignorati.

Questa risposta è stata raccolte da http://gitready.com/intermediate/2009/ 18/02 / temporaneamente-ignorando-files.html .

Sono disponibili diverse opzioni:

  • Lascia uno sporco (o impegnati) File .gitignore nella vostra dir di lavoro (o di applicarlo automaticamente utilizzando topgit o qualche altro strumento di questo tipo di patch).
  • Mettere le esclude nel file $GIT_DIR/info/exclude, se questo è specifico per un albero.
  • Esegui git config --global core.excludesfile ~/.gitignore e aggiungere modelli al vostro ~/.gitignore. Questa opzione è valida se si desidera ignorare certi schemi attraverso tutti alberi. Io lo uso per i file .pyc e .pyo, per esempio.

Inoltre, assicurarsi che si sta utilizzando modelli e non enumerare in modo esplicito i file, se del caso.

Penso che si sta cercando:

git update-index --skip-worktree FILENAME

che ignorare le modifiche apportate locale

Ecco http://devblog.avdi.org / 2011/05/20 / / ulteriori spiegazioni su questi soluzione keep-locali-modifiche-in-git-files-rintracciato!

È possibile installare alcuni git alias per rendere questo processo più semplice. Questa modifica al nodo [alias] del file .gitconfig.

git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'

Le scorciatoie questo installa per voi sono i seguenti:

  • git ignore config.xml
    • git finta che non vede alcuna modifica su config.xml -. Impedisce di commettere accidentalmente le modifiche
  • git unignore config.xml
    • git riprenderà riconoscendo le modifiche a config.xml - permettendo ancora una volta a commettere tali modifiche
    • .
  • git ignored
    • git elencherà tutti i file che si sta "ignorando" nel modo descritto sopra.

Ho costruito queste, facendo riferimento alla risposta di phatmann -. Che presenta una versione --assume-unchanged dello stesso

La versione vi presento utilizza --skip-worktree per ignorare le modifiche locali. Vedi di Borealid risposta per una spiegazione completa della differenza, ma essenzialmente lo scopo di --skip-worktree è per gli sviluppatori per cambiare i file senza il rischio di commettere i loro cambiamenti .

Il comando git ignored qui presentata utilizza git ls-files -v, e filtra l'elenco per mostrare solo quelle voci che iniziano con il tag S. Il tag S denota un file il cui stato è "saltare worktree". Per un elenco completo degli stati di file indicati da git ls-files: vedere la documentazione per l'opzione -t su git ls-files .

Si può semplicemente aggiungere un file .gitignore alla vostra directory home, vale a dire $HOME/.gitignore o ~/.gitignore. Poi dire git di utilizzare tale file con il comando:

git config --global core.excludesfile ~/.gitignore

Questo è un file .gitignore normale che i riferimenti git momento di decidere cosa ignorare. Dal momento che è nella vostra home directory, si applica solo a voi e non inquina qualsiasi progetto .gitignore file.

Ho usato questo metodo per anni con grandi risultati.

Se il pronti contro termine non dispone già di un file .gitignore, quindi una soluzione semplice è quella di creare un file .gitignore, e in essa aggiungere .gitignore alla lista dei file da ignorare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top