Verwenden von Befehlen der Team Foundation-Versionskontrolle
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019 | TFS 2018
Visual Studio 2019 | Visual Studio 2022
Sie können Versionskontrollbefehle verwenden, um nahezu alle Team Foundation-Versionskontrolle Aufgaben (TFVC) auszuführen, die Sie in Visual Studio ausführen können. Sie können auch Versionskontrollbefehle verwenden, um mehrere Aufgaben auszuführen, die in Visual Studio nicht ausgeführt werden können. Zum Ausführen von Versionskontrollbefehlen über eine Eingabeaufforderung oder innerhalb eines Skripts verwenden Sie das tf.exe
Tool.
Ausführen eines Befehls
Um die Visual Studio-Eingabeaufforderung zu starten, wählen Sie unter Windows Start die Verknüpfung Developer-Eingabeaufforderung für VS2022 oder frühere Versionen aus.
Hinweis
Für Visual Studio 2019 und höhere Versionen befindet sich die tf.exe
Binärdatei nicht mehr an einem festen Speicherort im Visual Studio-Installationspfad, wie in einigen früheren Versionen, z. B C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
. . Wenn Ihr Skript verwendet tf.exe
, codieren Sie keinen Pfad zur Datei basierend auf dem Visual Studio-Installationspfad.
In den meisten Fällen führen Sie den Versionskontrollbefehl im Kontext eines Verzeichnisses aus, das im Arbeitsbereich zugeordnet ist. Ist z. B $/SiteApp/Main/
. 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:
- Befehl hinzufügen: Fügt der Versionskontrolle Dateien und Ordner hinzu.
- Auschecken (oder Bearbeiten)-Befehl: Checkt eine Datei aus und ändert den Status der ausstehenden Änderung 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 angegebene Version einer oder mehrerer Dateien oder Ordner aus Azure DevOps Server in den Arbeitsbereich ab (lädt sie herunter).
- Rename-Befehl (Team Foundation-Versionskontrolle): Ändert den Namen oder Pfad einer Datei oder eines Ordners.
- Statusbefehl: Zeigt Informationen zu ausstehenden Änderungen an Dateien und Ordnern in Arbeitsbereichen oder in einem Shelveset an.
- Rückgängig-Befehl: Verwirft angegebene ausstehende Änderungen an Dateien oder Ordnern.
- Befehl Wiederherstellen: Stellt zuvor gelöschte Elemente wieder her.
Weitere Informationen finden Sie unter Entwickeln Ihrer App in der Team Foundation-Versionskontrolle.
Die Arbeit anhalten
Aus verschiedenen Gründen müssen Sie manchmal einen Teil oder die gesamte laufende Arbeit beiseite legen. Verwenden Sie zum Anhalten und Fortsetzen der Arbeit sowie zum Verwalten von Shelvesets folgende Befehle:
Weitere Informationen finden Sie unter Suspend your work and manage your shelvesets.for more information, see Suspend your work and manage your shelvesets.
Arbeit hinzufügen
Verwenden Sie den checkin
Befehl, um Ihren Code in die Codebasis des Teams einzuchecken:
- Checkin-Befehl: Überprüft ausstehende Änderungen an Dateien oder Ordnern auf dem Server.
Weitere Informationen finden Sie unter Einchecken ihrer Arbeit in der 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 Versionskontrolldateien und -ordnern
- Eigenschaften (oder Info)-Befehl: Zeigt Informationen zu Elementen in der Versionskontrolle an.
- Dir-Befehl: Zeigt den Inhalt des Versionskontrollservers an.
- Destroy-Befehl (Team Foundation-Versionskontrolle):Versionskontrolldateien werden endgültig gelöscht.
- LocalVersions-Befehl: Zeigt die Versionen von Arbeitsbereichselementen 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 oder zeigt changeset-Attribute an.
- Verlaufsbefehl: Zeigt den Revisionsverlauf von Dateien oder Ordnern an.
- Bezeichnungsbefehl (Team Foundation-Versionskontrolle): Fügt Bezeichnungen aus Dateien oder Ordnern an oder entfernt sie.
- Beschriftungsbefehl: Zeigt Informationen zu Bezeichnungen an, die auf dem Server verwendet werden.
- Rollbackbefehl (Team Foundation-Versionskontrolle): Rollback für die Auswirkungen von Changesets.
- Befehl "Bezeichnung aufheben": Entfernt ein Element aus einer vorhandenen Bezeichnung auf dem Server.
- Ansichtsbefehl: Ruft eine angegebene Version einer Datei ab und zeigt sie an.
Weitere Informationen finden Sie unter Anzeigen und Verwalten früherer Versionen.
Vergleichen von Ordnern und Dateien
- Differenzbefehl: Vergleicht die Unterschiede zwischen Dateien und Shelvesets.
- Folderdiff-Befehl: Vergleicht Unterschiede zwischen Dateien in zwei Ordnern.
Weitere Informationen finden Sie unter Anzeigen und Verwalten früherer Versionen.
Beheben von Dateikonflikten
- Befehl auflösen: Löst Konflikte zwischen Elementen in Ihrem Arbeitsbereich und auf dem Server.
Weitere Informationen finden Sie unter Beheben Team Foundation-Versionskontrolle Konflikte.
Arbeiten mit Versionskontrollsperren
- Befehl "Sperren": Sperrt Dateien und Ordner oder entsperrt sie.
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 Team Foundation-Versionskontrolle.
Verwalten der Versionskontrolle
Verwenden Sie die folgenden Befehle, um Ihr Versionskontrollsystem zu verwalten:
Weitere Informationen finden Sie unter Konfigurieren von Auscheckeinstellungen.
Hilfe zu Versionskontrollbefehlen
Verwenden Sie die folgenden Befehle, um ausführliche Informationen zu Versionskontrollbefehlen zu erhalten:
Die Befehlssyntax verstehen
Die Syntax der einzelnen Befehle wird am Anfang jedes Referenzartikels angezeigt.
Erforderliche und optionale Argumente
Argumente, die nicht in eckigen Klammern eingeschlossen sind, sind erforderlich. [Klammern] geben optionale Argumente an, die zum Ausführen eines Befehls nicht erforderlich sind. Einige optionale Argumente weisen jedoch Standardwerte auf, die auf den Befehl angewendet werden, auch wenn Sie die Option nicht angeben.
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 eingeschlossen sind, sind Optionen, die Sie wörtlich einschließen. Elemente, die in spitzen Klammern (< und >) eingeschlossen sind, sind Argumente, die Sie durch tatsächliche Zeichen ersetzen müssen, um einen Befehl auszuführen.
Befehlsverknüpfungen und Aliase
Einige Befehle unterstützen Verknüpfungen. Sie können beispielsweise den Befehl Delete mit oder tf delete
tf del
aufrufen.
Beispiel
Betrachten Sie beispielsweise 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.- Die folgenden Argumente sind optional. Wenn Sie sie nicht angeben, gilt keine der Auswirkungen auf den Befehl:
/lock:(none|checkin|checkout)
: Wenn Sie die/lock
Option nicht angeben, verwendet/lock:none
das System standardmäßig. 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 einen anderen Benutzer ausführen möchten, müssen Sie die/login
Option wortwörtlich angeben und durch den Namen des Benutzers ersetzen<username>
. Ersetzen Sie<password>
bei Bedarf durch das Kennwort des Benutzers.
Von einem Befehl betroffene Elemente angeben
Sie können Elementspezifikationen und Versionsspezifikationen verwenden, um anzugeben, welche Elemente von einem Befehl betroffen sind.
Verwenden eines Elementspezifikationsarguments zum Angeben betroffener 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 Wildcardzeichen wie * und ? verwenden.
Clientelementspezifikationsargumente
Ein Clientelementspezifikationsargument gibt einen Pfad zu Elementen auf einem Clientcomputer an, z. B.:
- 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.
Serverelementspezifikationsargumente
Ein Serverelementspezifikationsargument gibt einen Pfad zu Elementen auf Ihrem Azure DevOps-Server an, z. B.:
- 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.
Sie verwenden in der Regel Serverelementspezifikationsargumente, wenn Sie einen Befehl für Elemente ausführen müssen, die sich nicht auf dem Clientcomputer befinden. Angenommen, Sie arbeiten an einem Entwicklungscomputer. Wenn Sie einige Revisionsverlaufsdaten zu einigen Elementen abrufen müssen, die sich in einer Projektsammlung befinden, 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 mehrere Elementspezifikationen
Für einige Befehle können Sie mehrere Elementspezifikationsargumente angeben, z. B.:
c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c
Mit diesem Befehl werden program.cs und program2.c ausgecheckt.
Verwenden eines Versionsspezifikationsarguments zum Angeben betroffener Versionen von Elementen
Sie verwenden eine Versionsspezifikation, um die Version der elemente anzugeben, die von einem Befehl betroffen sind. Um eine Versionsspezifikation bereitzustellen, können Sie Folgendes ausführen:
Verwenden Sie die
/version
Option, z. B/version:C44
. .Fügen Sie die Versionsspezifikation mit einem Semikolon an eine Elementspezifikation an, z. B
program1.cs;C44
. .
Wenn Sie den Befehl Verlauf oder den Befehl Differenz verwenden, können Sie einen Versionsbereich angeben, indem Sie die Versionen durch eine Tilde trennen, z. B.:
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:
type | Syntax | BESCHREIBUNG | Beispiele | Ergebnis |
---|---|---|---|---|
Changeset | [C]<version-number> |
Gibt Elemente auf Grundlage einer Changesetnummer an. Wenn ein Element, das sich im Bereich befindet, im angegebenen Changeset nicht geändert wurde, übernimmt das System die neueste Version des Elements, die vor dem angegebenen Changeset aufgetreten ist. Sie können weglassen C , 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 in 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 |
Im ersten Beispiel wird die Version von readme.txt abgerufen, die als JulyHotFix bezeichnet wurde. Die zweite ruft die Version aller beschrifteten Elemente ab (und löscht diese Elemente, die nicht beschriftet sind) im Arbeitsbereich, wie sie vorhanden waren, als das Changeset mit der Bezeichnung LastKnownGood erstellt wurde. Sie können 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 zu einem angegebenen Datum zu einem bestimmten Zeitpunkt erstellt wurde. | tf get /version:D2022-03-22 tf get /version:D2022-03-22T09:00 |
Im ersten Beispiel wird der Arbeitsbereich so aktualisiert, dass er mit der Codebasis übereinstimmt, wie er am 22. März 2022 um Mitternacht vorhanden war. Die zweite aktualisiert den Arbeitsbereich so, dass er der Codebasis entspricht, wie er am 22. März 2022 um 9:00 Uhr vorhanden war. Weitere Informationen zu .NET Framework unterstützten Datums- und Uhrzeitformaten finden Sie unter DateTime- und Standard-Datums- und Uhrzeitformatzeichenfolgen. |
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 |
Das Beispiel gibt die Version im Arbeitsbereich an, dem der ResolveRIConflicts PatW Besitzer ist. |
Tipp | T |
Gibt die neueste Version an. | - | - |
Befehlsfunktionsänderungsoptionen verwenden
Befehlsfunktionen können durch allgemeine Optionen geändert werden.
Verwenden Sie die /noprompt
Option, um Dateneingabeanforderungen zu unterdrücken und Ausgabedaten umzuleiten.
Verwenden Sie die /noprompt
Option, um Anforderungen für die Dateneingabe zu unterdrücken und Ausgabedaten an das Eingabeaufforderungsfenster umzuleiten. Diese Option kann nützlich sein, wenn Sie Versionskontrollbefehle in einem Skript verwenden müssen:
- Der Befehl wird ohne Eingriff durch einen Benutzer ausgeführt.
- Die Daten stehen für das Skript zum Ausführen von Vorgängen wie Analyse oder Erfassung zur Verfügung.
Wenn Sie diese Option verwenden, geschieht Folgendes:
Sämtliche Eingabeanforderungen werden unterdrückt:
- Im Eingabeaufforderungsfenster werden keine Fragen gestellt. Wenn Sie beispielsweise den Befehl Rückgängig mit dieser Option verwenden, werden Sie vom System nicht aufgefordert, zu bestätigen, ob Sie die Änderungen rückgängig machen möchten.
- Fenster und Dialogfelder werden nicht angezeigt. Sie können diese Option beispielsweise mit dem Befehl Checkin verwenden. Das System zeigt das Dialogfeld Check In nicht an, um Elemente und zugeordnete Arbeitselemente zu bestätigen. Stattdessen überprüft das System die Elemente ohne Bestätigung.
Leitet Ausgabedaten zur Eingabeaufforderung um. Sie können diese Option beispielsweise mit dem Befehl Verlauf verwenden. Die Daten werden im Eingabeaufforderungsfenster anstelle des Verlaufsfensters angezeigt.
Verwenden Sie die /login
Option, um Anmeldeinformationen anzugeben.
Verwenden Sie die /login
Option, um das Azure DevOps-Serverbenutzerkonto anzugeben, in dem ein Befehl ausgeführt werden soll. Diese Option kann nützlich sein, wenn Sie auf dem Computer eines anderen Teammitglieds arbeiten.
Angenommen, 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, werden Sie vom System aufgefordert, Ihr Kennwort in ein Dialogfeld einzugeben, das Ihre Eingabe maskiert.
Verwenden Sie die /lock
Option zum Anwenden oder Entfernen einer Sperre.
Wichtig
Als bewährte Methode sollten Sie die /lock
Option mit Diskretion verwenden. Informieren Sie Ihre Teamkollegen darüber, warum Sie ein Element sperren und wann Sie die Sperre entfernen möchten.
Verwenden Sie die /lock
Option, um eine Sperre gleichzeitig anzuwenden oder zu entfernen, während Sie einen anderen Befehl ausführen, z. B . Hinzufügen oder Bearbeiten.
/lock:(none|checkin|checkout)
Der /lock
Befehl verwendet die folgenden Optionen:
None
: Für ein Element wird keine Sperre gesetzt. Wenn bereits eine Sperre eingerichtet 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 andere Benutzer eines der angegebenen Elemente gesperrt haben, schlägt der Sperrvorgang fehl.
- Wenn bereits eine ausstehende Änderung am angegebenen Element vorliegt, 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
Teilerfolg. Zumindest etwas, oder vielleicht alles, konnte nicht erfolgreich sein.
2
Nicht erkannter Befehl.
100
Kein Vorgang konnte erfolgreich ausgeführt werden.
Angenommen, 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 auschecken möchten, auf dem Server nicht vorhanden ist, gibt der Befehl 1 zurück, um einen teilweisen Erfolg anzuzeigen.