1. ホーム
  2. git

[解決済み] git repository sync between computers, when moving around?

2023-04-04 19:01:20

質問

私はデスクトップPCとノートPCを持っているとします。 デスクトップで作業することもあれば、ラップトップで作業することもあります。

git リポジトリを前後に移動させる最も簡単な方法は何ですか?

私はgitリポジトリが同一であることを望みます。 そうすれば、私は他のコンピュータで残したところから続けることができます。

私は両方のコンピュータで同じブランチとタグを持っていることを確認したいと思います。

ありがとうございます。 ヨハン

注:私はSubVersionでこれを行う方法を知っていますが、gitでどのように動作するかに興味があります。より簡単であれば、2 台の PC が同期できるように、3 台目の PC を古典的なサーバーとして使用することができます。

注意: 両方のコンピューターは Linux を実行しています。


更新 :

では、XANI:さんのアイデアをサーバー上の素のgit repoで試してみましょう。 そして、KingCrunch の push コマンドの構文で試してみましょう。 この例では、2つのクライアントと1つのサーバーがあります。

では、まずサーバーの部分を作ってみましょう。

ssh user@server
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init

そこで、他のコンピュータからcloneでレポのコピーを取得しようとします。

git clone user@server:~/git_test/workspace/
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/
warning: You appear to have cloned an empty repository.

そして、そのレポに入り、ファイルを追加します。

cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master

これで、サーバーにtestfile1.txtが更新されました。

とにかく、このファイルを他のコンピュータから取得できるかどうか見てみましょう。

mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone user@server:~/git_test/workspace/
cd workspace/
git pull

そして、testfileを見ることができます。

この時点で、さらに内容を編集して、サーバーを再び更新することができます。

echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master

そして、最初のクライアントに戻って git pull を行い、更新されたファイルを確認します。 これで2つのコンピュータの間を行ったり来たりできるようになりました。 好きなら3台目を追加することもできます。

どのように解決するのですか?

複数の方法があると思います。ここでは、私がどのように対処しているかを説明します。

私は24時間365日サーバーとして1台のネットブックを持っており、そこには複数のgit-repositoriesがあります。そこからは、SSH 経由で変更をプッシュおよびプルします。外部からのアクセスのために、私は dyndns.org を使用します。特に、いくつかのリポジトリにアクセスする必要がある、2つ以上のシステムを持っているので、それはうまく機能します。

更新: ちょっとした例です。 私のネットブックが "netbook" と呼ばれているとします。そこにリポジトリを作成します。

$ ssh [email protected]
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare

デスクトップ上に、そのクローンを作成します。たぶん、いくつかのファイルも追加することになるでしょう。

$ git clone [email protected]:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master

私のポータブル機器では、(最初に)同じことをしますが、(LANの外からの)リモートアクセスのために、外部アドレスも追加します。

$ git clone [email protected]:/home/username/git/newThing
$ git remote add externalName [email protected]:/home/username/git/newThing
$ git pull externalName master

これはgit(/git workflows)の動作方法です。好きなだけ多くのリモートリポジトリを追加することができます。2つ以上のリポジトリが同じ物理リポジトリを参照していても、問題にはなりません。ローカルサーバーは必要なく、sshでアクセスできるパブリックサーバーを使用できます。もちろん、外部からアクセスする必要がないのであれば、公開サーバーは必要ありません。ベアリポジトリはデスクトップシステム上にあり、ローカルファイルシステム内に作業コピーリポジトリを作成することができます。

$ mkdir myRepo; cd myRepo
$ git init --bare
$ cd /path/to/myProject
$ git remote add origin /path/to/myRepo
$ git add .; git commit -m "Initial"; git push origin master

これは、私がこれを処理する方法であり、私にとっては(完璧ではないにせよ)非常にうまく機能します。)

読むべきもの http://progit.org/ 本当に良い本です。