私はgitを使ってマスターブランチに取り組んでいます。このブランチにはapp.js
というファイルがあります。
私はexperiment
ブランチを持っていて、そこで私はたくさんの変更とたくさんのコミットをしました。さて、私はexperiment
からmaster
へのapp.js
だけに加えられたすべての変更を持って行きたいです。
それ、どうやったら出来るの?
もう一度マージしたくありません。 app.js
のすべての変更をexperiment
ブランチからmaster
ブランチに移したいだけです。
git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
として JakubNarębski はコメントに言及する:
git show experiment:path/to/app.js > path/to/app.js
ただし、SO質問「 Gitの特定のリビジョンから単一のファイルを取得する方法は? 」に詳述されているように、ディレクトリのルートディレクトリからフルパスを使用する必要があります。レポ。
したがって、彼の例ではJakubによって使用されるパス/ to/app.js。
As Frosty はコメントで述べている:
app.jsの最新の状態のみを取得します
しかし、git checkout
またはgit show
については、SO質問 " git gui "内のファイルのgit checkoutリビジョンに示すように、実際には任意のリビジョンを参照できます。
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
$ FILENAMEはバージョン付きファイルのフルパスです。
$REVISION
は git rev-parse
に示すようになります。
experiment@{yesterday}:app.js # app.js as it was yesterday
experiment^:app.js # app.js on the first commit parent
experiment@{2}:app.js # app.js two commits ago
等々。
あなたはまた隠し場所からこれを行うことができます:
git checkout stash -- app.js
これは、2つのブランチに取り組んでいてコミットしたくない場合に非常に便利です。
すべてがはるかに簡単です。そのためにはgit checkoutを使用してください。
you're on master
branchを取得してapp.js from new-feature
branchを得るとします。
git checkout new-feature path/to/app.js
// note that there is no leading slash in the path!
これにより、目的のファイルの内容が表示されます。new-featureの代わりにsha1の一部を使用することもできます。 branch nameは、その特定のコミットの場合と同じようにファイルを取得します。
VonCとchhhの答えを補足する。
git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js
または
git checkout experiment -- app.js
git checkout branch_name file_name
例:
git checkout master App.Java
支店名にピリオドが含まれていると、これは機能しません。
git checkout "fix.june" alive.html
error: pathspec 'fix.june' did not match any file(s) known to git.
あるいは、他のブランチからすべてのファイルが欲しいならば:
git checkout <branch name> -- .
これは実用的なアプローチであり、直接OPに答えることはありませんが、便利な方法がいくつかあります。
問題のブランチがGitHub上にある場合は、GitHubが提供する多数のツールのいずれかを使用して目的のブランチとファイルに移動し、[Raw]をクリックしてプレーンテキストを表示し、(オプション)欲しい。
このアプローチが好きなのは、リモートファイルをローカルマシンに引き渡す前に、リモートファイル全体を見ることができるからです。