Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git использует метаданные фиксации такие как родительские ссылки, данные об авторе и метки времени для отслеживания истории изменений в репозитории. Вы можете просмотреть журнал Git, чтобы узнать, когда файлы изменились, кто их изменил, и какие изменения были внесены.
Когда люди создают и объединяют ветви функций в целевую ветвь с помощью запросов на вытягивание, журнал разработки целевой ветви может не быть прямой хронологической линией. Таким образом, при просмотре журнала изменений в файле в целевой ветви следует помнить, что порядок фиксаций зависит от стратегии слияния и даты слияния, а не только исходной даты изменений. Например, последняя фиксация в main
ветви может привести к изменению, которое было сделано несколько недель назад в ветви функций, которая была только объединена в main
ветвь с помощью трехстороннего слияния.
Сведения об использовании Visual Studio 2022 с Git см. в статье "Как Visual Studio упрощает управление версиями с помощью Git".
Предпосылки
Категория |
Требования |
доступ к проекту |
Член проекта . |
Разрешения |
— Просмотр кода в частных проектах: по крайней мере базовый доступ. — Клонирование или внесение вклада в код в частных проектах: Участник группы безопасности для участников или наличие соответствующих разрешений в проекте. — Задайте разрешения ветви или репозитория: управление разрешениями для ветви или репозитория. — Измените ветвь по умолчанию: . Измените политики и разрешения для репозитория. — Импорт репозитория: член группы безопасности администраторов проекта или разрешение уровня проекта Git на создание репозитория установлено в «Разрешить» . Дополнительные сведения см. в разделе "Настройка разрешений репозитория Git". |
Сервисы; |
Repos включено. |
Инструменты |
Необязательно. Используйте команды az repos: Azure DevOps CLI. |
Примечание.
В общедоступных проектах пользователи с доступом Stakeholder имеют полный доступ к Azure Repos, включая возможность просмотра, клонирования и участия в коде.
Категория |
Требования |
доступ к проекту |
Член проекта . |
Разрешения |
— Просмотр кода: доступ уровня Basic хотя бы . — Клонирование или участие в коде: член группы безопасности участников или обладатель соответствующих разрешений в проекте. |
Сервисы; |
Repos включено. |
Сравнение версий файлов
Если вы хотите выяснить, как и когда произошло изменение определенного файла, вам может потребоваться сравнить разные версии одного файла из разных коммитов, возможно, в разных ветвях.
Сайт проекта команды Azure DevOps позволяет сравнивать две версии одного и того же файла из коммитов в одной ветви, но не поддерживает сравнение версий файлов в разных ветвях.
В веб-браузере откройте командный проект для организации Azure DevOps. В представлении "Файлы репозитория>" выберите файл и перейдите на вкладку "Сравнение".
На вкладке "Сравнение " выберите две фиксации, содержащие версии файлов, которые нужно сравнить. В представлении диффа отображаются все новые, удаленные или измененные строки файлов.
Примечание.
GitHub позволяет сравнить две версии одного файла из различных коммитов на разных ветвях. Чтобы сравнить, добавьте /compare/<commit1>..<commit2>
URL-адрес репозитория GitHub, чтобы перейти на страницу сравнения. Страница сравнения содержит представление диффа для каждого файла, который отличается. Дополнительные сведения о сравнении фиксаций в GitHub см. в разделе "Сравнение фиксаций".
Visual Studio 2022 предоставляет интерфейс управления версиями Git с помощью меню Git, изменений Git и контекстных меню в Обозреватель решений. Visual Studio 2019 версии 16.8 также предлагает пользовательский интерфейс Team Explorer Git. Дополнительные сведения см. на вкладке Visual Studio 2019 — Team Explorer .
Visual Studio позволяет сравнивать две версии одного и того же файла в одной ветви, но не поддерживает сравнение версий файлов между ветвями.
В Обозревателе решений выберите файл и кликните Git > Просмотр истории в контекстном меню файла, чтобы открыть вкладку История Git для выбранного файла.
На вкладке "Журнал Git " выберите "Сравнить с предыдущим " в контекстном меню фиксации, чтобы открыть вкладку Diff , которая сравнивает выбранную фиксацию с предыдущей фиксацией.
Или выберите две фиксации и выберите "Сравнить " из контекстного меню фиксации, чтобы открыть вкладку Diff , которая сравнивает две выбранные фиксации.
На вкладке Diff отображаются новые, удаленные или измененные строки файлов.
Team Explorer не поддерживает эту функцию.
Команда git diff может сравнить разные версии одного файла из разных коммитов в разных ветвях. Команда git log может помочь вам идентифицировать коммиты, которые содержат нужные версии файлов для сравнения.
Используйте git log
и укажите файл, чтобы перечислить коммиты, изменившие этот файл.
git log <file>
По умолчанию вывод команды начинается с самого последнего коммита в текущей ветке, а затем проходит в обратном порядке через коммиты предков (независимо от ветки), следуя родительским ссылкам в метаданных каждого коммита.
Ниже приведен пример выходных данных для команды git log index.html
:
commit bbc3b679197b659544a6f8070c79fb535b496613
Date: Thu Jun 30 13:42:50 2021 -0400
update landing page
commit e5402fe710c25eca1b96a4e238eee9c01ed41c6a
Date: Thu Jun 30 13:42:23 2021 -0400
initial commit
Используйте git diff
и укажите файл и две фиксации, чтобы узнать, как отличаются зафиксированные версии файлов:
git diff <commit1> <commit2> <file>
Ниже приведен пример выходных данных для команды git diff bbc3b67 e5402fe index.html
:
- <link rel="stylesheet" href="app.cs"/>
+ <link rel="stylesheet" href="fabrikam.cs"/>
Выходные данные показывают, что одна строка была удалена и была добавлена одна строка.
Ограничение выходных данных журнала Git
Чтобы ограничить фиксации, которые git log
перечисляются, можно фильтровать по автору, дате, сообщению, изменённому содержимому и т. д. Рассмотрим пример.
git log --author=frank@fabrikam.com index.html
перечисляет только коммиты указанного автора.
git log --since="2022-5-1"
отображает только фиксации, созданные после указанной даты.
git log --before="yesterday"
отображает только коммиты, созданные до указанной даты относительно.
git log --grep="css change"
только показывает коммиты с указанным текстом в их сообщениях.
git log -S"myVariable"
Перечисляет только коммиты, которые вводят или удаляют указанную строку.
git log -G"myVar.*"
Перечисляет только фиксации, которые вводят или удаляют указанную строку regex.
git log -3
перечисляет только последние три коммита.
У вас есть несколько параметров формата для списка коммитов. Рассмотрим пример.
git log --abbrev-commit
перечисляет коммиты с помощью укороченного идентификатора (контрольная сумма SHA-1).
git log --oneline
перечисляет каждый коммит в виде однострочной сокращенной формы.
git log --patch index.html
перечисляет каждую фиксацию вместе с диффом изменений.
Восстановление файлов
Вы можете восстановить определенную версию файла из журнала Git, даже если файл был изменен, удален или переименован в последующей фиксации. Восстановление более старой версии файла не создает новую фиксацию с изменением. Чтобы обновить ветвь с восстановленной версией файла, необходимо зафиксировать это изменение.
Сайт проекта Azure DevOps позволяет отменить все изменения, внесенные конкретным коммитом, но не поддерживает отмену изменений в одном файле этого коммита.
Visual Studio позволяет сравнивать две версии одного и того же файла в одной ветви, но не поддерживает сравнение версий файлов между ветвями.
В Обозревателе решений выберите файл и выберите Просмотреть историю Git в контекстном меню файла, чтобы открыть вкладку История Git для выбранного файла.
На вкладке Журнал Git выберите Сравнить с предыдущим в контекстном меню коммита, чтобы открыть вкладку Diff, которая сравнивает выбранный коммит с предыдущим.
Или выберите две фиксации и выберите "Сравнить " из контекстного меню фиксации, чтобы открыть вкладку Diff , которая сравнивает две выбранные фиксации.
На вкладке Diff отображаются новые, удаленные или измененные строки файлов.
Visual Studio 2019 версии 16.8 и более поздних версий предоставляет интерфейс управления версиями Git при сохранении пользовательского интерфейса Team Explorer Git. Чтобы использовать Team Explorer, снимите флажок Инструменты>Параметры>Предварительные функции>Новый пользовательский интерфейс Git в строке меню.
В обозревателе решений выберите файл и выберите журнал представлений Git в контекстном меню файла, чтобы открыть вкладку журнала Git > для выбранного файла.
На вкладке Журнал Git выберите фиксацию и выберите в контекстном меню фиксации пункт Просмотреть сведения о фиксации, чтобы открыть представление Сведения о фиксации.
В представлении "Сведения о фиксации " выберите файл и выберите "Открыть " в контекстном меню файла, чтобы открыть предыдущую версию файла на новой вкладке.
Выберите "Сохранить файл > как" в строке меню, чтобы сохранить восстановленную версию файла.
Чтобы восстановить определенную версию файла из журнала Git, можно использовать флажок git или команды Git.
git checkout возвращает файл к ранее зафиксированной версии, если указать файл и коммит:
git checkout <commit> <file>
Например, git checkout 85435fac src/app.ts
возвратит src/app.ts
файл в свою версию в фиксации 85435fac
.
Git отображает содержимое ранее зафиксированной версии файла, которую можно перенаправить в выходной файл:
git show <commit>:<file> > <output file>
Например, git show 85435fac:src/app.ts > /archive/oldapp.ts
будет записывать содержимое app.ts
в фиксации 85435fac
в /archive/oldapp.ts
.
сравните ветви.
Вы можете сравнить любые локальные или удаленные ветви, чтобы просмотреть изменения, которые будут возникать из слияния или повторной базы. Сравнение ветвей позволяет обнаружить конфликты слияния и увидеть, как изменения, внесенные другими пользователями, могут повлиять на вашу работу.
Visual Studio 2019 и более ранних версий не поддерживают сравнение ветвей, поэтому если вы используете одну из этих версий, вы можете сравнить ветви в командной строке Git или с помощью веб-браузера, если репозиторий размещен в Azure Repos или GitHub. Visual Studio 2022 поддерживает сравнение ветвей, как описано в разделе "Сравнение ветвей".
В веб-браузере откройте командный проект для организации Azure DevOps. В представлении «Ветви Repos>» выберите значок многоточия рядом с любой ветвью и выберите опцию Сравнить ветви, чтобы открыть представление «Сравнение ветвей».
В режиме сравнения веток выберите две ветки, которые нужно сравнить. Перейдите на вкладку "Файлы " для представления диффа новых, удаленных или измененных строк в каждом измененном файле.
Примечание.
GitHub поддерживает сравнение ветвей. Чтобы сравнить две ветви, добавьте /compare/<branch1>...<branch2>
URL-адрес репозитория GitHub, чтобы перейти на страницу сравнения. Страница сравнения содержит представление диффа для каждого файла, который отличается. Дополнительные сведения о сравнении ветвей в GitHub см. в разделе "Сравнение ветвей".
Чтобы сравнить ветвь с текущей ветвью, щелкните правой кнопкой мыши в области "Ветви " репозитория и выберите параметр сравнения. Контекстное меню указывает имена текущих и целевых ветвей:
Visual Studio 2019 не поддерживает сравнение ветвей. Однако можно сравнить ветви в командной строке Git или с помощью веб-браузера, если репозиторий размещен в Azure Repos или GitHub.
Подсказка
Вы можете получить доступ к веб-порталу из домашнего представления Team Explorer, выбрав веб-портал.
Для сравнения двух локальных или удаленных ветвей можно использовать команду Git diff
, указывающую имена ветвей:
git diff <branch1> <branch2>
Git сравнивает коммит на конце одной ветки с коммитом на конце другой. Выходные данные диффа будут отображать удаления и дополнения между каждым файлом в двух ветвях.
Ниже приведен пример выходных данных для команды git diff users/frank/feature origin/main
, которая сравнивает локальную ветвь с удаленной ветвью:
index 36843b8..03afc4b 100644
--- a/tsapp/index.html
+++ b/tsapp/index.html
@@ -4,7 +4,7 @@
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
- <link rel="stylesheet" href="fabrikam-test.css" type="text/css" />
+ <link rel="stylesheet" href="fabrikam.css" type="text/css" />
<script src="app.js"></script>
</head>
...
--- a/tsapp/app.ts
+++ b/tsapp/app.ts
constructor(element: HTMLElement) {
this.element = element;
- this.element.innerHTML += "The time is: ";
+ this.element.innerHTML += "The time is now: ";
this.span = document.createElement('span');
this.element.appendChild(this.span);
this.span.innerText = new Date().toUTCString();
Чтобы сузить сравнение с определенным файлом, укажите файл в команде diff
:
git diff <branch1> <branch2> <file>
Например, git diff users/frank/feature origin/main index.html
будет создаваться только дифф для index.html
файла.
Дальнейшие действия
Связанные статьи