Verwenden von Befehlen der Team Foundation-Versionskontrolle
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Sie können Befehle der Versionskontrolle verwenden, um fast alle Aufgaben der Team Foundation-Versionskontrolle (TFVC) durchzuführen, die Sie in Visual Studio erledigen können. Sie können auch Befehle der Versionskontrolle verwenden, um verschiedene Aufgaben zu erledigen, die in Visual Studio nicht möglich sind. Um Befehle der Versionskontrolle über eine Eingabeaufforderung oder innerhalb eines Skripts auszuführen, verwenden Sie das Tool tf.exe
.
Ausführen eines Befehls
Um die Visual Studio-Eingabeaufforderung zu starten, wählen Sie unter Windows Start die Tastenkombination für Developer-Eingabeaufforderung für VS2022 oder frühere Versionen aus.
Hinweis
Bei Visual Studio 2019 und höheren Versionen befindet sich die tf.exe
-Binärdatei nicht mehr wie bei einigen früheren Versionen an einem festen Speicherort im Visual Studio-Installationspfad, z. B. C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
. Wenn Ihr Skript tf.exe
verwendet, sollten Sie den Pfad zur Datei nicht auf der Grundlage des Visual Studio-Installationspfads hartcodieren.
In den meisten Fällen führen Sie den Versionskontrollbefehl im Kontext eines Verzeichnisses aus, das im Arbeitsbereich zugeordnet ist. Beispielsweise wird $/SiteApp/Main/
zu c:\\code\\SiteApp\\Main\\
zugeordnet. Verwenden Sie den folgenden Befehl, um die neueste Version aller Elemente im Arbeitsbereich abzurufen:
c:\code\SiteApp\Main\SolutionA>tf get
Einrichten Ihres Entwicklungscomputers und Verwalten von Arbeitsbereichen
Ihr Arbeitsbereich ist eine lokale Kopie der Codebasis Ihres Teams. Da es sich um eine lokale Kopie auf Ihrem Entwicklungscomputer handelt, können Sie Ihren Code isoliert entwickeln und testen, bis Sie bereit sind, Ihre Arbeit einzuchecken. Im Folgenden werden einige Befehle zum Verwalten des Arbeitsbereichs aufgeführt:
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Einrichten der Team Foundation-Versionskontrolle auf dem Entwicklercomputer
- Erstellen und Verwenden von Arbeitsbereichen
Entwickeln Ihrer App
Verwenden Sie diese Befehle, um mit dem Team eine App unter Versionskontrolle zu entwickeln:
- Add-Befehl: Fügt Dateien und Ordner zur Versionskontrolle hinzu.
- Checkout-Befehl (oder „Edit“): Checkt eine Datei aus und ändert den Status der ausstehenden Änderungen in Bearbeiten.
- Delete-Befehl (Team Foundation-Versionskontrolle): Entfernt Dateien und Ordner vom Azure DevOps-Server und löscht sie vom Datenträger.
- Get-Befehl: Ruft die neueste Version oder eine bestimmte Version einer oder mehrerer Dateien oder Ordner vom Azure DevOps-Server im Arbeitsbereich ab (lädt sie herunter).
- Rename-Befehl (Team Foundation-Versionskontrolle): Ändert den Namen oder Pfad einer Datei oder eines Ordners.
- Status-Befehl: Zeigt Informationen über ausstehende Änderungen an Dateien und Ordnern in Arbeitsbereichen oder in einem Shelveset an.
- Undo-Befehl: Verwirft die angegebenen ausstehenden Änderungen an Dateien oder Ordnern.
- Undelete-Befehl: Stellt Elemente wieder her, die zuvor gelöscht wurden.
Weitere Informationen finden Sie unter Entwickeln von Apps in der Team Foundation-Versionskontrolle.
Die Arbeit anhalten
Aus verschiedenen Gründen müssen Sie manchmal einen Teil oder die Gesamtheit Ihrer in Bearbeitung befindlichen Arbeit beiseite legen. Verwenden Sie zum Anhalten und Fortsetzen der Arbeit sowie zum Verwalten von Shelvesets folgende Befehle:
Weitere Informationen finden Sie unter Unterbrechen der Arbeit und Verwalten von Shelvesets.
Arbeit hinzufügen
Verwenden Sie den Befehl checkin
, um Ihren Code in die Codebasis des Teams einzuchecken:
- Checkin-Befehl: Checkt ausstehende Änderungen an Dateien oder Ordnern auf dem Server ein.
Weitere Informationen finden Sie unter Einchecken Ihrer Arbeit in die Codebasis des Teams.
Dateien verwalten und Probleme lösen
Verwenden Sie die Ressourcen in den folgenden Abschnitten, um Dateien zu verwalten.
Anzeigen und Verwalten von Dateien und Ordnern unter Versionskontrolle
- Properties-Befehl (oder „Info“): Zeigt Informationen über Elemente in der Versionskontrolle an.
- Dir-Befehl: Zeigt den Inhalt des Servers für die Versionskontrolle an.
- Destroy-Befehl (Team Foundation-Versionskontrolle): Löscht Dateien mit Versionskontrolle dauerhaft.
- LocalVersions-Befehl: Zeigt die Versionen der Elemente im Arbeitsbereich an.
Weitere Informationen finden Sie unter Verwenden des Quellcodeverwaltungs-Explorers zum Verwalten von Dateien unter Versionskontrolle.
Anzeigen und Verwalten früherer Versionen
- Changeset-Befehl: Ändert die Attribute des Changesets oder zeigt diese an.
- History-Befehl: Zeigt den Revisionsverlauf von Dateien oder Ordnern an.
- Label-Befehl (Team Foundation-Versionskontrolle): Fügt Bezeichnungen zu Dateien oder Ordnern hinzu oder entfernt sie.
- Labels-Befehl: Zeigt Informationen über Bezeichnungen an, die auf dem Server verwendet werden.
- Rollback-Befehl (Team Foundation-Versionskontrolle): Führt einen Rollback hinsichtlich der Auswirkungen von Changesets durch.
- Unlabel-Befehl: Entfernt ein Element aus einer bestehenden Bezeichnung auf dem Server.
- View-Befehl: Ruft eine bestimmte Version einer Datei ab und zeigt sie an.
Weitere Informationen finden Sie unter Anzeigen und Verwalten früherer Versionen.
Vergleichen von Ordnern und Dateien
- Difference-Befehl: Vergleicht Unterschiede zwischen Dateien und Shelvesets.
- Folderdiff-Befehl: Vergleicht die Unterschiede zwischen Dateien in zwei Ordnern.
Weitere Informationen finden Sie unter Anzeigen und Verwalten früherer Versionen.
Lösen von Dateikonflikten
- Resolve-Befehl: Löst Konflikte zwischen Elementen in Ihrem Arbeitsbereich und auf dem Server auf.
Weitere Informationen finden Sie unter Lösen von Konflikten der Team Foundation-Versionskontrolle.
Arbeiten mit Versionskontrollsperren
- Lock-Befehl: Sperrt oder entsperrt Dateien und Ordner.
Weitere Informationen finden Sie unter Arbeiten mit Versionskontrollsperren.
Risiken isolieren
Verwenden Sie die folgenden Befehle, um Risiken mithilfe von Branches zu isolieren:
Weitere Informationen finden Sie unter Verwenden von Branches zum Isolieren von Risiken in der Team Foundation-Versionskontrolle.
Verwalten der Versionskontrolle
Verwenden Sie die folgenden Befehle, um Ihr Versionskontrollsystem zu verwalten:
Weitere Informationen finden Sie unter Konfigurieren von Auscheckeinstellungen.
Abrufen der Hilfe zu Versionskontrollbefehlen
Verwenden Sie die folgenden Befehle, um ausführliche Informationen zu den Versionskontrollbefehlen zu erhalten:
Die Befehlssyntax verstehen
Die Syntax der einzelnen Befehle wird oben im jeweiligen Referenzartikel angezeigt.
Erforderliche und optionale Argumente
Argumente, die nicht in eckigen Klammern eingeschlossen sind, sind erforderlich. [Klammern] kennzeichnen optionale Argumente, die für die Ausführung eines Befehls nicht erforderlich sind. Einige optionale Argumente weisen jedoch Standardwerte auf, die auch dann auf den Befehl angewendet werden, wenn die Option nicht angegeben ist.
Exklusive Argumente
Wenn Optionen durch eine Pipe (|) getrennt sind, können Sie eine der Optionen angeben.
Wörtliche und austauschbare Argumente
Elemente, die nicht in Klammern stehen, sind Optionen, die Sie wörtlich einbeziehen. Elemente in spitzen Klammern (< und >) sind Argumente, die Sie durch tatsächliche Zeichen ersetzen müssen, um einen Befehl auszuführen.
Tastenkombinationen und Aliasnamen für Befehle
Einige Befehle unterstützen Verknüpfungen. Sie können z. B. den Delete-Befehl entweder mit tf delete
oder tf del
aufrufen.
Beispiel
Betrachten Sie z. B. den Checkout-Befehl:
tf checkout [/lock:( none|checkin|checkout)] [/recursive] <item-spec> [/login: <username>, [<password>]]
Dieses Beispiel enthält die folgenden Argumente:
<item-spec>
: Sie müssen dieses Argument durch eine Elementspezifikation ersetzen, die die Elemente identifiziert, die Sie auschecken möchten.- Die folgenden Argumente sind optional. Wenn sie nicht angegeben werden, hat dies keine Auswirkungen auf den Befehl:
/lock:(none|checkin|checkout)
: Wenn Sie die Option/lock
nicht angeben, verwendet das System standardmäßig/lock:none
. Andernfalls können Sie eine der anderen Sperroptionen angeben./recursive
: Wenn Sie mehrere Elemente in einem Ordner rekursiv auschecken möchten, müssen Sie diese Option wörtlich angeben./login:<username>, <password>
: Wenn Sie den Befehl als ein anderer Benutzer ausführen möchten, müssen Sie die Option/login
wörtlich angeben und<username>
durch den Namen des Benutzers ersetzen. Ersetzen Sie bei Bedarf<password>
durch das Kennwort des Benutzers.
Von einem Befehl betroffene Elemente angeben
Sie können Element- und Versionsspezifikationen verwenden, um anzugeben, welche Elemente von einem Befehl betroffen sind.
Verwenden eines Elementspezifikationsargument zur Angabe der betroffenen Elemente
Sie verwenden eine Elementspezifikation, um die von einem Befehl betroffenen Elemente anzugeben. Sie können Elemente entweder auf einem Clientcomputer oder auf Ihrem Azure DevOps-Server angeben. Sie können Platzhalterzeichen wie * und ? verwenden.
Argumente für die Clientelementspezifikation
Ein Argument für die Clientelementspezifikation gibt einen Pfad zu Elementen auf einem Clientcomputer an. Beispiel:
- Ein Ordner, z. B. c:\code\SiteApp\Main\SolutionA\.
- Eine Datei, z. B. c:\code\SiteApp\Main\SolutionA\Project1\program.cs.
- Mehrere Dateien, z. B. c:\code\SiteApp\Main\SolutionA\*.cs.
- Ein UNC-Pfad (Universal Naming Convention), z. B. \myshare\code\SiteApp\Main.
Argumente für die Serverelementspezifikation
Ein Argument für die Serverelementspezifikation gibt einen Pfad zu Elementen auf Ihrem Azure DevOps-Server an. Beispiel:
- Ein Ordner, z. B. $/SiteApp/Main/SolutionA.
- Eine Datei, z. B. $/SiteApp/Main/SolutionA/Project1/program.cs.
- Mehrere Dateien, z. B. $/SiteApp/Main/SolutionA/*.cs.
In der Regel verwenden Sie Argumente für die Serverelementspezifikation, wenn Sie einen Befehl für Elemente ausführen müssen, die sich nicht auf dem Clientcomputer befinden. Nehmen wir z. B. an, Sie arbeiten auf einem Entwicklungscomputer. Wenn Sie Daten über den Verlauf einiger Elemente in einer Projektsammlung abrufen müssen, in der Sie nicht arbeiten, können Sie den folgenden Befehl verwenden:
c:\>tf history /collection:https://fabrikam-3:8080/tfs/DefaultCollection
$/SiteApp/Main/SolutionA/Project1/* /recursive
/noprompt
Argumente für die Spezifikation mehrerer Elemente
Bei einigen Befehlen können Sie Argumente für die Spezifikation von mehreren Elementen angeben. Beispiel:
c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c
Dieser Befehl checkt program.cs und program2.c aus.
Verwenden von Versionsspezifikationsargumenten zum Angeben betroffener Versionen von Elementen
Sie verwenden eine Versionsspezifikation, um die Version von Elementen anzugeben, die von einem Befehl betroffen sind. Sie können wie folgt vorgehen, um eine Versionsspezifikation bereitzustellen:
Verwenden Sie die Option
/version
, z. B./version:C44
.Fügen Sie die Versionsspezifikation mit einem Semikolon an eine Elementspezifikation an, z. B.
program1.cs;C44
.
Wenn Sie den History-Befehl oder den Difference-Befehl verwenden, können Sie einen Bereich von Versionen angeben, indem Sie die Versionen mit einer Tilde trennen. Beispiel:
c:\code\SiteApp\Main\SolutionA>tf history /noprompt * /recursive /v:D4/12/2022~D4/24/2022
Verwenden Sie die folgende Syntax, um eine Versionsspezifikation anzugeben:
Typ | Syntax | BESCHREIBUNG | Beispiele | Ergebnis |
---|---|---|---|---|
Changeset | [C]<version-number> |
Gibt Elemente auf Grundlage einer Changesetnummer an. Wenn ein Element, das sich im Gültigkeitsbereich befindet, im angegebenen Changeset nicht geändert wurde, übernimmt das System die letzte Version des Elements, die vor dem angegebenen Changeset vorhanden war. Sie können C auslassen, wenn Sie nur eine Zahl angeben. |
tf get readme.txt /v:C8 tf get readme.txt /v:8 tf get readme.txt;8 |
Wenn readme.txt im Changeset 8 geändert wurde, ruft der Beispielcode diese Version der Datei ab. Andernfalls wird die neueste Version von readme.txt vor Version 8 abgerufen. |
Bezeichnung | L<label> |
Gibt Elemente an, auf die eine Bezeichnung angewendet wird. | tf get readme.txt;LJulyHotFix tf get /version:LLastKnownGood |
Das erste Beispiel ruft die Version von readme.txt ab, die mit JulyHotFix bezeichnet war. Das zweite Beispiel ruft die Version aller bezeichneten Elemente im Arbeitsbereich ab (und löscht die nicht bezeichneten Elemente), wie sie beim Erstellen des Changesets mit der Bezeichnung LastKnownGood vorlagen. Sie könnten den Code im zweiten Beispiel als Teil eines automatisierten Buildprozesses verwenden. |
Datum und Uhrzeit | D<yyyy-mm-ddTxx:xx> oder D<mm/dd/yyyy> oder Irgendein von .NET Framework unterstütztes Format. oder Irgendein auf dem lokalen Computer unterstütztes Datumsformat. |
Gibt ein Changeset an, das an einem bestimmten Datum und zu einer bestimmten Uhrzeit erstellt wurde. | tf get /version:D2022-03-22 tf get /version:D2022-03-22T09:00 |
Das erste Beispiel aktualisiert den Arbeitsbereich so, dass er der Codebasis entspricht, wie sie am 22. März 2022 um Mitternacht vorlag. Das zweite Beispiel aktualisiert den Arbeitsbereich so, dass er der Codebasis entspricht, wie sie am 22. März 2022 um 9:00 Uhr vorlag. Weitere Informationen zu den von .NET Framework unterstützten Datums- und Zeitformaten finden Sie unter DateTime und Standardformatzeichenfolgen für Datum und Uhrzeit. |
Aktueller Arbeitsbereich | W |
Gibt die Version im Arbeitsbereich an. | - | - |
Angegebener Arbeitsbereich | W<workspace-name>; <workspace-owner> |
Gibt die Version in einem angegebenen Arbeitsbereich an. | tf get /version:WResolveRIConflicts;PatW |
In diesem Beispiel wird die Version im Arbeitsbereich ResolveRIConflicts angegeben, deren Besitzer PatW ist. |
Tipp | T |
Gibt die neueste Version an. | - | - |
Befehlsfunktionsänderungsoptionen verwenden
Befehlsfunktionen können durch allgemeine Optionen geändert werden.
Verwenden der Option /noprompt
zum Unterdrücken von Dateneingabeanforderungen und zum Umleiten von Ausgabedaten
Verwenden Sie die Option /noprompt
, um Dateneingabeanforderungen zu unterdrücken und Ausgabedaten zum Eingabeaufforderungsfenster umzuleiten. Diese Option kann nützlich sein, wenn Sie Versionskontrollbefehle in einem Skript verwenden müssen, für das Folgendes gilt:
- Der Befehl wird ohne Eingreifen eines Benutzers fortgesetzt.
- Die Daten stehen dem Skript zur Verfügung, um Vorgänge wie das Analysieren oder Erfassen durchzuführen.
Wenn Sie diese Option verwenden, geschieht Folgendes:
Sämtliche Eingabeanforderungen werden unterdrückt:
- Im Eingabeaufforderungsfenster werden keine Fragen gestellt. Wenn Sie z. B. den Undo-Befehl mit dieser Option verwenden, werden Sie vom System nicht gefragt, ob Sie die Änderungen rückgängig machen möchten.
- Fenster und Dialogfelder werden nicht angezeigt. Sie können diese Option z. B. mit dem Checkin-Befehl verwenden. Das System zeigt nicht das Einchecken-Dialogfeld an, in dem Sie Elemente und zugeordnete Arbeitselemente bestätigen können. Stattdessen checkt das System die Elemente ohne Bestätigung ein.
Leitet Ausgabedaten zur Eingabeaufforderung um. Sie können diese Option z. B. mit dem History-Befehl verwenden. Die Daten werden im Eingabeaufforderungsfenster statt im Verlaufsfenster angezeigt.
Verwenden der Option /login
zum Angeben von Anmeldeinformationen
Verwenden Sie die Option /login
, um das Benutzerkonto des Azure DevOps-Servers anzugeben, in dem ein Befehl ausgeführt werden soll. Diese Option kann nützlich sein, wenn Sie auf dem Computer eines anderen Teammitglieds arbeiten.
Nehmen wir z. B. an, Sie arbeiten auf dem Entwicklungscomputer Ihres Teammitglieds. Sie verwenden den Lock-Befehl, um eine Datei zu entsperren, die Sie zuvor gesperrt haben:
c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>,<password>
Wenn Sie vermeiden möchten, dass Ihr Kennwort in der Eingabeaufforderung angezeigt wird, können Sie den Befehl ohne das Kennwort eingeben:
c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>
Nachdem Sie diesen Befehl eingegeben haben, fordert das System Sie auf, Ihr Kennwort in einem Dialogfeld einzugeben, das Ihre Eingabe maskiert.
Verwenden der Option /lock
zum Anwenden oder Entfernen einer Sperre
Wichtig
Als bewährte Methode sollten Sie die Option /lock
mit Bedacht verwenden. Informieren Sie Ihre Teammitglieder, warum Sie ein Element sperren und wann Sie planen, die Sperre zu entfernen.
Verwenden Sie die Option /lock
, um eine Sperre anzuwenden oder zu entfernen, während Sie einen anderen Befehl wie Add oder Edit ausführen.
/lock:(none|checkin|checkout)
Der Befehl /lock
verwendet die folgenden Optionen:
None
: Für kein Element wird eine Sperre festgelegt. Wenn bereits eine Sperre vorhanden ist, wird sie entfernt.Checkin
oderCheckout
: Es wird eine Sperre angewendet. Weitere Informationen finden Sie unter Grundlegendes zu Sperrtypen.
Hinweis
In einigen Fällen kann ein Fehler beim Sperrvorgang auftreten:
- Wenn ein anderer Benutzer eines der angegebenen Elemente gesperrt hat, tritt beim Sperrvorgang ein Fehler auf.
- Wenn es bereits eine ausstehende Änderung an dem angegebenen Element gibt, ignoriert das System diesen Schalter. In diesem Fall müssen Sie den Lock-Befehl verwenden, um eine Sperre für ein Element zu ändern.
Abkürzungen für Optionen verwenden
Sie können die folgenden Optionen abkürzen.
Option
Optionsalias
/comment
-C
/computer
-M
/delete
-D
/force
-P
/format
-F
/help
-?, -H
/lock
-K
/login
-Y
/newname
-N
/noprompt
-I
/owner
-O
/recursive
-R
/server
-S
/slotmode
-X
/template
-T
/user
-U
/version
-V
/workspace
-W
Exitcodes verstehen
Versionskontrollbefehle geben die folgenden Exitcodes zurück:
Exitcode
Definition
0
Erfolg.
1
Teilweiser Erfolg. Zumindest etwas oder vielleicht auch alles war nicht erfolgreich.
2
Nicht erkannter Befehl.
100
Kein Vorgang konnte erfolgreich ausgeführt werden.
Nehmen wir z. B. an, Sie führen den folgenden Befehl aus:
c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c
Wenn eine der Dateien, die Sie auszuchecken versuchen, auf dem Server nicht vorhanden ist, gibt der Befehl 1 zurück, um einen Teilerfolg anzuzeigen.