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:

Entwickeln Ihrer App

Verwenden Sie diese Befehle, um mit dem Team eine App unter Versionskontrolle zu entwickeln:

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

Weitere Informationen finden Sie unter Verwenden des Quellcodeverwaltungs-Explorers zum Verwalten von Dateien unter Versionskontrolle.

Anzeigen und Verwalten früherer Versionen

Weitere Informationen finden Sie unter Anzeigen und Verwalten früherer Versionen.

Vergleichen von Ordnern und Dateien

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 oder Checkout: 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.