Git学习笔记(二) 远程Git

来源:互联网 发布:熊猫智能电视直播软件 编辑:程序博客网 时间:2024/06/04 18:47

分布式的版本管理

Git是一个分布式的版本控制系统。每个用户在自己的电脑上拥有完整的代码仓库。尽管git有一个中央仓库用来存放多个用户的提交,然而git平时是不会访问这个仓库的,除非用户指定这么做。因为你看到的所有的提交、分支、日志等都是离线的,所以要想同步本地和远程仓库,就要使用push和pull/fetch命令。
一个完整的git工作流是这样的:
这里写图片描述


克隆项目

git clonesvn checkout异曲同工,都是把远程仓库签出到本地空目录。

$ git clone <URL> <local_dir>

本地目录名可以省略,会自动创建一个和仓库同名的目录。要注意的是,local_dir要么是空的,要么不存在。


管理远程主机

要想顺利地同步本地和远程代码仓库,首先要知道远程主机是谁、在哪。通过git remote命令可以管理远程主机。
不带参数的用法是列出所有远程主机的名字。

$ git remoteorigin

加上-v(--verbose的简写)选项后就能看到远程主机的地址。

$ git remote -vorigin git@github.com:davaiza/test.git (fetch)origin git@github.com:davaiza/test.git (push)

对于从github上clone下来的项目来说,通常只有一个远程主机origin
git remote还有一些子命令,如showaddrmrename等,通过“望文生义”就知道它们是干什么的,这里就不一一解释了。


push: 推送更改

git push命令将本地仓库的当前分支的更改,推送到远程主机。它的格式如下

$ git push <远程主机名> <本地分支名>:<远程分支名>

如果省略远程分支名,则认为远程分支和本地分支同名。
而如果省略本地分支名,则认为本地分支是空的,也就是删除指定的远程分支(要留下远程分支名前面的冒号)。
git push还有一些非常常用的选项要记住:

-u或–set-upstream

这个选项的用意是告诉git建立本地分支和远程分支之间的追踪关系。比如

$ git push -u origin master

意思就是让本地的master分支追踪远程机器origin上的master分支(简记为origin/master)。一般用在第一次push的情况下。以后的push就可以直接用git push了。

-A或–all

这个选项把所有的本地分支都推送到指定主机。对于许多github项目来说,默认主机是origin主机。

–force

这个选项强制覆盖远程分支的最新版本。要小心使用。


pull: 取回并合并更改

git pull命令的作用是取回远程主机某个分支的更新,并与本地分支合并。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

可以省略本地分支名,默认本地分支是当前分支。
如果当前分支和远程分支存在追踪关系,则可以省略远程分支和本地分支。如果当前分支只有一个追踪关系,连远程主机都可以省略。
比如,取回origin/dev分支并与当前分支合并,命令为

$ git pull origin dev

再比如,假设当前分支为master,本地master和远程master建立了追踪关系,现在要取回远程master。这种情况最简单了。

$ git pull

fetch: 取回更改

有时你想看看别人做了什么但暂时不想合并到自己的工作里,那么应该用git fetch而不是git pullgit fetchgit pull的语法格式是相同的。

怎么看fetch下来的内容?

这个问题实际上和“怎么看其他branch的内容”是等价的。
你需要做的就是先commit当前分支,保存你的工作;然后用

$ git checkout branch_name

把当前工作目录的内容整体替换为分支branch_name的最新版本。
而对于fetch下来的内容,branch_name的格式是host/branch,比如说,origin/master

怎么合并更改?

$ git fetch origin dev$ git merge origin/dev

把当前分支和远程dev分支合并起来。可以说,git pull就是git fetchgit merge

0 0
原创粉丝点击