# GIT Einstieg - Problem



## casi91 (28. Aug 2012)

Hallo Leute,
ich versuche gerade Git bei mir einzuführen und habe dabei Probleme.
Mein Vorhaben ist es, auf einem Server im Netzwerk die einzelnen Repositories zu verwalten und diese dann entsprechend auf die Lokalen System zu klonen. Dann sollen diese Lokal natürlich bearbeitet und wieder auf den Server gespielt werden.

Ich bin nun folgendermaßen vorgegangen.
Ich habe ein Projekt auf den Server gespielt und ein Repository dafür erzeugt und das Projekt entsprechend hinzugefügt ($ git add . und $ git commit)
Anschließend habe ich mir auf einen lokalen Client das Repository geklont.

Dort habe ich nun in einer Datei etwas geändert.
Anschließend habe ich diese commited und wollte dann "push" benutzen, um es wieder auf dem Server verfügbar zu machen.

Hierbei kommt nun folgende Fehlermeldung:



> Counting objects: 13, done.
> Compressing objects: 100% (4/4)
> Writing objects: 100% (7/7)
> Writing objects: 100% (7/7), 499 bytes, done.
> ...



Hat jemand einen Rat für mich oder kann mir sagen, was ich Falsch gemacht habe?

Danke schonmal im voraus


----------



## freak_007 (28. Aug 2012)

Auf dem Server solltest du eine bare Repository erstellt haben. Die erstellst du mit 
	
	
	
	





```
git init --bare myrepo.git
```
. Danach noch 
	
	
	
	





```
git update-server-info
```
 und dann sollte es funktionieren.
Gruß,
Freak


----------



## casi91 (28. Aug 2012)

erst mal vielen Dank für die Antwort.

Also ich bin nun folgendermaßen vorgegangen:

```
$ git init --bare util.git
```


```
$ cd util.git
```


```
$ git update-server-info
```

jetzt habe ich folgenden Pfad:
x/Programmierung/myutil/util.git/

und das verzeichnis jetzt klonen?
da stehen jetzt ja aber noch keine Quellcodedateien o.ä. drinne.
Ach ich bin verwirrt ???:L


----------



## freak_007 (28. Aug 2012)

casi91 hat gesagt.:


> erst mal vielen Dank für die Antwort.
> 
> Also ich bin nun folgendermaßen vorgegangen:
> 
> ...


Nein, auf deinen Computer erstellst du noch eine lokale Repo mit [c]git init util[/c]. Jetzt machst du ein paar Änderungen und commitest diese. Danach fügst das Server-Repo als origin Repo hinzu. [c]git remote add origin <pfad zum server git repo>[/c]. Dann nur noch pushen mit [c]git push origin master[/c]
Gruß,
Freak


----------



## casi91 (28. Aug 2012)

Irgendwie hab ich langsam das Gefühl, dass ich tierisch auf dem Schlauch steh...

Folgendes gemacht:
- Auf Server 


> ```
> $ git init --bare util.git
> ```
> 
> ...


(wie zuvor)

- Auf Client

```
$ cd x/Projekte/util
```


```
$ git init
```


```
$ git add .
```


```
$ git remote add origin //x.x.x.x/Programmierung/Java/util.git
```


```
$ push origin master
```

Bei dem letzten Befehl kommt dann folgendes:


> error: src refspec master does not match any.
> error: failed to push some refs to '//x.x.x.x/Programmierung/Java/util.git'


----------



## freak_007 (28. Aug 2012)

Du hast vergessen 
	
	
	
	





```
git commit -a
```
 auszuführen.
Gruß,
Freak


----------



## casi91 (29. Aug 2012)

Guten morgen,
bin schon am googlen, bisher aber irgendwie noch nichts hilfreiches gefunden.
Nach 
	
	
	
	





```
$ git commit -a
```
Öffnet sich das Fenster "COMMIT_EDITMSG"
Da steht nun:


> Please enter the commit message for yout changes. Lines startin with '#' will be ignored, and an empty message aborts the commit on branch master



wie schließe ich das Fenster nun ab?
und bei mir gibt es keine Zeile, die nicht mit einem '#' beginnt.


----------



## AmunRa (29. Aug 2012)

Hast du dein Zitat auch mal übersetzt? 

Da steht: Bitte gib eine commit message (Kommentar) für deinen änderungen ein. Zeilen die mit # beginnen werden ignoriert, Ein leerer Kommentar bricht die Übertragung ab.

Englisch ist ja doch was feines.

Du brauchst nicht nach einer zeile mit # suchen


----------



## casi91 (29. Aug 2012)

Ja, hab ich übersetzt. Und ja Englisch ist was feines, danke für die Lehrstunde.
Nur wusste ich nun nicht, dass mit "commit message" ein Kommentar gemeint ist.
(Dachte da soll nun wieder ein Befehl o.ä. kommen)
Dann ergibt das ganze natürlich direkt Sinn.

