1

プロジェクト リポジトリ (GitHub 上) と私のフォーク (同じく GitHub 上) があるとします。私のフォークは、プロジェクト リポジトリに (まだ) 受け入れられていない単一のファイル (バグ修正) に対する 1 つのリビジョンが含まれていることを除いて、同じです。バグ修正を含め、ソフトウェアの最新バージョンをダウンロードする方法について、サード パーティにインストール手順を提供しようとしています。

私の知る限り、彼らはこれをしなければなりません:

git clone http://projectrepo
git remote add myrepo http://myrepo
git fetch myrepo
git cherry-pick a12345
git remote rm myrepo

(myrepo を最新の状態に維持するつもりはないと仮定します。私の指示は、プロジェクトへの関与よりも長く存続させたいと考えています。プロジェクトは間もなく終了する可能性があります。また、このファイルに他の変更が加えられる可能性があると想定しているため、単純にファイル全体は安全ではありません。)

これにはいくつかの準最適性があります:

  1. 2 つの Git リポジトリ全体を転送する必要があります
  2. 1 つのファイルを取得するためだけに 3 つの追加コマンドが必要です。

より良い解決策はありますか?より簡単な方法で単一のリビジョンを入手できますか?

4

3 に答える 3

4

パッチ ファイルを作成して、それを適用するように指示するだけでは何か問題がありますか? 電子メールで送信する必要がないように、Gist として保存することもできます。

パッチを作成します。

git format-patch -1 a12345

それを適用します。

git clone http://projectrepo
cd projectrepo
wget https://raw.github.com/gist/<patch-file>
git am -3 <patch-file>
于 2012-04-23T03:37:35.540 に答える
2

remote add/をスキップremote rm:

git clone http://projectrepo
git fetch http://myrepo remote-branch-name
git cherry-pick a12345

コミットが の HEAD であることがわかっている場合は、代わりにremote-branch-name行うことができますgit cherry-pick FETCH_HEAD

于 2012-04-23T07:01:41.660 に答える
0

AFAICTは、両方のリポジトリをフェッチするようにgitに手動で指示する必要はありません。あなたはただ行くことができます

git clone http://myrepo
cd myrepo; git co <rev/branch> # maybe

そして、git/githubがすべての詳細を処理します。

于 2012-04-23T03:15:01.173 に答える