2010-05-01 17 views
7

Ad esempio, mi piace modificare la pagina di accesso, quindi mi registra automaticamente.Come apportare modifiche che solo io posso vedere?

Desidero che le modifiche a SOLO funzionino sulla mia postazione di sviluppo e non siano visibili in push. se lo faccio su un ramo di quanto avrei dovuto in un modo o nell'altro unire questa modifica prima di ogni push.

è supportato da git?

risposta

2

Perché non utilizzare l'installazione a gitattributes filter driver?

smudge

Ogni volta alla cassa la directory, controllerà tramite uno script nella fase smudge) per quel file (e solo quel file) se certa condizione è soddisfatta (come in "questo è o non è la tua stazione di sviluppo ") e modificherà il contenuto di conseguenza.
Il passaggio clean ripristinerebbe il suo contenuto o almeno ignorerebbe quella particolare modifica.

+0

proverò a quello, thx – IAdapter

0

Non sono sicuro di aver capito la domanda: perché non puoi diramarti? Avere il master il tuo ramo principale, pubblico e continuare a ribasare il tuo ramo privato su master (o unire master con il tuo ramo privato). Non portare mai le tue possibilità a master, portare solo modifiche da master al tuo ramo privato.

Se si apportano modifiche sul ramo privato che si desidera condividere con master, non è un problema selezionare le modifiche sul master.

+1

ma in questo modo dovrò SEMPRE ricordarmi di NON includere quel cambiamento (e me ne dimenticherò prima o poi). c'è un modo per scrivere script per ignorare questa modifica nella fusione? – IAdapter

+0

Se si desidera realmente bloccare l'esposizione di tali modifiche, è possibile clonare il repository altrove, ma non aggiungere alcun remoto in quel clone che punta a un repository pubblico. Quindi, qualsiasi modifica apportata in quel repository rimane lì: non c'è un telecomando che puoi spingere.Ovviamente, è ancora possibile ottenere queste modifiche se si estrae da quel clone privato, ma ciò richiederebbe un diverso tipo di atto esplicito rispetto a quello che si fa normalmente. Di solito _push_ i tuoi repository locali su pubblici, non _pull_ dai tuoi cloni locali su altri repository locali. – wilhelmtell

7

Se si dispone di almeno Git 1.7.0, potreste gradire questo po 'di 'idraulico':

git update-index --skip-worktree -- path 

Dal git update-index manpage under “Skip-worktree bit”: bit

Skip-worktree può essere definito in uno (lunga) frase: quando si legge una voce, se è contrassegnata come skip-worktree, Git fa finta che la sua versione di directory di lavoro sia aggiornata e legga invece la versione dell'indice .

Per elaborare, "lettura" significa verificare la presenza di file, leggere gli attributi del file o il contenuto del file. La versione della directory di lavoro potrebbe essere presente o assente.

Il "bit di skip-worktree" è la base per lo sparse checkout mechanism documented in the git read-tree manpage`.


C'è un relativo ‘un po’ nelle vecchie versioni di Git (git update-index --assume-unchanged), ma non dovrebbe essere utilizzato per lo scopo del PO. It seems like it might be useful for the OP's situation, ma Git's maintainer has said that its contract (the “promise”) makes it unsuitable for such purposes.

+0

Immagino che la seconda riga dovrebbe essere: 'git update-index --skip-worktree - path' ? – wilhelmtell

+0

@WilhelmTell: Sì, grazie. Fisso. –

Problemi correlati