チェックアウトされていないリモートリポジトリからリモートリポジトリを取得する方法はありますかgit
?
私のリモートPCにあるドットファイルはバージョン管理されています。yadm
)。リポジトリが自分のローカルPCに複製されました(使用済みyadm
)。しかし、私のローカルPCでは、他のドットファイル管理ユーティリティ(rcm
)これはより大きな柔軟性を可能にします。
とは別の基盤で作業したyadm
ので、ローカルコンピュータで動作する作業を試みるためにいくつかの困難を経験する必要がありました。rcm
symlinks to ~
bare git into ~
yadm
- 現在のシンボリックリンクポイントファイルのリンク解除
rcm
- チェックアウト
yadm
- ストレージ
この操作をキャンセルするには、次の手順を実行する必要があります。
yadm
ストレージチェックアウト時に複製されたすべてのファイルを削除する- シンボリックリンクファイル
rcm
これは非常に迷惑なことです。だから私のリポジトリのローカルレプリカをyadm
別のフォルダに複製しました。yadm
ローカルマスターリポジトリではすべてのリモートエントリを表示できますが、複製されHEAD
たyadm
リポジトリからのみインポートできます。
次のようになります。
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 fetch
refspec
特に、他のリビジョンをインポートするために使用できるオプションのパラメータがあります。別のポイントにマッピングすると、これが少し簡単になります。
git fetch origin b
またはorigin/master
commit を指すので as refspec を使ってもb
動作origin/master
します。
git fetch origin origin/master
繰り返しますが、ブランチやタグをコミットすると、これらの取得がb
より簡単になる可能性があります。そうでない場合は、コミットのハッシュを手動で指定してマージを実行する必要があります。いいえ使用)が表示されますgit log --all
。