Чи є команда в 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/file
commit hash
такі, як commit 06c98...
(06c98 ... що є хеш фіксації)commit hash
git 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 reflog
git 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 reflog
git 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
Таким чином, ви зберігаєте розширення файлу, щоб ваш редактор не скаржився, і ви можете легко знайти старий файл поруч із новим.