O que significa "Alterações não preparadas para confirmação"

239

Eu pensei que se você quiser acompanhar os arquivos, você deveria git add [files you want to track]

Não sei por que recebi as mensagens Changes not staged for commit.

Se esses arquivos não foram testados, não devem me gitmostrar que esses arquivos eram Untrackedassim

insira a descrição da imagem aqui

Tudo o que fiz foi criar um novo recurso do developbranch e trabalhar no feature/change_excel_formatbranch

Eu pensei que esses arquivos deveriam estar no stagedstatus,

Mas git statusme disseChanges not staged for commit

insira a descrição da imagem aqui

Para breve, eu só sei que há 3 fases git untracked, staged, committed qualquer um pode me dizer, qual foi o palco em deChanges not staged for commit insira a descrição da imagem aqui

Então, se eu modifiquei o arquivo a (já no repositório)

e tipo git st, o git vai me dizerChanges not staged for commit

se eu git aentão o arquivo aestarástaged status

se eu modifiquei o file aagora, haverá dois status de file ain git, certo?

Então, eu tenho que decidir se o staged acommit deve ser feito ou o que not stage adeve ser encenado, e o encenado anterior file aserá descartado?

insira a descrição da imagem aqui

nova bicicleta
fonte
3
Se receber esta mensagem, e você quer esta imagem (a) precisa se comprometer, verifique se você está no caminho do diretório correto (caminho raiz do projeto para adicionar todos), enquanto você git add
Sadee

Respostas:

325

Quando você altera um arquivo que já está no repositório, é necessário git add fazê lo novamente se quiser que ele seja preparado.

Isso permite que você confirme apenas um subconjunto das alterações feitas desde a última confirmação. Por exemplo, digamos que você tenha arquivo a, arquivo be arquivo c. Você modifica arquivo ae arquivo, bmas as alterações são de natureza muito diferente e não deseja que todas elas estejam em uma única confirmação. Você emite

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

Como uma observação lateral, se você quiser confirmar tudo, basta digitar

git commit -a

Espero que ajude.

Stefano Falasca
fonte
1
Portanto, se esses arquivos já estiverem no repositório. e eu mudei, eu também posso git commit THEMdiretamente sem adicioná-los, certo?
newBike
1
claro. E, nesse caso, apenas os arquivos listados seriam confirmados, independentemente da presença de alterações em etapas em arquivos diferentes.
Stefano Falasca
1
Eu tenho o mesmo problema, mas meu problema também era sobre a causa do submódulo de arquivos não rastreados. Então, no meu subdiretório, também adiciono todas as alterações com o git e o problema foi resolvido.
Elia
1
Eu já fiz git clean -fde ainda estou conseguindo isso. Eu quero me livrar de todas as mudanças. O que mais eu deveria estar fazendo?
Mel
3
git commit -anão comprometer tudo, apenas os ficheiros actualizados, não os novos ...
Martin
62

Você precisa usar o git add para encená-los, ou eles não serão confirmados. Suponha que ele informe ao git quais são as alterações que você deseja confirmar.

git add -u :/adiciona todas as alterações de arquivo modificadas ao estágio git add * :/adiciona modificados e todos os novos arquivos (que não são atribuídos a ele) ao estágio

Dannie
fonte
2
Esta resposta é clara e concisa em comparação com a acima, é por isso que eu a amo. ;)
oaxacamatt
13

É outra maneira de o Git lhe dizer:

Ei, vejo que você fez algumas alterações, mas lembre-se de que quando você escreve páginas no meu histórico, essas alterações não estarão nessas páginas.

As alterações nos arquivos não serão testadas se você não explicitamente git add(e isso faz sentido).

Portanto, quando você git commit, essas alterações não serão adicionadas, pois não são organizadas. Se você deseja comprometê-los, é necessário prepará-los primeiro (por exemplo, git add).

