1.git clone
从远程主机克隆一个版本库
$git clone <版本库的网址>
例如:
$git clone https://github.com/xx/xx
该命令会在本地主机生成一个目录,与远程主机版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。例如:
$git clone <版本库的网址> <本地目录名>
$git clone https://github.com/xx/xx ~/Documents/dstDir
这样目标版本库就会被克隆到dstDir目录里了。
2.git fetch
当远程主机版本有了更新,需要将这些更新取回到本地,这就用到了git clone命令。
$git fetch <远程主机名> <分支名>
例如取回origin主机的master分支。
$git fetch origin master
3.git pull
取回远程主机某个分支的更新,然后再与本地指定分支合并。
$git pull <远程主机名> <远程分支名>:<本地分支名>
例如:要取回远程origin主机的next分支,与本地的master合并。要这样写
$git pull origin next:master
如果取回的远程分支与当前分支合并,则冒号后面可以省略。
$git pull origin next
上面的命令表示,取回origin/next分支,再与本地当前分支合并。这等同与先做git fetch, 再做git merge。
$git fetch origin next
$git merge origin/next
在某些场合,git会自动在本地分支与远程分支之间建立一种追踪关系(tracking)。比如git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系。也就是说,本地master分支自动“追踪”origin/master分支。
git 也允许手动建立追踪关系。
$git branch --set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。
如果当前分支与远程分支存在追踪关系。git pull就可以省略远程分支名。
$git pull origin
上面的命令表示,本地当前分支自动与对应得origin主机“追踪分支”(remote-tracking-branch)进行合并。
如果当前分支只有一个追踪分支,连主机名也可以省略。
$git pull
上面命令表示,当前分支自动与唯一一个追踪的分支进行合并。
如果合并需要采用rebase模式,可以使用–rebase选项。
$git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
如果远程主机删除了某个分支,默认情况下git pull不会在拉取远程分支的时候,删除对应本地分支。这是为了防止,由于他人操作了远程主机,导致git pull不知不觉删除了本地分支。
但是,你可以改变这个行为,加上参数-p就会在本地删除远程已删除的分支。
$git pull -p
#等同于下面的命令
$git fetch -purne origin
$git fetch -p
4.git add/commit/push
你的本地仓库是由git维护的三个树组成。第一个是你的工作目录,他拥有实际文件;第二个是缓存区(Index),他像个缓存区域,临时保存你的改动;最后一个是HEAD,是指向你最后一次提交后的结果。
$git add <filename>
上面命令表示,将文件添加到缓存区。
$git commit -m "提交代码信息"
上面命令表示,将文件提交到HEAD。
然后就是要把改动提交到远端仓库了。
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。
$git push <远程主机名> <本地分支名>:<远程分支名>
注意,分支推送顺序的写法是<来源地>:<目的地>,所有git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
如果当前分支只有一个追踪分支就直接git push就可以了。
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,后面就可以不用任何参数使用git push了。
$git push -u origin master
上面命令将本地master分支推送到origin主机。同时指定origin为默认主机。
还有一种情况就是,不管是否存在对应远程分支,将本地所有分支都推送到远程主机。这是需要使用–all选项。
$git push --all origin
上面命令表示,将本地所有分支都推送到origin主机。
如果远程主机的版本比本地版本新,推送git会报错,要求先git pull合并本地差异,然后再推送到远程主机。如果你一定要推送,则需要使用–force选项。
$git push --force origin
上面使用–force选项,将会导致远程主机上的更新版本被覆盖。
5.git remote
为了便于管理,git要求每一个远程主都指定一个主机名。git remote命令就用于管理主机名。
不带选项的时候 git remote会列出所有远程主机。
$git remote
origin
使用-v选项可以查看远程主机的网址。
$git remote -v
origin https://github.com/xx/xx (fetch)
origin https://github.com/xx/xx (push)
克隆版本库时,所使用的远程主机自动被git命名为origin。如果想用其他主机名,需要使用git clone命令的-o选项指定。
$git clone -o dstName https://github.com/xx/xx
$git remote
dstName
上面命令表示,git clone的时候指定远程主机名为 dstName.
git remote show命令加上主机名,表示查看该主机的详细信息。
$git remote show <主机名>
git remote add用于添加远程主机
$git remote add <远程主机名> <网址>
git remote rm用于删除远程主机
$git remote rm <主机名>
git remote rename用于修改远程主机名
$git remote rename <原主机名> <新主机名>
6.git branch
git branch 命令不带任何选项,用于列出本地已存在的分支,并在当前分支前边用“*”标记显示。
$git branch
*master
otherbranch
git branch -r命令,用于列出远程分支。
git branch -a命令,用于列出本地分支和远程分支。
git branch还可以用于创建一个分支,例如:
$git branch newbranch
上面命令用于创建一个名为newbranch的新分支。注意,这里只是创建一个分支并没有切换到该分支。
git branch -m | -M oldbranch newbranch 用于重命名分支,如果newbranch 已经存则需要用-M选项进行强制重命名,否则用-m进行重命名。
git branch -d | -D <分支名>用于删除本地分支
git branch -d -r <分支名>用于强制删除本地分支
git push <主机名> :<分支名>表示删除指定远程分支,等同于推送一个空的本地分支到远程分支。
等同于命令 git push <主机名> –delete <分支名> 删除指定远程分支。