web-dev-qa-db-ja.com

Git:リモートのOriginマスターから単一のファイルを更新/チェックアウトするにはどうすればいいですか?

シナリオ:

  1. 1つのファイルをローカルに変更して、git addgit commitおよびgit Pushを実行します。
  2. ファイルはリモートのOriginマスターリポジトリにプッシュされます
  3. そのリモートリポジトリから "remote_cache"メソッドを使ってCapistrano経由でデプロイされる別のローカルリポジトリがあります。
  4. 今、私はアプリケーション全体をデプロイするのではなく、ただその単一のファイルを更新/チェックアウトしたいだけです。

どうぞ、これはgitで可能ですか。私はうまくいくものを見つけることができませんでしたし、それを理解することもできませんでした。 SVNでは、svn up fileと出来上がりました。

どうぞよろしくお願いします。

277
foresth

(デプロイされたリポジトリで)実行することは可能です

git fetch
git checkout Origin/master -- path/to/file

フェッチは最近のすべての変更をダウンロードしますが、現在チェックアウトしているコード(作業領域)には入れません。

チェックアウトはダウンロードされた変更(Origin/master)からの特定のファイルで作業ツリーを更新します。

少なくともこれは、ファイル内の1つのWordを変更するだけのためにブランチなどを作成するのが奇妙に感じられる、ちょっとしたタイプミス修正には役立ちます。

763
qzio
git archive --format=Zip --remote=ssh://<user>@<Host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.Zip
18
Dmitry R

以下のコードは私のために働きました:

     git fetch
     git checkout <branch from which file needs to be fetched> <filepath> 
13
Shagun Pruthi

できることは:

  1. ローカルのgitリポジトリを更新します。

    git fetch

  2. ローカルブランチを作成してチェックアウトします。

    git branch pouet && git checkout pouet

  3. このブランチに必要なコミットを適用してください。

    git cherry-pick abcdefabcdef

    (abcdefabcdefは適用したいコミットのsha1です)

6
jag

あるいは、あなたが行っているブランチ上でstash(変更があれば)、masterをチェックアウトし、最新の変更を引っ張って、そのファイルをあなたのデスクトップ(あるいはアプリケーション全体)に持っていってください。あなたがいたブランチをチェックアウトしてください。 Git stashを元の状態に戻してから、手動で変更を修正するか、ファイルを置き換えてドラッグします。

この方法はそれほどクールではありませんが、もしあなたが他に何かを理解することができなければdefはうまくいきます。

2
jahrichie