私は異なるPCに2つのgitリポジトリを持っています。私はそれらのすべての地元支部を持っています。私はこのブランチをリモートサーバに送りたいだけで、ローカルにしておきます。 Webを使わずに同期するにはどうすればいいですか? 1台のPCでリポジトリを圧縮して別のPCに移動できますか?それは安全ですか?たぶん、私は何とか最新の変更をすべてのブランチからエクスポートできますか?2つのgitリポジトリの同期方法
答えて
よりもむしろ裸のクローンを作ります私は、bundle(How can I email someone a git repository?を参照)を作成することを好んでおり、を生成します。ファイル、簡単にコピーすることができます(USBスティックなど)
裸のレポの特徴がいくつかあります:それを引き出したり、複製したりすることができます。
しかし、ファイルを心配する必要があります。
machineB$ git clone /home/me/tmp/file.bundle R2
これは、あなたが取得し、バンドルから引くことができます結果のリポジトリに遠隔と呼ばれる「
origin
」を定義します。
[remote "origin"]
url = /home/me/tmp/file.bundle
fetch = refs/heads/*:refs/remotes/origin/*
は、結果のmine.gitリポジトリを更新するには、あなたがフェッチまたは増分更新で
/home/me/tmp/file.bundle
に格納されているバンドルを交換した後に引くことができます:R2
で$GIT_DIR/config
ファイルには、このようなエントリを持つことになります。元のリポジトリにいくつかのより多くの作業が完了したら、他のリポジトリ更新する増分バンドルを作成することができます。
machineA$ cd R1
machineA$ git bundle create file.bundle lastR2bundle..master
machineA$ git tag -f lastR2bundle master
をあなたはその後、
/home/me/tmp/file.bundle
を置き換えるために、他のマシンにバンドルを転送し、それから引っ張ってください。他のファイルシステムへのリポジトリの
machineB$ cd R2
machineB$ git pull
@Cacovsky:編集と固定リンクに感謝します。 – VonC
this blog post "Synchronizing Git repositories without a server "(Victor Costan)を参照してください。
このポストは、USBスティック上のリポジトリを作成して起動両方のホスト有するリポジトリ
にネットワーク接続してサーバーを使用せずに2つのリポジトリ間の変更をプッシュするための方法を記載しています。その後
mkdir /path/to/usb/stick/repository.git
git clone --local --bare . /path/to/usb/stick/repository.git
(あなたがマスターをプッシュしたくない場合は、ご希望の支店に置き換え、)リモートリポジトリとしてUSBスティック上のリポジトリを登録し、それに望みのブランチを押してください。
git remote add usb file:///path/to/usb/stick/repository.git
git push usb master
今後、USBリポジトリを他のリモートリポジトリとして扱うことができます。それがマウントされていることを確認してください:)たとえば、次のように変更するとUSBリポジトリに新しい変更が適用されます。受信側で
git push usb
、USBスティックをマウントし、リポジトリ
file:///path/to/usb/stick/repository.git
いくつかの便利なコマンドのためにファイルのURLを使用します。
# cloning the repository on the USB stick
git clone file:///path/to/usb/stick/repository.git
# updating a repository cloned from the USB stick using the above command
git pull origin
# adding the USB stick repository as a remote for an existing repository
git remote add usb file:///path/to/usb/stick/repository.git
# updating from a remote repository configured using the above command
git pull usb master
直接コピーは、代替クローンを裸にするか、バンドルすることです。コピーした後、コピーしたリポジトリをローカルリモートとして直接設定することができます - ローカルリモートが直感的でないほど直感的ではない - 最初のリポジトリにフェッチしてマージします。
I.e. 〜/ repo1に第二のコンピュータからrepo2をマージするために、〜/ repo2(メモリスティック、ネットワークのコピーなど)、その後、あなたがGit pulling changes between two local repositoriesへの回答に使用できるのrepo1ファイルシステムへの最初のコピーrepo2:
~/repo1 $ git remote add repo2 ~/repo2
~/repo1 $ git fetch repo2
~/repo1 $ git merge repo2/foo
を
the wikipedia article on gitに「Gitリポジトリ - データとメタデータ - はそのディレクトリに完全に含まれているので、Gitリポジトリ全体の通常のシステムレベルのコピー(または名前変更や削除)は安全な操作です。コピーはオリジナルとは独立しており、オリジナルを意識していません。
私はこれを確認する以上の知識を持つ人は誰ですか? @sage私はちょうど私の.gitを含んでいる私のディレクトリをUSBスティックにコピー貼り付けてバックアップしたいのであれば十分ではないでしょうか? –
@nutty - 直接コピーは正確な状態でレポを転送するために正常に動作しますが、しばしばそれを行います。しかし、いくつかのユースケースでは、あるディスクの場所から別の場所にプル/マージできる方が望ましいと思います(たとえば、両方のレポの場所を編集して同期したい場合など)。 Gitはこの点で楽しく対応しています。 :-) – sage
私は物事にちょっとしたひねりを加えたいと思います。他の投稿の情報は正しいようですが、私が実際にやっているいくつかのことについて言及したいと思います。
私は
git remote -v
をすれば、私は基本的に私はむしろちょうど1私のUSBデバイスに割り当てられたドライブ文字以降を示唆したものとはUSBの名前でいくつかのリモコンを定義している。この
USB_F file:///f/Git_repositories/projectname.git (fetch)
USB_F file:///f/Git_repositories/projectname.git (push)
USB_G file:///g/Git_repositories/projectname.git (fetch)
USB_G file:///g/Git_repositories/projectname.git (push)
のような情報を得ます私はそれを挿入するポートに応じて変更されます。私は、この
cd /path/to/projectname
if [ -d /f/Git_repositories/projectname.git ]
then
git push USB_F --all
git push USB_F --tags
fi
if [ -d /g/Git_repositories/projectname.git ]
then
git push USB_G --all
git push USB_G --tags
fi
意向のような内容でスクリプトを実行
は、それが存在していて、どこ今までそれであればUSBリポジトリにすべてのブランチとすべてのタグをプッシュすることです。 (-dフラグはgitリポジトリディレクトリの存在をチェックしていて、ディレクトリが存在する場合のみ条件付きコードが実行されます)
元の質問:私はいくつかのローカルブランチを持っています。私はこのブランチをリモートサーバに送りたいだけで、ローカルにしておきます。 はどうすれば
はとプッシュ-all プッシュコマンドは、すべてのブランチやタグは、USBリポジトリにも、新しいものをプッシュしていることを確認し、この同期を行う--tags ...同期させることができますUSBリポジトリは認識しませんでした。枝の名前を知り、それを一つずつ扱う必要がある、あるいは習得する必要がない。
私はこれをバックアップ目的で実行していますので、私は物事のプッシュサイドを示し、プロジェクトとリポジトリの数を減らしました。実際には、私は複数のプロジェクトを複数の場所にバックアップしますが、ここで関連するUSB項目は繰り返ししかありません。
かなり明白ですが、私は言及見ていないというもう一つは、PC AおよびPC Bを同期するために、あなたは、
1. sync PC A and the USB device
2. sync PC B and the USB device
3. sync PC A and the USB device again!
または異なっ閲覧に必要行くだろうということです
PC A -> USB -> PC B
PC B -> USB -> PC A
最終的にブランチとタグは2台のマシンで同じになります。
- 1. 2つのリモートGITリポジトリを同期
- 2. Gitリポジトリを2台のサーバ間で同期させる方法
- 3. Gitリポジトリを同期
- 4. 2つの同一のgitリポジトリ
- 5. 2つのGitリポジトリを同期させておく?
- 6. 2つの異なるアカウントに2つのgitリポジトリを同期する方法は?
- 7. 2社のGITリポジトリの2つのフレグメンを同期させますか?
- 8. 2つのgitリポジトリ間で便利にファイルを同期するには
- 9. は自動的に同期2つの書き込み可能なGitリポジトリ
- 10. 新しいマシンからGitリポジトリと再同期する方法
- 11. GITリポジトリを同期させておく方法
- 12. "シャドー" gitリポジトリとメインリポジトリを "密かに"同期させる方法
- 13. 2つのgitリポジトリ間の競合を検出する方法。
- 14. 同じgitリポジトリの2つのバージョンをマージする
- 15. 2つのgitリポジトリを持つJenkinsfile
- 16. git 2つのリポジトリ間でコードを共有する方法
- 17. Git - 2つのローカル切断リポジトリをマージする方法
- 18. 2つのリポジトリを使ってgitを処理する方法
- 19. 2つのgitリポジトリ間でrebaseする方法
- 20. 2つの同じリポジトリをマージするGit
- 21. git 2つの異なるリポジトリと同じディレクトリをマージする
- 22. 2つのリモートgitリポジトリ間のホットフィックス
- 23. 2組の設定をgitと同期させる方法
- 24. GITとSubversionのリポジトリを同期する方法はありますか?
- 25. バックアップgitリポジトリをローカルの "git push --mirror"または "git remote update"と同期させる方法
- 26. 2つのNexusリポジトリ間を同期する
- 27. ローカルのgitリポジトリをリモートのgitリポジトリにバックアップする方法
- 28. 同じページで2つのフォームを同期化する方法
- 29. Git - Githubリポジトリをローカルのものと同期させますか?
- 30. Git:サブディレクトリを同じリポジトリの別のブランチにプッシュする方法
「サーバー」上のgitリポジトリとの唯一の違い(違いがある場合)は、サーバー上のレポがおそらく裸であるということです。他のPCは、サーバーとまったく同じように考えてください。 –