The branch
command allows you to manage TFS branches. With this command, you can display, create, initialize, rename and delete Tfs branches/remotes.
Usage: git-tfs branch
* Display remote TFS branches:
git tfs branch -r
git tfs branch -r -all
* Create a TFS branch from current commit:
git tfs branch $/Repository/ProjectBranchToCreate <myWishedRemoteName> --comment="Creation of my branch"
* Rename a remote branch:
git tfs branch --move oldTfsRemoteName newTfsRemoteName
* Delete a remote branch:
git tfs branch --delete tfsRemoteName
* Initialise an existing remote TFS branch:
git tfs branch --init $/Repository/ProjectBranch
git tfs branch --init $/Repository/ProjectBranch myNewBranch
git tfs branch --init --all
git tfs branch --init --tfs-parent-branch=$/Repository/ProjectParentBranch $/Repository/ProjectBranch
-h, -H, --help
-V, --version
-d, --debug Show debug output about everything git-tfs does
-i, --tfs-remote, --remote, --id=VALUE
The remote ID of the TFS to interact with
default: default
-r, --remotes Display the TFS branches of the current TFS root
branch existing on the TFS server
--all Display (used with option --remotes) the TFS
branches of all the root branches existing on
the TFS server
or Initialize (used with option --init) all
existing TFS branches (For TFS 2010 and later)
--comment=VALUE Comment used for the creation of the TFS branch
-m, --move Rename a TFS remote
--delete Delete a TFS remote
--init Initialize an existing TFS branch
--ignore-regex=VALUE a regex of files to ignore
--except-regex=VALUE a regex of exceptions to ignore-regex
--no-fetch Don't fetch changeset for inited branch(es)
-b, --tfs-parent-branch=VALUE
TFS Parent branch of the TFS branch to clone
(TFS 2008 only! And required!!) ex:
$/Repository/ProjectParentBranch
-u, --username=VALUE TFS username
-p, --password=VALUE TFS password
-a, --authors=VALUE Path to an Authors file to map TFS users to Git
users## Examples
git tfs branch
git tfs branch -r
git tfs branch -r -all
First, use git to checkout the revision (branch or hash) from where you want to create the TFS branch. Then use the command :
git tfs branch $/Repository/ProjectBranchToCreate --comment="Creation of my branch"
You will now have a TFS branch (called $/Repository/ProjectBranchToCreate ) whose first checkin will have the comment specified. A local git remote with the same name ('ProjectBranchToCreate') is created.
While not recommended, if you want to specify another name for the local branch, use the command :
git tfs branch $/Repository/ProjectBranchToCreate myWishedRemoteName --comment="Creation of my branch"
The local git remote with the name 'myWishedRemoteName ' is created.
To use this command, you should have cloned only the trunk folder in TFS (and not the whole repository). See clone command. Suppose you have on TFS:
A <- B <- C <- D <- E $/Repository/ProjectTrunk
\
M <- N $/Repository/ProjectBranch
You should have done (to clone only the trunk) :
git tfs clone http://tfs:8080/tfs/DefaultCollection $/Repository/ProjectTrunk
Note : It is highly recommended once having cloned the root branch (the branch that has no parents, here
Then use branch
like this :
git tfs branch --init $/Repository/ProjectBranch
git tfs branch --init $/Repository/ProjectBranch myNewBranch
Since version 0.20, if git-tfs encounters a merge changeset while initializing and fetching a TFS branch, it will automatically initialize and fetch the merged branch as well.
If you don't want to initialize the merged branches automatically (or you can't because your version of TFS does not support this feature), you can use the option --branches=none
to disable it!
Note: To successfully process the merge changeset (and come from an older version than TFS2010), you must first convert all the folders corresponding to a TFS branch to a branch in TFS (even the old deleted branches). To do that, open the 'Source Control Explorer', right click on a folder and choose Branching and Merging
-> Convert to Branch
.
git tfs branch --init --all
This command will initialize all the branches that haven't yet been initialized.
TFS2008 doesn't provide the ability for git-tfs to programmatically determine the parent of a branch. You must find it yourself within the TFS UI. You can check the checkin message or ask whomever originally made the branch. Once you determine the parent branch, provide it using the parameter --tfs-parent-branch
.
git tfs branch --init --tfs-parent-branch=$/Repository/ProjectParentBranch $/Repository/ProjectBranch
You can use the parameter --ignore-regex
, to ignore some files when fetching the changesets of the branch.
git tfs init-branch $/Repository/ProjectBranch --ignore-regex=*.bin
You can use the parameter --except-regex
, to add an exception to the parameter --ignore-regex
.
git tfs init-branch $/Repository/ProjectBranch --ignore-regex=*.bin --except-regex=important.bin
You can use the parameter --no-fetch
, to initialize the branch by creating its remote but without fetching the changesets of the branch.
For the use of parameters --username
and --password
, see the clone command.
For the use of parameter --authors
, see the clone command.
Note : This will not rename the TFS branch, just the local git remote.
git tfs branch --move oldTfsRemoteName newTfsRemoteName
Note : This will not delete the TFS branch, just the local git remote.
git tfs branch --delete tfsRemoteName