Git远程仓库

1.git clone

此命令克隆远程仓库到当前目录。

  • 执行此命令后,本地仓库中每个分支都会分为两个,比如master会变成master 和origin/master,其中origin/master表示远程仓库的副本,它只跟踪远程仓库,理解这一点很重要!

2.git fetch

  • 这命令会将远程仓库同步到本地仓库的带origin标记的各个分支,但不会改变我们的工作区!
  • 比如仓库有master和bugFix分支,这个操作会更新origin/master和origin/bugFix,并不会改动master和bugFix。

3.git merge origin/master

此命令一般紧接着git fetch,将远程的更新合并到本地工作区。

4.git pull

此命令就是上两条命令的缩写,先fetch再merge。

  • 我们经常会先commit掉当前写的代码,然后pull下同事push的代码。
  • 不使用merge方式,采用rebase方式:

    1
    git pull --rebase

5.git push

此命令会将本地commit推送到远程仓库,并且会更新origin/分支。

  • 有时候远程仓库已经改变了,但是你的本地分支(没有origin/前缀)不会修改。

6.git push origin source:destination

  • 这里重点介绍三个参数origin:远程仓库的名字(一般都命名为origin),source:本地仓库的节点,destination:远程仓库的分支名。

  • source参数可以不写同时把冒号去掉,如:

    1
    git push origin master

意义是将本地仓库master分支推送到远程仓库origin的分支master,并且同步本地origin/master分支。

  • source参数可以带~和^等移动符,如:

    1
    git push origin master^:foo

此时将master上一个提交历史推送到origin仓库的foo分支。如果foo分支不存在,将直接创建foo分支。

7.git fetch origin source:destination

同理git fetch也有这种形式的命令,从这里可以看出fetch跟push其实是方向相反的操作,更深一步你可以用fetch代替push,只是大家都习惯使用fetch拉,push推。

  • 注意,destination参数如果不加origin/,就表示更新本地分支中的工作区,而不是跟踪远程仓库的

8.跟踪远程分支

git remote add origin <https/ssh>

有时候我们需要将一个项目提交到远程仓库,那么该怎么操作呢?

1
2
git remote add origin <https/ssh>
git push -u origin <branch>