Чи є команда в Git переглядати (скидається на stdout, або в $PAGERабо $EDITOR) певну версію певного файлу?
git checkout <sha1-of-the-commit-you-need>згодом,git checkout HEAD
Чи є команда в Git переглядати (скидається на stdout, або в $PAGERабо $EDITOR) певну версію певного файлу?
git checkout <sha1-of-the-commit-you-need>згодом,git checkout HEAD
Відповіді:
Ви можете використовувати git showшлях з кореня сховища ( ./або ../для відносного шляху):
$ git show REVISION:path/to/file
Замініть REVISIONсвою фактичну редакцію (це може бути Git commit SHA, ім'я тегу, ім'я гілки, відносне ім’я фіксації чи будь-який інший спосіб ідентифікації комісії в Git)
Наприклад, щоб переглянути версію файлу <repository-root>/src/main.cз 4 коміток тому, використовуйте:
$ git show HEAD~4:src/main.c
Git для Windows вимагає нахилення косої риски навіть у шляхах відносно поточного каталогу. Для отримання додаткової інформації ознайомтеся з довідковою сторінкою git-show.
Це за датою виглядає приблизно так:
git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt
Зауважте, що HEAD@{2013-02-25}в цьому сховищі (за допомогою рефлогу ) "HEAD був 2013-02-25" , а не "останній запис до 2013-02-25 у цій гілці історії".
masterзамість HEAD@{2013-02-25}, якщо ви перебуваєте на гілці,
git log --since='2016-04-28 23:59:59 +0100'?
Якщо вам подобаються графічні інтерфейси, ви можете використовувати gitk:
почати gitk з:
gitk /path/to/file
Виберіть версію у верхній частині екрана, наприклад, за описом чи датою. За замовчуванням у нижній частині екрана відображається різниця для цієї версії (що відповідає перемикачу "патч").
Щоб побачити файл для вибраної версії:
gitk REVISION /path/to/file. Це може стати в нагоді, якщо, наприклад, ви хочете перевірити певну версію.
Ви також можете вказати командуcommit hash (часто її також називають commit ID) .git show
git show <commitHash>:/path/to/file
git log /path/to/filecommit hashтакі, як commit 06c98...(06c98 ... що є хеш фіксації)commit hashgit show <commitHash>:/path/to/fileвикористовуючи commit hashкрок 3 та path/to/fileкрок 1.Примітка: додавання ./значень при заданні відносного шляху здається важливим, тобто git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html.
git show <SHA1> --name-onlyйого.
Окрім відповіді Джима Ханзікера ,
ви можете експортувати файл із версії як,
git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt
Сподіваюся, це допомагає :)
Щоб швидко побачити відмінності від старих версій файлу:
git show -1 filename.txt> для порівняння з останньою версією файлу
git show -2 filename.txt> для порівняння з другою останньою редакцією
git show -3 fielname.txt> для порівняння з останньою третьою останньою редакцією
git log -pпокаже вам не лише журнали фіксації, але й різницю кожного комітету (за винятком об'єднань). Потім ви можете натиснути /, ввести ім'я файлу та натиснути enter. Натисніть nабо, pщоб перейти до наступного / попереднього події. Таким чином, ви не просто побачите зміни у файлі, а й інформацію про фіксацію.
git log -pm, також було б показано об'єднання комітетів.
git log -p -- filename.txtщоб обмежити історію лише потрібним файлом.
Ви можете використовувати такий сценарій, щоб скинути всі версії файлу для розділення файлів:
напр
git_dump_all_versions_of_a_file.sh path/to/somefile.txt
Отримайте сюди сценарій як відповідь на інше подібне запитання
git_root, git_log_shortі git_log_message_for_commitвідсутні.
ШЛЯХ 1: (я віддаю перевагу цьому)
git refloggit diff-tree --no-commit-id --name-only -r <commitHash>приклад:
git diff-tree --no-commit-id --name-only -r d2f9ba4// "d2f9ba4" - це ідентифікатор фіксації з "1."
git show <commitHash>:/path/to/file
приклад:
git show d2f9ba4:Src/Ext/MoreSwiftUI/ListCustom.swift// "Src / ..." - шлях до файлу з "2."
ШЛЯХ 2:
git refloggit reset --hard %commit ID%git reset - твердий c14809fa
Допоможіть отримати декілька файлів із заданої версії
Намагаючись вирішити конфлікти злиття, цей помічник дуже корисний:
#!/usr/bin/env python3
import argparse
import os
import subprocess
parser = argparse.ArgumentParser()
parser.add_argument('revision')
parser.add_argument('files', nargs='+')
args = parser.parse_args()
toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel']).rstrip().decode()
for path in args.files:
file_relative = os.path.relpath(os.path.abspath(path), toplevel)
base, ext = os.path.splitext(path)
new_path = base + '.old' + ext
with open(new_path, 'w') as f:
subprocess.call(['git', 'show', '{}:./{}'.format(args.revision, path)], stdout=f)
Використання:
git-show-save other-branch file1.c path/to/file2.cpp
Результат: наведені нижче містять альтернативні версії файлів:
file1.old.c
path/to/file2.old.cpp
Таким чином, ви зберігаєте розширення файлу, щоб ваш редактор не скаржився, і ви можете легко знайти старий файл поруч із новим.