[解決済み] 別のブランチから1つのファイルだけを取得する方法は?
質問
私はGitを使って
master
ブランチを作成しました。このブランチには
app.js
.
私の場合は
experiment
ブランチで、たくさんの変更と大量のコミットを行いました。今、私はすべての変更を
app.js
から
experiment
から
master
の分岐になります。
どうすればいいのでしょうか?
もう一度言いますが、私はマージを望んでいるわけではありません。私はただ、すべての変更を
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"
2019年8月更新、Git 2.23
新しい
git switch
と
git restore
コマンドになりますね。
git switch master
git restore --source experiment -- app.js
デフォルトでは、作業ツリーのみリストアされます。
インデックスも更新したい場合(ファイルの中身を復元するという意味。
と
を1つのコマンドでインデックスに追加します)。
git restore --source experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -SW -- app.js
として ヤコブ・ナレブスキー がコメントで言及しています。
git show experiment:path/to/app.js > path/to/app.js
も動作しますが、SOの質問で詳しく説明されているように、"
Gitで特定のリビジョンから単一のファイルを取得する方法は?
"では、レポのルートディレクトリからのフルパスを使用する必要があります。
したがって、Jakubが彼の例で使用したpath/to/app.jsは、そのようなものです。
として フロスティ がコメントで触れています。
app.jsの最新の状態のみを取得することができます。
しかし
git checkout
または
git show
という質問がありますが、実際にはSOの質問で説明されているように、好きなリビジョンを参照することができます。
git gui でファイルのリビジョンをチェックアウトする
となります。
$ 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 pull リモートブランチがリモートの参照先を見つけることができない
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] ファイルをリセットしたり、特定のリビジョンに戻したりするにはどうすればよいですか?
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] git rebase の取り消し
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】git rev-parseは何をするのですか?
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] Gitで1つのファイルの作業コピーの変更を元に戻す?
-
[解決済み] ある Git ブランチから別のブランチに、単一のファイルのバージョンをコピーするにはどうすればよいですか?
-
[解決済み] Gitで特定のリビジョンから単一のファイルを取得する方法とは?
-
[解決済み] ブランチを変更せずに別の Git ブランチにあるファイルを表示する
-
[解決済み】ローカルのGitブランチをリモートの違う名前に簡単にプッシュするにはどうすればいいですか?
-
[解決済み】gitリポジトリから1つのファイルだけをスパースにチェックアウトする方法は?
-
[解決済み] meldでブランチの違いを見る?