Подтвердить что ты не робот

Можно ли вытащить только один файл в Git?

Я работаю над веткой Git, в которой есть неработающие тесты, и я хотел бы вытащить (объединить изменения, а не просто перезаписать) эти тесты из другой ветки, где они уже исправлены.

Я знаю, что могу сделать

git pull origin that_other_branch

но это попытается объединить множество других файлов, для этого я еще не готов.

Можно ли вытащить и объединить только указанный файл (и не все) из этой другой ветки?

Это не дубликат Git pull-запроса только для одного файла, поскольку все ответы на этот вопрос - как вернуть локально измененный файл в версию репозитория, не меняя ветвей.

4b9b3361

Ответ 1

Вы можете получить, а затем проверить только один файл следующим образом:

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

Относительно команды git checkout : <revision> - имя ветки, т.е. origin/master <yourfilepath> не включает имя репозитория (которое можно получить, нажав кнопку copy path на странице файла на GitHub), т.е. README.md

Ответ 2

Вот немного более простой метод, который я только придумал, исследуя это:

git fetch {remote}
git checkout FETCH_HEAD -- {file}

Ответ 3

git checkout master -- myplugin.js

мастер = название ветки

myplugin.js = имя файла

Ответ 4

Ответ @Mawardy работал для меня, но мои изменения были на пульте, поэтому мне пришлось указать источник

git checkout origin/master -- {filename}

Ответ 5

# 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