2017-03-04 16 views
-1

から[REFがなければ]コミット/フェッチ私は、私がアクセスしようと2と同様のレポ がコミット & Bをされました簡単に、私がアクセスしようとしているコミットにREFが指定されている場合、REFが何らかの形で失われたように見えます。私はコミットのSHA-1しか持っていません。チェリーピックが異なるレポ

私は今それを行うような方法は、次のようになります。

レポ

git remote add repo_b path/to/repo_b.git 
git fetch repo_b 
git cherry-pick SHA-1 

私はリポジトリ全体、参考文献をフェッチ避けるだけフェッチ/ cherry-を行うにためにとにかくありそのコミットを直接ピックしますか?

編集

私は、あなたが(彼らのtreeblobオブジェクトと一緒に)自分自身とその親をコミット両方必要、チェリーピック操作を行うには、同様

答えて

0

親へのアクセスを得ましたコミットをパッチに変換することができます。その後、パッチを適用することができます。

To 通常のGitトランスポート操作でコミットとその親を取得しますが、コミットが到達可能な参照が必要です。 (git fetchと言ったように、おそらく特定の参照名や--depthであなた自身のリポジトリに持ってくるオブジェクトの数を制限することができます)。

これは利用できない場合は、通常のGitトランスポート)。これには何らかのWebインターフェイスが含まれている可能性があります。その場合、どのURLがサーバー上のどのメソッドを呼び出すかを知る必要があります。または、git archiveを試してみることもできます。

git archiveは通常、自分のコミットをバンドルするためにローカルリポジトリで実行するものですが、--remoteオプションがあり、サーバー上でgit upload-archiveを呼び出します。 「裸の」ハッシュIDが許可されているかどうかなど、セキュリティに関する注意事項のドキュメントを参照してください。コミットとその親のの両方が必要です。

サーバーに直接アクセスできる場合は、git format-patchを使用してコミットをパッチに変換するのが最も簡単な方法です。得られたパッチを元に戻してgit amを使用して適用し、結果からコミットしてください。git cherry-pickと同じです。

+0

私は親にアクセスできます。これがあれば、それ以上のヒントはありますか? – Przmak

+0

コミットと親の両方があると、2つのツリーをdiffします(実際のコミットオブジェクトとして持っている場合は 'git diff'、それ以外の場合は他のdiff-you *がGitを取得できます。彼らをアーカイブなどにしてください)。次に、 'git apply'を使ってパッチを適用し、' git commit'を選択されたコミットからのメッセージで置き換えます。 – torek

関連する問題