Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GIT - Difference between tracking a branch versus cloning

Tags:

git

I've seen this command floating around on various sites.

git checkout --track -b <...>

If I create a bare repo on a remote server and work from two different locations, what is the quickest and "approved" way of doing so?

What I did was, I created the initial repo on my laptop and then pushed the changes to the "origin" where my VPS repo is (the bare repo). Now, on my desktop, should I be cloning my repo? I ask because I have two branches, "dev" and "master." Once I'm on my desktop, I wasn't sure if I should be "tracking" the repo or should I be cloning first? What if I wanted to work on the dev branch, is that when I checkout using the --track directive?

Here's what I've done so far.

On laptop

cd devproject
git init
git add .
git commit -m "My first commit"

On VPS Repo

mkdir /home/sam/devproject.git
cd /home/sam/devproject.git
git --bare init
exit

Back to laptop

cd devproject
git remote add origin ssh://myserver.com/home/sam/devproject.git

On Desktop (??)

git clone <..>
like image 853
sdot257 Avatar asked Oct 23 '09 14:10

sdot257


2 Answers

You clone a repository, but you track a branch. The checkout command you posted is not complete:

git checkout --track -b new_local_branch_name origin/remote_branch_name

Thus the required steps would be:

  1. Clone the remote repository.
  2. Track the remote branches.
like image 129
innaM Avatar answered Oct 21 '22 11:10

innaM


The command above will not work if you're not in a repository. To work with git, you must always first create a repository, either by cloning one which already exists or using git-init and starting from scratch.

git checkout --track -b <branch> <remote-branch>
git checkout --track <remote-branch>

These two commands create a new local branch to track <remote-branch>. The first one manually names it <branch>; the second uses the same name as the remote.

Remember that tracking doesn't mean automatic update - it simply does things like specifying where the branch should push/pull from and letting git status give those "your branch is behind origin/master by 5 commits, and can be fast-forwarded" messages.

like image 30
Cascabel Avatar answered Oct 21 '22 10:10

Cascabel