2013-10-24 8 views
11

Sorry, ich bin ein git Neuling (obwohl ich sehr vertraut bin mit älteren Versionskontrollsystemen wie CVS und SVN) ...git clone gefolgt von Status zeigt untracked Dateien

Mein Ziel ist ein hinzufügen Datei an ein Remote-Repository (eines nicht auf meinem Computer), indem dieses Remote-Repository lokal geklont wird, die Datei dem lokalen Repository hinzugefügt wird, meine Änderung festgeschrieben wird und dann mein lokales Repository an die Remote-Station zurückgeschoben wird.

Ich versuchte dies:

git clone ssh://[email protected]/Users/GitRepo/Project.git 
<create file locally> 
git add <localfile> 
git commit -m "Narg" 
git push 

Aber es sagt nur: "Alles auf dem neuesten Stand".

Also habe ich versucht, Schritt für Schritt zu gehen, und wurde noch mehr verwirrt.

git clone ssh://[email protected]/Users/GitRepo/Project.git 
git status 

Und es sagt mir

# Not currently on any branch 
# Untracked files: 
    followed by a long list of Untracked files. 

Welche wirklich seltsam scheint, warum sollten die Dateien untracked sein, wenn ich das Repository nur geklont?

Wenn es wichtig ist, ist das Remote-Repository brandneu, erstellt über svn2git.

Wenn ich tippe

git remote show origin 

es sagt mir

* remote origin 
    Fetch URL: ssh://[email protected]/Users/GitRepo/Project.git 
    Push URL: ssh://[email protected]/Users/GitRepo/Project.git 
HEAD branch: master 
Remote branch: 
    master tracked 
Local branch configured for 'git pull': 
    master merges with remote master 
Local ref configured for 'git push': 
    master pushed to master (up to date) 

und wenn ich tippe

git branch -a 

es sagt mir

* (no branch) 
master 
remotes/GitRepo/master 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 

Also bin ich einfach verwirrt, und alles funktioniert tatsächlich richtig? Oder mache ich die Git Befehle falsch? Oder habe ich das Repository falsch erstellt, so dass keine Git-Befehle jemals richtig funktionieren?

Danke, Chris

+2

Nach 'git clone ssh: // user @ server/Users/GitRepo/Project.git', führen Sie den Befehl' cd Project.git' vor 'git status' – Litmus

+0

Hoffnung' git checkout 'helfen Sie – tijs

+0

Nach Git Clone, ich habe kein Verzeichnis namens Project.git - nur ein Verzeichnis mit dem Namen Projekt, das meine eigentlichen Dateien enthält. Also bekomme ich ein nicht-bare Repository (richtig?). Ich kann "cd .git", aber laufender "git status" von dort gibt mir den Fehler "fatal: Dieser Vorgang muss in einem Arbeitsbaum ausgeführt werden" –

Antwort

1

Git ist ein wunderbares Werkzeug, aber es ist einfach, ohne eine gute Karte verloren gehen, wo man im Wald von Commits ist.

Hier ist, wie diese Karte zu bekommen (ich nenne es „gr“ für „Graph“, aber man könnte es auch nennen „Karte“, wenn Sie bevorzugen):

git config --global alias.gr 'log --graph --full-history --all --color --decorate' 

Das ist eine einmalige Einrichtung für Git. Nun, wenn Sie sich verirrt haben, nehmen Sie nur einen Blick auf die Karte:

git gr 

Ihr aktueller Standort wird durch das Wort „HEAD“ bezeichnet und alle Zweignamen sind ebenfalls aufgeführt.

Sie werden sehen, dass Sie derzeit nicht auf einem Zweig sind, der viel schlechter klingt als es wirklich ist - es ist eigentlich keine große Sache, es bedeutet nur, dass Ihre Commits nicht in den Master-Zweig den Weg gehen Sie wollen sie.

So erhalten nur auf Ihrem Master-Zweig zurück und verpflichten sich:

git checkout master 
git add yourfile.txt 
git commit -m'Narg' 
git push 

Auch jetzt einen Blick auf git gr nehmen und Sie werden feststellen, dass HEAD sehen an ist die gleiche wie Master begehen, und Meister der ist Gleiches commit wie Ursprung/Meister, was bedeutet, dass Sie alle festgelegt sind.

+0

Danke! Ach, meine git-Neuigkeit verursacht immer noch Probleme ... das Git-Diagramm zeigt die oberste Revision an (HEAD, Ursprung/Master, Ursprung/HEAD, GitRepo/Master, Master), wie kann ich daraus schließen, dass ich momentan nicht bin in irgendeinem Zweig? –

+0

Und wenn ich "git checkout master" aus dem Stammordner meines lokalen Repositorys sage, sagt es entweder "fatal: Kann nicht erstellt werden//Users/blah/blah/.git/index.lock": Kein Platz mehr auf dem Gerät "oder" fatal: keine neue Indexdatei schreiben " –

+0

" Kein Platz mehr auf dem Gerät "klingt wie Ihre Festplatte ist voll? Wenn du df -h schreibst, was sagt es? Für die andere Frage sagt git gr Ihnen nicht, in welchem ​​Zweig Sie sich gerade befinden, nur was Sie gerade ausgecheckt haben und auf was die bestehenden Zweige verweisen (ein Zweig ist eigentlich nichts anderes als ein Zeiger). Für deinen aktuellen Zweig hast du das richtige Kommando: git branch -a. – Magnus

5

git config -l

wenn aktuelle git Repository core.precomposeunicode=true

dies versuchen,

git config core.precomposeunicode false

und aus diesem Grund. from here

core.precomposeunicode Diese Option ist nur von Mac OS Implementierung von Git verwendet wird. Wenn core.precomposeunicode = true ist, setzt Git die Unicode-Dekomposition von Dateinamen von Mac OS zurück. Dies ist nützlich, wenn Sie ein Repository zwischen Mac OS und Linux oder Windows freigeben. (Git für Windows 1.7.10 oder höher wird benötigt, oder Git unter Cygwin 1.7). Bei false werden Dateinamen von Git vollständig transparent behandelt, was mit älteren Versionen von Git abwärtskompatibel ist.

Verwandte Themen