Скопировать версию файла из другой ветки или зафиксировать без перезаписи текущей версии? - PullRequest
0 голосов
/ 23 марта 2019

Как часть тестового сценария, я хочу скопировать версию файла из заголовка origin/master без , перезаписав текущую версию этого файла в ветви I В настоящее время проверил.

Чтобы объяснить, если я бегу:

git checkout origin/master -- a.txt

Это перезапишет a.txt в ветке, в которой я сейчас нахожусь. Я не хочу этого.

Я хочу скопировать a.txt из origin/master и сохранить его как новый файл с указанным путем, например, /tmp/a.master.txt

Я знаю, что могу git checkout origin/master, выполнить копирование вручную, а затем оформить заказ в другой моей ветке. Но есть ли какая-то мерзавская магия, которую я могу использовать вместо этого? В идеале я хочу иметь возможность использовать текущее состояние a.txt, которое может или не может быть зафиксировано, и использование git stash кажется слишком рискованным.

Ответы [ 2 ]

2 голосов
/ 23 марта 2019

Вы можете использовать git cat-file blob, чтобы получить конкретную версию файла.Например, вы можете запустить git cat-file blob origin/master:a.txt >/tmp/a.master.txt, чтобы проверить версию a.txt в ревизии origin/master.

. Вы также можете указать для этого другие, произвольно сложные выражения ревизии, при условии, что они указываютв каплю.

1 голос
/ 23 марта 2019

Вы можете использовать git show, чтобы помочь сделать это:

git show origin/master:a.txt > saved-a.txt

Вместо origin/master вы можете использовать любое имя ветви, тег, номер коммита и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...