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:

Entwickeln Ihrer App

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

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

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.

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

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 deletetf delaufrufen.

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 ResolveRIConflictsPatW 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 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 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.