GIT Einstieg - Problem

casi91

Bekanntes Mitglied
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.
Total 7 (delta 3), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To //x.x.x.x/Programmierung/Java/Util
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to '//x.x.x.x/Programmierung/Java/Util'

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

Danke schonmal im voraus :)
 
F

freak_007

Gast
Auf dem Server solltest du eine bare Repository erstellt haben. Die erstellst du mit
Code:
git init --bare myrepo.git
. Danach noch
Code:
git update-server-info
und dann sollte es funktionieren.
Gruß,
Freak
 

casi91

Bekanntes Mitglied
erst mal vielen Dank für die Antwort.

Also ich bin nun folgendermaßen vorgegangen:
Code:
$ git init --bare util.git
Code:
$ cd util.git
Code:
$ 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
 
F

freak_007

Gast
erst mal vielen Dank für die Antwort.

Also ich bin nun folgendermaßen vorgegangen:
Code:
$ git init --bare util.git
Code:
$ cd util.git
Code:
$ 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
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
 
Zuletzt bearbeitet von einem Moderator:

casi91

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

Folgendes gemacht:
- Auf Server
Code:
$ git init --bare util.git
Code:
$ cd util.git
Code:
$ git update-server-info
(wie zuvor)

- Auf Client
Code:
$ cd x/Projekte/util
Code:
$ git init
Code:
$ git add .
Code:
$ git remote add origin //x.x.x.x/Programmierung/Java/util.git
Code:
$ 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'
 
F

freak_007

Gast
Du hast vergessen
Code:
git commit -a
auszuführen.
Gruß,
Freak
 

casi91

Bekanntes Mitglied
Guten morgen,
bin schon am googlen, bisher aber irgendwie noch nichts hilfreiches gefunden.
Nach
Code:
$ 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

Gesperrter Benutzer
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

Bekanntes Mitglied
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
Code:
commit -a
,
Code:
commit -m "kommentar"
verwendet habe.
Falls jemand anderes mal auf der suche Sein sollte, hier mein kompletter Ablauf:

Server:
- Erstellen eines Bare Repository
Code:
$ git init --bare util.git
Code:
$ cd util.git
Code:
$ git update-server-info

Client:
- Erstellen eines lokalen Repository
Code:
$ cd x/Projekte/util
Code:
$ git init
Code:
$ git add .
Code:
$ git commit -m "Hier der Kommentar zum commit"

-Hinzufügen des Remoteverzeichnisses
Code:
$ git remote add origin //x.x.x.x/Programmierung/Java/util.git

-Übertragen des Projektes
Code:
$ 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 :)
 
F

freak_007

Gast
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
 
Zuletzt bearbeitet von einem Moderator:

casi91

Bekanntes Mitglied
Werd ich bei Gelegenheit ausprobieren.
Aber ich versteh es doch richtig, dass es egal ist, ob ich
Code:
commit -a
oder
Code:
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?
 
G

Gast2

Gast
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
Code:
-a
sagt dass auch Dateien die noch nicht unter Versionskontrolle sind eingecheckt werden sollen.
Code:
-m "Kommentar"
fügt eine Nachricht hinzu, einige Repos sind so konfiguriert dass man zwingend eine Nachricht übergeben muss.
Code:
commit -m "Kommentar"
würde also nur diejenigen files einchecken die unter dem Punkt "Staged for commit"(?) unter
Code:
git status
auftauchen.
 

casi91

Bekanntes Mitglied
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Einstieg in Visual C# 2010, falsch? Softwareentwicklung 17
Z Analysemuster - Welches nehme ich für diese Problem? Softwareentwicklung 0
L Design Patterns zu abstraktem Problem Softwareentwicklung 2
C Regex Problem Softwareentwicklung 1
TheJavaKid RegEx Problem Softwareentwicklung 2
C Regex-Problem Softwareentwicklung 24
H Problem mit jsp:setproperty Softwareentwicklung 10
B Regex-Problem mit replace außerhalb des matching bereichs liegender Zeichenketten Softwareentwicklung 2
Landei MS-Access-Problem Softwareentwicklung 3
TiME-SPLiNTER Banales regEx-Problem Softwareentwicklung 2
A 8 Damen Problem (Backtracking) Softwareentwicklung 2
U xmlvm-Problem: Der erzeugte Obj-C-Code erzeugt Fehler in Apple's Xcode SDK Softwareentwicklung 3
S Subversion und Source Folder Problem. Softwareentwicklung 6
G PHP Problem: Geltungsbereich von Variablen Softwareentwicklung 3
L Problem mit Vererbung Softwareentwicklung 6
C Ein Problem mit der RSA Versschlüsselung Softwareentwicklung 3
W Problem mit Umlauten in xml Dateien auf englischen Systemen Softwareentwicklung 7
H Problem Programmieren Softwareentwicklung 12
H Problem mit eclipse Softwareentwicklung 3
M IllegalStateException - Problem mit GUI und Observer pattern Softwareentwicklung 4
B JavaScript/JSON Problem Softwareentwicklung 2
m@nu Problem mit einer RegEx Softwareentwicklung 4
MTiN Problem mit Rot/Schwarz-Baum Softwareentwicklung 1
F Problem mit DOS-Box Softwareentwicklung 2
A Problem mit Datum-Formatierung Softwareentwicklung 2
K Knapsack Problem: Algorithmus? Softwareentwicklung 7
M Traveling Salesman Problem Softwareentwicklung 6
S Problem PJIRC java-applet Softwareentwicklung 4
rambozola problem mit division in oracle Softwareentwicklung 2
Icewind Problem mit der OOP Softwareentwicklung 4
G Problem mit ActionListener Softwareentwicklung 7
C Mysql-Frage(Problem mit nicht durchgeführten Zugriff) Softwareentwicklung 5

Ähnliche Java Themen


Oben