[解決済み] git repository sync between computers, when moving around?
質問
私はデスクトップ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/ 本当に良い本です。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] GitHubでフォークされたリポジトリを更新または同期するにはどうすればよいですか?
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み】Git リポジトリに空のディレクトリを追加するには?
-
[解決済み] Git のプッシュが "non-fast-forward" で拒否されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Gitで「このリポジトリでは別のgitプロセスが実行されているようです...」と表示される問題
-
[解決済み] SSH経由でリモートプロジェクトをEclipseで作業する
-
git occurs このリポジトリで別のgitプロセスが動作しているようです。例えば、.NETで開いたエディタなど。エラー
-
GitのPlease enter a commit messageで、このマージが必要な理由を説明してください。
-
giteaを使ったGitサービスの構築
-
Gitのコミットでfatal: unable to auto-detect email addressのエラーが報告される。
-
[解決済み] gitにもsvnのような無視コマンドはありますか?
-
[解決済み] 現在のブランチにあるファイルをメインブランチにある同じファイルに上書きしますか?
-
[解決済み] Git は、省略形のコミット ID が 2 つの異なるコミットを参照する場合に警告を発しますか?
-
[解決済み] Gitブランチの名前をローカルとリモートで変更できますか?重複