Nur steht da nun nirgends, wie ich den Kommentar abspeicher und den Editor wieder schließe?
Wenn ich das hübsche "x" rechts oben benutze, komm ich zwar wieder in die Befehlsmaske, aber kurz darauf stürzt das Programm ab (Keine Antwort, sofort beenden usw.)

Habs nun aber dennoch hinbekommen, indem ich anstatt 
	
	
	
	





```
commit -a
```
, 
	
	
	
	





```
commit -m "kommentar"
```
 verwendet habe. 
Falls jemand anderes mal auf der suche Sein sollte, hier mein kompletter Ablauf:

Server:
- Erstellen eines Bare Repository 

```
$ git init --bare util.git
```


```
$ cd util.git
```


```
$ git update-server-info
```

Client:
- Erstellen eines lokalen Repository

```
$ cd x/Projekte/util
```


```
$ git init
```


```
$ git add .
```


```
$ git commit -m "Hier der Kommentar zum commit"
```

-Hinzufügen des Remoteverzeichnisses

```
$ git remote add origin //x.x.x.x/Programmierung/Java/util.git
```

-Übertragen des Projektes

```
$ git push origin master
```


Anschließend habe ich das Projekt mal in einen neuen Ordner geklont, etwas geändert und wieder commit+push ausgeführt und es hat wunderbar funktioniert.
Ich werde Gewiss noch auf weitere Probleme stoßen, aber erst mal vielen Dank für die Hilfe


----------



## freak_007 (29. Aug 2012)

casi91 hat gesagt.:


> Nur steht da nun nirgends, wie ich den Kommentar abspeicher und den Editor wieder schließe?


Probier mal Strg+S oder Strg+O zum speichern und zum beenden Esc oder Strg+X. Jedenfalls Strg+O und Strg+X funktioniert unter Linux beim Editor nano.
Gruß,
Freak


----------



## casi91 (29. Aug 2012)

Werd ich bei Gelegenheit ausprobieren.
Aber ich versteh es doch richtig, dass es egal ist, ob ich 
	
	
	
	





```
commit -a
```
 oder 
	
	
	
	





```
commit -m "kommentar"
```
 verwende?

Und dann noch 2 Fragen.
Ich verwende als Windowstool zusätzlich noch "TortoiseGit"
Hierbei wird bei dem Ordner noch ein Zeichen (Haken oder Ausrufezeichen" angezeigt, ob den der Stand aktuell ist. Wenn ich nun lokal eine Änderung mache (und noch nicht Übertragen habe) ändert sich das Zeichen von Haken zu Ausrufezeichen.
Bei "commit" wird dann wieder der Haken angezeigt.
Jetzt ist die Änderung ja aber noch nicht auf dem Server, das geschieht ja erst nach dem "Push"
Gibt es hier eine Möglichkeit, dass sich die angezeigten Zeichen nach dem Stand des Servers richten?
Damit ich sehe, wenn ein Mitarbeiter etwas an dem Projekt verändert hat?

Und noch eine Frage
Ist es Möglich mehrere Logisch zusammenhängende Projekte in ein Repository zu machen?
Beispiel:
1. Webservice-Server
2. Webservice-Client
3. Projekt mit der XML-Struktur für den Webservice (Damit ich eine .jar erzeugen kann, die bei Server und Client eingebunden wird)

Jetzt möchte ich bei einem Klonen direkt alle 3 Projekte bekommen.
Ist das Möglich? Oder eher schwierig umzusetzen?


----------



## Gast2 (29. Aug 2012)

> Aber ich versteh es doch richtig, dass es egal ist, ob ich commit -a oder commit -m "kommentar" verwende?


Nein, die beiden Kommandos machen unterschiedliche Sachen. Der Parameter 
	
	
	
	





```
-a
```
 sagt dass auch Dateien die noch nicht unter Versionskontrolle sind eingecheckt werden sollen.

```
-m "Kommentar"
```
 fügt eine Nachricht hinzu, einige Repos sind so konfiguriert dass man zwingend eine Nachricht übergeben muss. 
	
	
	
	





```
commit -m "Kommentar"
```
 würde also nur diejenigen files einchecken die unter dem Punkt "Staged for commit"(?) unter 
	
	
	
	





```
git status
```
 auftauchen.


----------



## casi91 (29. Aug 2012)

Danke für die Erklärung.
Leider hat es auch mit Strg+S oder Strg+O nicht funktioniert.
Und wie erwähnt, beim schließen stürzt dann alles ab.

Wenn ich nun aber bei der ersten Übertragung alles so mache, wie zuvor erwähnt.
Und anschließend mit TortoiseGit arbeite, läuft es wie gewünscht.
Wenn ich dann (wie gesagt über TortoiseGit) "commit" auswähle, wird mir eine Liste der Dateien angezeigt, die geändert oder neu hinzugekommen sind.
Hier kann ich nun auswählen, was ich übertragen möchte.


----------

