Download presentation
Presentation is loading. Please wait.
Published byMonica Carson Modified over 6 years ago
1
I don’t git it! Source control management deep dive with tfvc and git
Christopher Mank Chief Technologist White Ficus Nathan Lasnoski Chief Technology Officer Concurrency
2
Christopher Mank Nathan Lasnoski @cmank7 @nlasnoski Microsoft MVP
12+ Years IT 20+ Years IT Swimming Biking, skiing
3
Source control management
4
Source control providers
5
TFVC Team Foundation Version Control (TFVC)
“TFS” brand of source control Centralized version control Historical data stored on the server Like checking a book out at the library Server and Local Workspaces Path-based branches
6
TFVC architecture
7
TFVC branching
8
TFVC Demo
9
git Distributed Code Management
Each developer has a copy of the entire codebase with history Because each developer has the codebase, they can work offline Remote locations are used for merge/rebase and deployment
10
Git
11
5 Stages of Git
12
HEAD (big) The current branch. In more detail: Your working tree is normally derived from the state of the tree referred to by HEAD. HEAD is a reference to one of the heads in your repository, except when using a detached HEAD, in which case it directly references an arbitrary commit.
13
head (head ref) (little)
A named reference to the commit at the tip of a branch. Heads are stored in a file in $GIT_DIR/refs/heads/ directory.
14
Demo
15
rebase To reapply a series of changes from a branch to a different base, and reset the head of that branch to the result.
16
fetch Fetching a branch means to get the branch’s head ref from a remote repository, to find out which objects are missing from the local object database, and to get them, too. See also git-fetch(1).
17
pull Pulling a branch means to fetch it and merge it. See also git-pull(1).
18
push Pushing a branch means to get the branch’s head ref from a remote repository, find out if it is a direct ancestor to the branch’s local head ref, and in that case, putting all objects, which are reachable from the local head ref, and which are missing from the remote repository, into the remote object database, and updating the remote head ref. If the remote head is not an ancestor to the local head, the push fails..
19
Pull request (manage technical debt!)
20
Demo
21
.gitignore A gitignore file specifies intentionally untracked files that Git should ignore.
22
Import tfvc to git
23
Demo
24
submodule A repository that holds the history of a separate project inside another repository (the latter of which is called superproject).
25
index A collection of files with stat information, whose contents are stored as objects. The index is a stored version of your working tree. Truth be told, it can also contain a second, and even a third version of a working tree, which are used when merging.
26
graph
27
SourceTree
28
Git Virtual File System (GVFS)
GVFS stands for Git Virtual File System. GVFS virtualizes the file system beneath your git repo so that git and all tools see a fully hydrated repo, but GVFS only downloads objects as they are needed. GVFS also manages git's sparse-checkout to ensure that git operations like status, checkout, etc., can be as quick as possible.
29
Git branching
30
Tfvc or git
31
Tfvc or git TFVC Git Large files (Although GVFS will eliminate this)
Seasoned developer knowledge Centralized (History, branching, large code base) Git Tools and features Support Younger developer knowledge Industry and Microsoft standard Distributed (History, branching, smaller code base) (Popular) Object database (One copy of code base)
32
Tfvc or git
33
Tfvc or git So, TFVC or Git? If I had to pick…
Both work great and enable DevOps Both do nearly the same things, but in different ways If I had to pick… Version Control Guidance (ALM Rangers) The right version control for you
34
Appendix Git “git help glossary” SourceTree gitignore templates
Git in Visual Studio Scaling Git GVFS Import repo from TFVC to Git ALM Rangers Git Branching
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.