Cosa significa "Modifiche non messe in scena per il commit"


239

Ho pensato che se volessi tracciare i file dovresti git add [files you want to track]

Non so perché ho ricevuto i messaggi Changes not staged for commit.

Se quei file non sono stati messi in scena, non dovrebbe gitmostrarmi che quei file erano Untrackedcosì

inserisci qui la descrizione dell'immagine

Tutto quello che ho fatto è stato creare una nuova funzionalità da developBranch e lavorare in feature/change_excel_formatBranch

Ho pensato che quei file dovrebbero essere nello stagedstato,

Ma git statusme lo ha dettoChanges not staged for commit

inserisci qui la descrizione dell'immagine

A breve, so solo ci sono 3 tappe in git untracked, staged, committed Uno può dirmi, qual è stata la tappa perChanges not staged for commit inserisci qui la descrizione dell'immagine

Quindi se ho modificato il file a (già nel repository)

e digita git st, me lo dirà il gitChanges not staged for commit

se io git aallora il file asarà instaged status

se ho modificato file aora, ci saranno due stati di file ain git, giusto?

Quindi devo decidere se effettuare il staged acommit o rendere la not stage amessa in scena, e quindi la messa file ain scena precedente verrà scartata?

inserisci qui la descrizione dell'immagine


3
se ricevi questo messaggio e desideri che questo file (a) debba essere eseguito il commit, assicurati di
trovarti

Risposte:


325

quando si modifica un file che è già nel repository, è necessario git addfarlo di nuovo se si desidera che venga messo in scena.

Ciò consente di eseguire il commit solo di un sottoinsieme delle modifiche apportate dall'ultimo commit. Ad esempio, supponiamo che tu abbia file a, file be file c. Modifichi file ae file bma le modifiche sono di natura molto diversa e non vuoi che siano tutte in un unico commit. Emetti

git add a
git commit a -m "bugfix, in a"
git add b
git commit b -m "new feature, in b"

Come nota a margine, se vuoi impegnare tutto ciò che puoi semplicemente digitare

git commit -a

Spero che sia d'aiuto.


1
Quindi, se quei file sono alreday in repo. e li ho cambiati, posso anche git commit THEMdirettamente senza aggiungerli, giusto?
newBike

1
ovviamente. E in quel caso verrebbero impegnati solo i file elencati, indipendentemente dalla presenza di modifiche graduali in file diversi.
Stefano Falasca,

1
Ho lo stesso problema, ma il mio problema riguardava anche la causa del sottomodulo di file non tracciati. Quindi nella mia sottodirectory aggiungo anche tutte le modifiche con git e il problema è andato.
elia,

1
Ho già fatto git clean -fde lo sto ancora ottenendo. Voglio sbarazzarmi di tutti i cambiamenti. Cos'altro dovrei fare?
Miele

3
git commit -anon impegna tutto, solo i file aggiornati, non i nuovi ...
Martin

62

Devi usare git add per metterli in scena, altrimenti non si impegneranno. Supponiamo che informi git quali sono le modifiche che si desidera eseguire.

git add -u :/aggiunge tutte le modifiche ai file modificati sullo stage git add * :/aggiunge modifiche e tutti i nuovi file (che non sono gitignore) allo stage


2
Questa risposta è chiara e concisa rispetto a quella sopra, ecco perché la adoro. ;)
oaxacamatt il

13

È un altro modo in cui Git ti dice:

Ehi, vedo che hai apportato alcune modifiche, ma tieni presente che quando scrivi pagine nella mia cronologia, tali modifiche non saranno presenti in queste pagine.

Le modifiche ai file non vengono gestite se non esplicitamente git add (e questo ha senso).

Quindi, quando tu git commit, quelle modifiche non verranno aggiunte poiché non vengono messe in scena. Se vuoi impegnarli, devi prima metterli in scena (es. git add).


2
Ma non ho modificato il file a cui fa riferimento
Eoin

