Sono un nuovo programmatore in una squadra. E al mio primo giorno ho questo file rinominato all'interno di uno stadio, pronto per essere commessi da git:File rinominati all'interno git
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
new file: reports/SQLS.rar
renamed: account/enter_rules.php -> enter_rules.old.php
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: account/enter_rules.old.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
account/enter_rules.php
Per le prime 2 righe non ho alcun problema. So cosa sta succedendo. Ma per l'ultimo rinominato:, non sono sicuro di cosa si debba fare. Il sistema funziona bene.
All'interno della directory di lavoro che ho:
account/enter_rules.php
non riesco a trovare il file enter_rules.old.php.
Sembra che l'altro programmatore abbia creato una copia dal file, chiamata reale come .old, fatta alcuni test e nuovo codice, che ha messo in scena le modifiche e ha dimenticato di eseguire il commit. Di quanto ha eliminato manualmente il vecchio.php
Quale dovrebbe essere l'approccio migliore per affrontare questa situazione? Vorrei mettere in chiaro lo stato di git prima di iniziare a lavorare su di esso e apportare le mie modifiche.
Ho trovato questo post ma non sono sicuro se dovrei o potrei impegnarmi nella mia situazione. Handling file renames in git
Dopo leggere tutti i suggerimenti, che mi hanno aiutato molto, questo è quello che ho fatto:
- Ho appena fatto una copia (solo per sicuro) dal file
enter_rules.php
- I " detto "to git (all'INDICE) che il nome del file è stato cambiato.
$git commit -m "committing name changes"
. A questo punto non lo so, è stato cancellato .old. - Quindi ho digitato
$git rm "account/enter_rules.old.php"
per risolvere la riga: Modifiche non organizzate per il commit:. Allo stesso modo usiamo$git add .
per "dire" a git di tracciare un<file>
, dovremmo usare$git rm <file>
per "dire" a git di dimenticare questo<file>
. - Quindi ho digitato
$git status
e ho ricevuto il messaggio VERDE: eliminato: account/enter_rules.old.php. Quindi dovrei dire all'indice che il file .old è stato rimosso. Ho digitato$git commit -m "committing delete changes"
- Ora git sa che enter_rules.php stato rinominato in enter_rules.old.php e poi enter_rules.old.php è stato rimosso (cancellato).
- Quindi ho risolto l'ultima riga (File non tracciati :). Ho appena detto di creare un nuovo file creato e chiama enter_rules.php. Ho aggiunto e commesso come dovrebbe essere.
Tutti i suggerimenti mi hanno aiutato a risolvere il problema, quindi cercherò di essere giusto e darò il controllo a chi ha meno punti.
Questo è molto strano. In base a ciò che stai dicendo e a quale 'stato git' mostra, sembra che il tuo collega abbia eseguito' git mv enter_rules.php enter_rules.old.php' e poi copiato quel file su enter_rules.php? Perchè lo farebbe? – DIMMSum
Giusto per essere chiari. Non * hai bisogno di 'enter_rules.old.php' ma hai bisogno di' account/enter_rules.php', corretto? – DIMMSum
Ciao Decavo, ho cambiato le informazioni. Dovrei incollare tutto l'output git. Sembra che abbia creato una copia dal file e abbia chiamato .old.php. Di lui ha apportato alcune modifiche nel codice. Forse ha funzionato. Poi ha cancellato il file .old e aggiunto allo stage. Non so esattamente cosa sia successo. Ma ora ho questa situazione che vedi nel git dell'output. – zwitterion