web-dev-qa-db-ja.com

Gitでファイルを1つだけ引き出すことは可能ですか?

私はいくつかの壊れたテストを含むGitブランチで作業しています、そしてそれらが既に修正されている別のブランチからこれらのテストを引っ張りたい(変更をマージするだけでなく上書きしたい)のです。

私はできることを知っています

git pull Origin that_other_branch

しかし、これは他の多くのファイルをマージしようとします、それで私はまだ準備ができていません。

それはその別のブランチから指定されたファイルだけを引っ張ってマージすることは可能ですか。

これは1つのファイルに対するGit pull requestの複製ではありません。なぜなら、その質問に対するすべての答えはローカルで元に戻す方法だからです。ブランチを変更せずに、ファイルをリポジトリバージョンに変更しました。

142
h22

このようにして、ファイルを1つだけ取り出してチェックアウトすることができます。

git fetch
git checkout -m <revision> <yourfilepath>
git add <yourfilepath>
git commit

git checkoutコマンドに関して<revision> - ブランチ名、すなわちOrigin/master<yourfilepath>はリポジトリ名を含みません(GitHub上のファイルページのcopy pathボタンをクリックすることによって得られる)、すなわちREADME.md

124
aleroot

これを調べるときに思いついた、もう少し簡単な方法があります。

git fetch {remote}
git checkout FETCH_HEAD -- {file}
228
Chris
git checkout master -- myplugin.js

マスター=ブランチ名

myplugin.js =ファイル名

7
Mawardy

@ Mawardyの答えは私のために働きました、しかし私の変更はリモートでありました、それで私は起源を指定しなければなりませんでした

git checkout Origin/master -- {filename}
3
Luke Flournoy

はい、ここにプロセスがあります:

# Navigate to a directory and initiate a local repository
git init        

# Add remote repository to be tracked for changes:   
git remote add Origin https://github.com/username/repository_name.git

# Track all changes made on above remote repository
# This will show files on remote repository not available on local repository
git fetch

# Add file present in staging area for checkout
git check Origin/master -m /path/to/file
# NOTE: /path/to/file is a relative path from repository_name
git add /path/to/file

# Verify track of file(s) being committed to local repository
git status

# Commit to local repository
git commit -m "commit message"

# You may perform a final check of the staging area again with git status
1
Saurabh