338 Stimmen

Hinzufügen eines lokalen Repos und dessen Behandlung als entferntes Repos

Ich versuche, ein lokales Repository als Remote-Repository mit dem Namen bak für ein anderes lokales Repository auf meinem PC, indem ich folgendes verwende:

git remote add /home/sas/dev/apps/smx/repo/bak/ontologybackend/.git bak

was zu diesem Fehler führt:

fatal: '/home/sas/dev/apps/smx/repo/bak/ontologybackend/.git' is not a valid remote name

Ich versuche, zwei lokale Repos zu synchronisieren, wobei eines als Remote-Repos mit dem Namen bak für den anderen, und dann die Ausgabe von git pull bak .

Wie kann man das am besten tun?

382voto

larsks Punkte 222913

Sie haben Ihre Argumente für die remote add Befehl umgedreht:

git remote add <NAME> <PATH>

Also:

git remote add bak /home/sas/dev/apps/smx/repo/bak/ontologybackend/.git

Siehe git remote --help für weitere Informationen.

231voto

Matt Sanders Punkte 6299

Wenn Sie eine lokale Kopie des Repositorys zur einfachen Sicherung oder zum Speichern auf einem externen Laufwerk oder zur Freigabe über einen Cloud-Speicher (Dropbox usw.) aufbewahren möchten, sollten Sie eine bloße Ablage . Damit können Sie eine Kopie des Repositorys ohne Arbeitsverzeichnis erstellen, die für die gemeinsame Nutzung optimiert ist.

Zum Beispiel:

$ git init --bare ~/repos/myproject.git
$ cd /path/to/existing/repo
$ git remote add origin ~/repos/myproject.git
$ git push origin master

Ebenso können Sie klonen, als wäre dies ein entferntes Repository:

$ git clone ~/repos/myproject.git

13voto

Jarek Punkte 121

Ich poste diese Antwort, um ein Skript mit Erklärungen zur Verfügung zu stellen, das drei verschiedene Szenarien der Erstellung eines lokalen Repos abdeckt, das eine lokale Remote hat. Sie können das gesamte Skript ausführen und es wird die Test-Repos in Ihrem Heimatordner erstellen (getestet mit Windows git bash). Die Erklärungen befinden sich innerhalb des Skripts, um das Speichern in Ihren persönlichen Notizen zu erleichtern. Es ist sehr gut lesbar, z.B. von Visual Studio Code aus.

Ich möchte auch folgenden Personen danken Jack zur Verlinkung mit diese Antwort wobei adelphus bietet gute, ausführliche und praxisnahe Erklärungen zum Thema.

Dies ist mein erster Beitrag hier, daher bitte ich um Hinweise, was verbessert werden sollte.

## SETUP LOCAL GIT REPO WITH A LOCAL REMOTE
# the main elements:
# - remote repo must be initialized with --bare parameter
# - local repo must be initialized
# - local repo must have at least one commit that properly initializes a branch(root of the commit tree)
# - local repo needs to have a remote
# - local repo branch must have an upstream branch on the remote

{ # the brackets are optional, they allow to copy paste into terminal and run entire thing without interruptions, run without them to see which cmd outputs what

cd ~
rm -rf ~/test_git_local_repo/

## Option A - clean slate - you have nothing yet

mkdir -p ~/test_git_local_repo/option_a ; cd ~/test_git_local_repo/option_a
git init --bare local_remote.git # first setup the local remote
git clone local_remote.git local_repo # creates a local repo in dir local_repo
cd ~/test_git_local_repo/option_a/local_repo
git remote -v show origin # see that git clone has configured the tracking
touch README.md ; git add . ; git commit -m "initial commit on master" # properly init master
git push origin master # now have a fully functional setup, -u not needed, git clone does this for you

# check all is set-up correctly
git pull # check you can pull
git branch -avv # see local branches and their respective remote upstream branches with the initial commit
git remote -v show origin # see all branches are set to pull and push to remote
git log --oneline --graph --decorate --all # see all commits and branches tips point to the same commits for both local and remote

## Option B - you already have a local git repo and you want to connect it to a local remote

mkdir -p ~/test_git_local_repo/option_b ; cd ~/test_git_local_repo/option_b
git init --bare local_remote.git # first setup the local remote

# simulate a pre-existing git local repo you want to connect with the local remote
mkdir local_repo ; cd local_repo
git init # if not yet a git repo
touch README.md ; git add . ; git commit -m "initial commit on master" # properly init master
git checkout -b develop ; touch fileB ; git add . ; git commit -m "add fileB on develop" # create develop and fake change

# connect with local remote
cd ~/test_git_local_repo/option_b/local_repo
git remote add origin ~/test_git_local_repo/option_b/local_remote.git
git remote -v show origin # at this point you can see that there is no the tracking configured (unlike with git clone), so you need to push with -u
git push -u origin master # -u to set upstream
git push -u origin develop # -u to set upstream; need to run this for every other branch you already have in the project

# check all is set-up correctly
git pull # check you can pull
git branch -avv # see local branch(es) and its remote upstream with the initial commit
git remote -v show origin # see all remote branches are set to pull and push to remote
git log --oneline --graph --decorate --all # see all commits and branches tips point to the same commits for both local and remote

## Option C - you already have a directory with some files and you want it to be a git repo with a local remote

mkdir -p ~/test_git_local_repo/option_c ; cd ~/test_git_local_repo/option_c
git init --bare local_remote.git # first setup the local remote

# simulate a pre-existing directory with some files
mkdir local_repo ; cd local_repo ; touch README.md fileB

# make a pre-existing directory a git repo and connect it with local remote
cd ~/test_git_local_repo/option_c/local_repo
git init
git add . ; git commit -m "inital commit on master" # properly init master
git remote add origin ~/test_git_local_repo/option_c/local_remote.git
git remote -v show origin # see there is no the tracking configured (unlike with git clone), so you need to push with -u
git push -u origin master # -u to set upstream

# check all is set-up correctly
git pull # check you can pull
git branch -avv # see local branch and its remote upstream with the initial commit
git remote -v show origin # see all remote branches are set to pull and push to remote
git log --oneline --graph --decorate --all # see all commits and branches tips point to the same commits for both local and remote
}

5voto

Kristian Punkte 20306

Es scheint, dass Ihr Format nicht korrekt ist:

Wenn Sie ein lokal erstelltes Repository gemeinsam nutzen wollen, oder wenn Sie die in irgendeiner Weise mit einem neuen Projektarchiv interagieren wollen, ist es im Allgemeinen am einfachsten, es es als Remote-Repository hinzuzufügen. Dazu führen Sie git remote add [alias] [url]. Das fügt [url] unter einer lokalen Remote namens [alias] hinzu.

#example
$ git remote
$ git remote add github git@github.com:schacon/hw.git
$ git remote -v

http://gitref.org/remotes/#remote

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X