天天看点

git pull,git clone,git fetch,git rebase

刚开始用git,对于clone,pull,fetch,rebase不太明白它们的区别,整理了一下,做个比较

Git Clone

clone将会克隆一个本地厂库,

1 2 3 4 5

$

cd

newfolder

$git clone [email protected]:whatever

/something

.git

$git branch

*master

remotebranch

clone会为它被克隆的远程repo创建一个名为“origin”的local repo,并为远程repo的活动分支创建一个本地分支以及远程跟踪分支。

Git Pull

据我所知,当你使用git pull时,它将会获取远程服务器(你请求的,无论什么分支)上的代码,并且立即合并到你的本地厂库,Pull是一个高等级的请求,默认会支持Fetch和merge的操作,如果不是为了使用上的方便,你可以完全不使用它。

1 2 3 4 5

$git checkout localbranch

$git pull origin master

$git branch

master 

*localbranch

上面的命令会将远程服务器上的master分支合并到localbranch中。

Git Fetch

fetch和pull很相似,只是fetch不会做任何的合并操作。

1 2 3 4 5 6

$git checkout localbranch

$git fetch origin remotebranch

$git branch

master

*localbranch

remotebranch

因此,fetch指是获取remotebranch,然后创建一个本地copy,你不应该直接对这个copy做任何的操作,而应该应该创建一个本地分支,然后在本地分支上进行工作。

git rebase

这个命令相当的cool,你对当前分支所作的任何改变都被保存到一个临时区域,因此你的分支将会和改变之前一样干净。如果你用git pull -rebase,git将会获取远程的改变,遍历当前本地分支,然后替换你当前分支的所有改动。

Finally

如果你在使用过程中遇到了问题,使用git branch -a,它会显示本地厂库的所有分支:本地的,远程的。这是一个很好的杀手锏,请记住,git bracches只是一个pointer。所以为了能够处理这些提交请求,你需要一个本地分支,通过本地分支你可以获取这些提交。