GitHub Like Workflow auf dem privaten Server über SSH
-
02-10-2019 - |
Frage
Ich habe einen Server (über SSH) im Internet, den mein Freund und ich gemeinsam an Projekten arbeiten. Wir haben Git für die Quellvertretung verwendet. Unser Setup ist derzeit wie folgt:
- Freund erstellte Repository auf
server
mitgit --bare init
genanntproject.friend.git
- Ich klonte
project.friend.git
anserver
zuproject.jesse.git
- Ich klonierte dann
project.jesse.git
anserver
zu meiner lokalen Maschine benutzengit clone jesse@server:/git_repos/project.jesse.git
- Ich arbeite an meiner lokalen Maschine und verpflichte mich für die lokale Maschine. Wenn ich meine Änderungen an die drücken möchte
project.jesse.git
anserver
ich benutzegit push origin master
. Mein Freund arbeitet daranproject.friend.git
. Wenn ich seine Änderungen bekommen möchte, mache ich ichpull jesse@server:/git_repos/project.friend.git
.
Alles scheint gut zu funktionieren, aber ich bekomme jetzt den folgenden Fehler, wenn ich es tue git push origin master
:
localpc:project.jesse jesse$ git push origin master
Counting objects: 100, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (76/76), done.
Writing objects: 100% (76/76), 15.98 KiB, done.
Total 76 (delta 50), reused 0 (delta 0)
warning: updating the current branch
warning: Updating the currently checked out branch may cause confusion,
warning: as the index and work tree do not reflect changes that are in HEAD.
warning: As a result, you may see the changes you just pushed into it
warning: reverted when you run 'git diff' over there, and you may want
warning: to run 'git reset --hard' before starting to work to recover.
warning:
warning: You can set 'receive.denyCurrentBranch' configuration variable to
warning: 'refuse' in the remote repository to forbid pushing into its
warning: current branch.
warning: To allow pushing into the current branch, you can set it to 'ignore';
warning: but this is not recommended unless you arranged to update its work
warning: tree to match what you pushed in some other way.
warning:
warning: To squelch this message, you can set it to 'warn'.
warning:
warning: Note that the default will change in a future version of git
warning: to refuse updating the current branch unless you have the
warning: configuration variable set to either 'ignore' or 'warn'.
To jesse@server:/git_repos/project.jesse.git
c455cb7..e9ec677 master -> master
WARNUNG DAS WARNUNG Ich muss mir Sorgen machen? Wie ich schon sagte, alles scheint zu funktionieren. Mein Freund kann meine Veränderungen aus meinem Zweig ziehen. Ich habe den Klon auf dem Server, damit er darauf zugreifen kann, da er keinen Zugriff auf meine lokale Maschine hat. Gibt es etwas, das besser gemacht werden könnte?
Vielen Dank!
Lösung
Sie sollten a einrichten nackt Repository auf dem Server. Ein bloßes Repository enthält nur die Versionsinformationen des Versionsverlaufs, die normalerweise in der sind .git
Verzeichnis in Ihrem Repository -Root. Sie können wie bei jedem anderen Repository daraus klonen oder darauf drücken.
Bare Repositories werden mit erstellt mit
git init --bare
Wenn Sie bereits einen Versionsverlauf haben, machen Sie einen nackten Klon
git clone --bare git://some/where
Wie für Ihre Warnung siehe diese Frage.