Gitでチェックアウトされていないリモートストアのリモートストアを取得する方法

Gitでチェックアウトされていないリモートストアのリモートストアを取得する方法

チェックアウトされていないリモートリポジトリからリモートリポジトリを取得する方法はありますかgit

私のリモートPCにあるドットファイルはバージョン管理されています。yadm)。リポジトリが自分のローカルPCに複製されました(使用済みyadm)。しかし、私のローカルPCでは、他のドットファイル管理ユーティリティ(rcm)これはより大きな柔軟性を可能にします。

とは別の基盤で作業したyadmので、ローカルコンピュータで動作する作業を試みるためにいくつかの困難を経験する必要がありました。rcmsymlinks to ~bare git into ~yadm

  • 現在のシンボリックリンクポイントファイルのリンク解除rcm
  • チェックアウトyadm- ストレージ

この操作をキャンセルするには、次の手順を実行する必要があります。

  • yadmストレージチェックアウト時に複製されたすべてのファイルを削除する
  • シンボリックリンクファイルrcm

これは非常に迷惑なことです。だから私のリポジトリのローカルレプリカをyadm別のフォルダに複製しました。yadmローカルマスターリポジトリではすべてのリモートエントリを表示できますが、複製されHEADyadmリポジトリからのみインポートできます。

次のようになります。

remote PC (1):                    commit a (old, not checked out), commit b (HEAD -> master)
local  PC - main repository (2):  commit a (HEAD -> master), commit b (origin/master, not checked out)
local  PC - other repository (3): commit a (HEAD -> master), commit a origin/master

したがって、私のリポジトリには3コミットa(ストアからチェックアウト2)しか表示できず、コミットb(ストアではチェックアウトされませんでし2たが、そこで利用できるはずです)は表示されません。今私の質問は:私のリポジトリからどのようにコミットbを得ることができ、3なぜすべてがうまくいかないのですかgit fetch


アップデート1:テキストを少し編集すると(希望的に)質問がより明確になりました。

ベストアンサー1

すべてのリポジトリはベアリポジトリではないので、少なくとも重要な場所ではそうではありません。したがって、デフォルトの動作は観察されたようです。つまり、リポジトリ 3 はリポジトリ 2 のチェックアウトコミットのみを表示できるということです。

この動作をオーバーライドするにはgit fetchrefspec特に、他のリビジョンをインポートするために使用できるオプションのパラメータがあります。別のポイントにマッピングすると、これが少し簡単になります。

git fetch origin b

またはorigin/mastercommit を指すので as refspec を使ってもb動作origin/masterします。

git fetch origin origin/master

繰り返しますが、ブランチやタグをコミットすると、これらの取得がbより簡単になる可能性があります。そうでない場合は、コミットのハッシュを手動で指定してマージを実行する必要があります。いいえ使用)が表示されますgit log --all

おすすめ記事