1
Non capisco come abbia senso questo comportamento. Se ho già detto a Git di tenere traccia di un file eseguendo add .quando ho configurato la repostiry e è in grado di rilevare che ho apportato delle modifiche, perché devo aggiungere esplicitamente file ogni volta che commetto? Solo per fare una modifica a un file, devo add, commit e push . La demarcazione tra commite spinta ha senso per me, la demarcazione tra adde commitsembra ridicolmente ridondante.
Prometeo

1
@Hashim Sono d'accordo, davvero non capisco la logica.
Herman Toothrot,

6

Seguire i passaggi seguenti:

1- git stash
2- git add.
3- git commit -m "il tuo messaggio di commit"


5
git stash ha rimosso tutte le mie modifiche, c'erano 10 ore di lavoro :(
viniciussvl

13
se hai usato "git stash" ha messo quelle modifiche in un "luogo temporaneo" per recuperarle, basta digitare "git stash pop" per ottenere il tuo cambiamento dal "luogo temporaneo"
Cyrus Zei,

12
NON USARE git stash fino a quando non leggi @viniciussvl e il commento di Cyrus
squallido

1
Perché dovrei anche usare git stash in questo caso?
Tobias Kaufmann

4

Suppongo che tu abbia salvato le modifiche di un nuovo file. (ad esempio navbar.component.html)

Correre:

ng status
modified:   src/app/components/shared/navbar/navbar.component.html

Se vuoi caricare quelle modifiche per quel file devi eseguire:

git add src/app/components/shared/navbar/navbar.component.html

E poi:

git commit src/app/components/shared/navbar/navbar.component.html -m "new navbar changes and fixes"

E poi:

git push origin [your branch name, usually "master"]

-------------------------------------------------- -------------

O se desideri caricare tutte le modifiche (diversi / tutti i file):

git commit -a

E loro questo apparirà "Inserisci il messaggio di commit per le tue modifiche".

  • Vedrai questo messaggio se esegui il commit senza un messaggio (-m)
  • Puoi uscirne con due passaggi:
  • 1.a. Digita un messaggio multilinea per spostarti avanti con il commit.
  • 1.b. Lascia vuoto per interrompere il commit.
    1. Premi "esc" quindi digita ": wq" e premi invio per salvare la tua scelta. Viola!

E poi:

git push

E viola!


2
Lo stesso ho detto sopra: git commit -anon carica tutte le modifiche, non include i nuovi file. Commetterà gli aggiornamenti solo su file esistenti.
Martin,

3

Prova a seguire int git bash

1.git add -u :/

2.git commit -m "your commit message"

  1. git push -u origin master

Nota: se non è stato inizializzato il repository.

Prima di tutto

git init 

e seguire i passaggi sopra menzionati in ordine. Questo ha funzionato per me


Questo problema ha funzionato per me, in un conflitto git in cui non ero in grado di eliminare un file dal mio repository locale e commettere dal repository locale al ramo master remoto.
Siwoku Adeola,

1

significa che non sono stati aggiunti per essere impegnati, dovrai fare git aggiungere script / excel_parser.py e cose simili per metterli in scena .. una volta messi in scena quando fai lo stato git saranno messi in scena e git commit li commetterà

di voi potete usare commit -a -m "all checkin" che metterà automaticamente in scena e impegnerà tutti i file nella struttura


1

Potresti visualizzare questo errore quando hai aggiunto un nuovo file al tuo codice e ora stai provando a eseguire il commit del codice senza gestirlo (aggiungendolo).

Per ovviare a questo, puoi prima aggiungere il file usando git add ( git add your_file_name.py) e quindi eseguire il commit delle modifiche ( git commit -m "Rename Files" -m "Sample script to rename files as you like")


1

Ho letto tutte le risposte di cui sopra e ho provato nel terminale seguendo i passaggi che funzionano bene per l'aggiornamento di nuovi file e modifiche sul master.

1) aggiungi git. 2) git commit -m "il tuo messaggio" 3) git push origin master

Spero che questo ti aiuta.



-7

Rimuovere dir/.../.git

per me va bene.


la tua risposta richiede informazioni di base o informazioni sul perché o sul modo in cui ha funzionato per te.
Joshua K,

Così com'è, la risposta non supporta la domanda. Si prega di considerare di modificare o aggiungere ulteriori informazioni.
Francisco Maria Calisto,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.