Git学习笔记(二) 远程Git
来源:互联网 发布:熊猫智能电视直播软件 编辑:程序博客网 时间:2024/06/04 18:47
分布式的版本管理
Git是一个分布式的版本控制系统。每个用户在自己的电脑上拥有完整的代码仓库。尽管git有一个中央仓库用来存放多个用户的提交,然而git平时是不会访问这个仓库的,除非用户指定这么做。因为你看到的所有的提交、分支、日志等都是离线的,所以要想同步本地和远程仓库,就要使用push和pull/fetch命令。
一个完整的git工作流是这样的:
克隆项目
git clone
和svn 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
还有一些子命令,如show
、add
、rm
、rename
等,通过“望文生义”就知道它们是干什么的,这里就不一一解释了。
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 pull
。git fetch
和git 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 fetch
加git merge
。
- Git学习笔记(二) 远程Git
- Git入门学习笔记(二) 远程仓库
- git学习笔记(二):分支和远程仓库
- Git学习笔记(二) Git初始化
- Git学习笔记(二) Git初始化
- Git学习笔记(二)
- git学习笔记(二)
- Git学习笔记(二)
- Git学习笔记(二)
- Git学习笔记(二)
- Git学习笔记(二)
- Git学习笔记(二)
- Git学习笔记(二)
- git学习笔记(二)
- git学习笔记(二)
- Git学习笔记(二)
- Git学习总结(二):GitHub、Git的远程操作
- Git学习二 “远程篇”
- 字典树
- iOS---修改Xcode7建立的工程名称
- Android自定义控件实战——下拉刷新控件终结者:PullToRefreshLayout
- Java归并排序算法实现
- 学习网站整理
- Git学习笔记(二) 远程Git
- 技术-mysql-时间的语句
- 这才是跳槽黄金时机,踩准了!
- java 三种嵌入jsp的方法
- Win10系统开机弹出黑框提示usoclient.exe的解决方法
- sftp命令的简单用法
- 本地推送和远程通知
- QSignalMapper
- 【JAVA】给大家推荐一道有意思的java测试题。你知道答案吗?