2009-11-16 3 views
25

Je viens juste de commettre mon arbre de travail, ajouté à l'index en premier, avec "$ git commit -m 'test'" J'ai sauvegardé stdout-put dans un fichier et je vois en haut qu'il ditgit commit des problèmes

# On branch master 
# Changed but not updated: 
# (use "git add/rm ..." to update what will be commited) 
# (use "git checkout -- ..." to discard changes in working directory)" 

le problème est que mon arbre de travail n'est pas engagé à la mise en pension, et j'ai le sentiment que cela a quelque chose à voir avec elle

grâce

+0

Quel système d'exploitation utilisez-vous? Plus précisément, utilisez-vous Git sur Windows, et si oui, dans quel environnement? –

+0

Serveur Ubuntu, git 1.5.6 – deepblue

+1

La première chose que je pourrais suggérer est de mettre à jour votre version de Git, la dernière version est 1.6.5.3. Je suis assez sûr que ces messages particuliers que vous avez cités ont été améliorés depuis la version 1.5.x. –

Répondre

5

Avant de vous engager un changement, vous devez d'abord l'ajouter à l'index:

git add myfile 
git commit -m "test" 

Vous pouvez travailler dans un style plus SVN comme et engager tout ce qui est changé:

git commit -a -m "test" 

Ou vous pouvez simplement ajouter et-commit un seul fichier:

git commit myfile -m "test" 
+0

a fait tout cela. comme je l'ai mentionné ci-dessous dans un commentaire à la réponse de Jed, j'ai déplacé beaucoup de fichiers donc je ne pense pas que commit -a fonctionnerait dans ce cas puisque les fichiers sont supprimés et réintroduits ... et je pense que git les traite comme nouveau fichiers puis – deepblue

+0

Je peux seulement suggérer que vous n'avez pas ajouté les fichiers dans le référentiel quand vous pensiez que vous avez fait; votre message est exactement ce que je vois quand je lance git commit sans git add en premier. –

+0

bizarre. Je fais un 'git add'. à chaque fois. cela devrait faire l'affaire. merci de le signaler si – deepblue

0

Vous devez vraiment lire la documentation.

git add yourfile 
git commit -m "test" 

Ou, pour commettre tous les fichiers modifiés -

git commit -a -m "test" 
+0

de cours j'ai ajouté l'arbre de travail à l'index ($ git add. que j'ai exécuté ($ git commit -m 'test'> view_file). J'ai réorganisé mon arbre de travail un peu à partir du dernier commit donc beaucoup de fichiers supprimés anciens endroits et la réinsertion de ceux-ci dans de nouveaux endroits ... c'est pourquoi Im sauver la sortie dans un fichier afin que je puisse revoir ce git dit – deepblue

2

Avez-vous fait git add . avant que vous avez commis?

Il est toujours judicieux de faire un git status avant git add ou git commit pour voir ce qui a été modifié et mis en scène.

Il est également très pratique de faire git diff pour voir les changements spécifiques que vous êtes sur le point de valider.

Voici ce que git status indique si vous avez ajouté un fichier, puis l'avez renommé.

[email protected]:~$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: foo.txt 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: foo.txt 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# bar.txt 

À ce stade, vous pouvez juste faire git add . puis git status will give you more information, perhaps pointing out that you still have a new file and a deleted file called foo.txt . To fix this you need to manually git rm foo.txt before doing git commit`

Dans l'avenir, si vous avez des fichiers dans un git que vous voulez déplacez vous devez utiliser git mv.

+0

ouais 'git status ' c'est cool. c'est aussi signaler le message que j'ai mis dans la question. ces foutus changements ne sont tout simplement pas commis. J'ai passé toute la journée à lire des tutoriels et des docs essayant de trouver quelque chose à essayer. – deepblue

+1

Vous devez refaire 'git add' si vous faites des changements que vous voulez inclure dans le commit. Si vous faites un 'git status', puis' git add .' puis 'git status' à nouveau, vous devriez voir une différence. – mlibby

+0

Et par "faire des changements" j'inclus les changements dans les fichiers, renommer les fichiers, supprimer des fichiers, ajouter des fichiers ... tout ce qui pourrait confondre git. – mlibby

1

Une autre chose à noter, git add ajoute le contenu de ces fichiers à l'index au moment où vous l'exécutez. Si vous lancez git add, puis changez les fichiers, les nouveaux changements n'apparaîtront pas dans l'index.

+0

aucun travail supplémentaire n'a été effectué entre les invocations 'add' et 'commit' – deepblue

0

Si vous déplacez des fichiers et l'utiliser git add après, git ajoute que la nouvelle copie, mais ne supprime pas l'ancien:

$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ mv from to 
$ git add . 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: to 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
$ git commit -m "..." 
$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Pour supprimer les anciennes copies que vous devez également utiliser git rm:

$ git rm from 
rm 'from' 
$ git commit -m "..." 
$ git status 
# On branch master 
nothing to commit (working directory clean) 

Mais je ne vois pas pourquoi cela ne vous permet pas de valider ces changements.

28

Réponse courte:

git push -u origin master

Deuxième réponse:

Vous êtes le plus susceptible d'essayer de pousser commits à une branche qui n'a pas été encore créé - par exemple, sur un Github nouvellement créé référentiel sans le fichier README créé automatiquement. En appelant le git push -u origin master, vous spécifiez à la fois la télécommande sur laquelle vous devez appuyer (origine, qui est généralement la valeur par défaut de git) et la branche (maître, également par défaut dans les cas typiques). Selon la documentation git:

-u, --set-amont Pour chaque branche qui est à jour ou poussé avec succès, ajouter en amont (suivi) de référence, utilisé par git-moins l'argument -pull (1) et autres commandes. Pour plus d'informations sur , voir branch..merge dans git-config (1).

Cela signifie que, après une exécution réussie de cette commande, à partir de là, vous serez en mesure d'utiliser simplement git push et git pull et il sera par défaut origin master (avec quelques exceptions).

0

Les gars J'ai eu le même problème avec Git.
Je suis en cours d'exécution Cygwin sur Windows 8.

  1. vérifier si vous avez le dépôt que vous souhaitez engager.
  2. vérifier le chemin

$ git remote -v # voici comment vous pouvez voir votre chemin

$ git remote set-url origin [email protected]:username/repos.git # voici comment vous définissez nouveau chemin à distance pour pousser des fichiers vers le référentiel droit. $ git remote -v # pour vérifier si le bon chemin a été défini.

  1. ajouter git $.

4.

$ git push origin master 

this helps