Agis
fonte
2
Mas eu não mudei o arquivo que está
fazendo
1
Não entendo exatamente como esse comportamento faz sentido. Se eu já disse ao Git para rastrear um arquivo add .ao configurar o repostiry, e ele pode detectar que eu fiz alterações, por que preciso adicionar arquivos explicitamente toda vez que eu confirmar? Apenas para fazer uma alteração em um arquivo, eu tenho que add, commit e push . A demarcação entre commite empurrar faz sentido para mim, a demarcação entre adde commitparece ridiculamente redundante.
Prometheus
1
@Hashim Eu concordo, eu realmente não entendo a lógica.
Herman Toothrot
6

Siga os passos abaixo:

1- git stash
2- git add.
3- git commit -m "sua mensagem de commit"

Mam's
fonte
5
O git stash removeu todas as minhas alterações, e foram 10 horas de trabalho :(
viniciussvl
13
se você usou "git stash" que colocar essas mudanças em um "lugar temp" para recuperá-los basta digitar "git pop esconderijo" para obter a sua mudança do "lugar temp"
Cyrus Zei
12
Não use git stash até que você leia @viniciussvl e Cyrus comentário
gasto
1
Por que eu usaria o git stash nesse caso?
Tobias Kaufmann
4

Suposto que você salvou um novo arquivo de alterações. (navbar.component.html por exemplo)

Corre:

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

Se você deseja fazer o upload dessas alterações para esse arquivo, execute:

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

E depois:

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

E depois:

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

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

Ou se você deseja fazer o upload de todas as suas alterações (vários / todos os arquivos):

git commit -a

E eles aparecerão "Digite a mensagem de confirmação para suas alterações".

  • Você verá esta mensagem se git commit sem uma mensagem (-m)
  • Você pode fazer isso com duas etapas:
  • 1.a. Digite uma mensagem de várias linhas para avançar com a confirmação.
  • 1.b. Deixe em branco para abortar a confirmação.
    1. Pressione "esc" e digite ": wq" e pressione enter para salvar sua escolha. Viola!

E depois:

git push

E viola!

David Castro
fonte
2
O mesmo que eu disse acima: git commit -anão carrega todas as alterações, não inclui os novos arquivos. Somente confirmará as atualizações nos arquivos existentes.
Martin Martin
3

Tente seguir o int git bash

1git add -u :/

2)git commit -m "your commit message"

  1. git push -u origin master

Nota: se você não inicializou seu repositório.

Em primeiro lugar

git init 

e siga as etapas acima mencionadas em ordem. Isso funcionou para mim

Amila Weerasinghe
fonte
Esse problema funcionou para mim, em um conflito de git em que não consegui excluir um arquivo do meu repositório local e confirmar do repositório local para o ramo mestre remoto.
Siwoku Adeola 03/03
1

significa que eles não foram adicionados para serem confirmados, você terá que fazer o git add scripts / excel_parser.py e os gostos para encená-los. uma vez que eles sejam testados quando você tiver status de git, eles serão testados e o git commit os confirmará

de você pode git commit -a -m "all checkin" que automaticamente preparará e confirmará todos os arquivos na árvore

LeMoN.xaH
fonte
1

Você pode ver esse erro ao adicionar um novo arquivo ao seu código e agora está tentando confirmar o código sem prepará-lo (adicioná-lo).

Para superar isso, você pode primeiro adicionar o arquivo usando git add ( git add your_file_name.py) e, em seguida, confirmando as alterações ( git commit -m "Rename Files" -m "Sample script to rename files as you like")

Waqas Khalid Obeidy
fonte
1

Eu li todas as respostas acima e tentei no terminal, seguindo as etapas que funcionam bem para atualizar arquivos novos e alterados no mestre.

1) git add. 2) git commit -m "sua mensagem" 3) git push origin master

Espero que isso ajude você.

Ksaroz Shrestha
fonte
1

Você pode estar no diretório errado ao executar o git add. :-)

Deslumbrar
fonte
-7

Remover dir/.../.git

funciona para mim.

aji stack
fonte
sua resposta precisa de informações básicas ou informações sobre por que ou como funcionou para você.
18118 Joshua K
Como é, a resposta não suporta a pergunta. Por favor, considere alterar ou adicionar mais informações.
Francisco Maria Calisto