git 的使用(6)-git远程仓库
来源:互联网 发布:生化危机人工智能图片 编辑:程序博客网 时间:2024/05/18 02:17
前言:
前面几节,已经对git常用的、基础的东西已经学的差不多了。可以说是够用了,只要勤加练习,git 小意思。
第一节里,我们学习了github上创建项目以及生产ssh等操作,这里就不再累述了,因为也比较简单。
说一下,因为远程提交代码到github,github支持https和ssh。但是用ssh的好处就是速度快,而且每次提交到github时候不需要输入账户密码就能提交了。
同样参考下面的:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
http://git.oschina.net/progit/
创建github远程仓库
前面几节呢。我们用了一个例子learngit项目,假如,现在我们在本地创建好了。想推送到github上,作为服务器端保存,如何是好呢?
首先我们得熟悉github网站的操作流程,如何创建一个项目, 虽说都是英文,但是也还是比较好操作的,多看一看也就会了。好。言归正传,我们来学习下如何在github上创建一个仓库:
第1步登陆后,粘贴ssh代码到github,为了便于git push 提交。
参考我的第一篇:http://blog.csdn.net/think2me/article/details/8944011
第2步就是创建github项目了:
点击 + 、New respository (新建仓库)
输入我们需要创建的仓库名字,我们取名learngit。description,就是对这个项目的简单的描述和介绍,后面可以修改的。Public和Private。是否是公开还是私密,我们选择公开,因为私密的是要钱滴~。点击Create repository 就完成了创建:
跳转到一个新页面,是learngit的项目详情页,因为是空的什么都没有,所以他提示给我们,要么再本地创建一个新的仓库,然后推送到github。要么是
将本地存在的一个版本库和github的关联起来。显然我们的情况是下面的一种。
好。既然我们是下面的这种,那么我们就跟着它的提示操作吧:
先将本地的和github的关联起来,这样做的好处就是更新和推送的时候就产生了关联。注意写法:
$ git remote add origin git@github.com:iyangyi/learngit.git
然后我们将本地的往github上推送。同样是用它提示的代码,我们输入:
$ git push -u origin masterCounting objects: 34, done.Delta compression using up to 2 threads.Compressing objects: 100% (29/29), done.Writing objects: 100% (34/34), 3.00 KiB | 0 bytes/s, done.Total 34 (delta 10), reused 0 (delta 0)To git@github.com:iyangyi/learngit.git * [new branch] master -> masterBranch master set up to track remote branch master from origin.
ok,这个一大串的提示下来,我们知道成功了,我们可以去github的网站上看一下,果然,和本地是一模一样同步了。`(*∩_∩*)′
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令,直接用:git push
就能推送到远程的master分支了。
我们举一反三,居然可以把dev分支推送到远程的dev分支,那我们现在来推送一下dev分支:
$ git checkout devSwitched to branch 'dev'$ git push -u origin devWarning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.Total 0 (delta 0), reused 0 (delta 0)To git@github.com:iyangyi/learngit.git * [new branch] dev -> devBranch dev set up to track remote branch dev from origin.
ok, 成功。我们去github网站上看一下,果然也推送过去了。
从远程仓库克隆
上面的我们讲到的呢,是本地的代码已经存在,我们推送到github远程,但是现实上,我们很多有是远程已经创建好了,或者是别人的项目,我们需要把代码拉到本地开发或者使用。那么就需要用到git 中的克隆了。
好,我就拿我前不久的一个PHP框架项目来演示吧:https://github.com/iyangyi/YfPHP
现在远程仓库准备好了。我们可以使用
git clone
命令来克隆远程的项目,找个命令支持多种协议,https,或者ssh,都行。git@github.com:iyangyi/YfPHP.git
https://github.com/iyangyi/YfPHP.git
这两种地址协议都是可以的,只不过ssh安全且速度较快。
$ git clone git@github.com:iyangyi/YfPHP.gitloning into 'YfPHP'...Warning: Permanently added the RSA host key for IP address '192.30.252.130' to the list of known hosts.remote: Counting objects: 212, done.remote: Total 212 (delta 0), reused 0 (delta 0)RReceiving objects: 100% (212/212), 211.14 KiB | 58.00 KiB/s, done.Resolving deltas: 100% (63/63), done.Checking connectivity... done.
$ git clone https://github.com/iyangyi/YfPHP.gitloning into 'YfPHP'...remote: Counting objects: 212, done.remote: Total 212 (delta 0), reused 0 (delta 0)Receiving objects: 100% (212/212), 211.14 KiB | 42.00 KiB/s, done.Resolving deltas: 100% (63/63), done.Checking connectivity... done.
这两种方式基本差不多,唯一的不同的是,如果你的用是https的方式clone的时候,你以后每次push操作都要输入账户密码。但是,如果你的ssh方式clone的话,就不需要了,因为你已经把ssh 码填到github网站上去了。所以:推荐用ssh方式克隆。
git branch
命令看看:$ git branch* master
查看所有的分支,可以使用用
git branch-a
命令查看:$ git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/gh-pages remotes/origin/develop remotes/origin/master
默认其他的几个都是红色字体是,隐藏的,现在的情况是本地是没有,所以我们必须创建这个分支才能修改,
git checkout -b gh-pages origin/gh-pages
命令来创建并切换到这个分支,注意后面多了一个origin/gh-pages
表示 创建分支是基于远程的gh-pages,origin表示远程:$ git checkout -b gh-pages origin/gh-pagesBranch gh-pages set up to track remote branch gh-pages from origin.Switched to a new branch 'gh-pages'$ git branch* gh-pages master
默认使用clone 的话,会自动的将本地和远程origin 给关联起来了的。我们不需要用下面语句:
所以正常的我们在这个项目中增删改 用 git push origin master和 git pull完成提交和更新
这样就关联好了。就有2个remote 源了。用 git remove 命令再看一下:
3. 将upstream 的 master 分支的改动用 git merge 合并过来
$ git remote add origin git@github.com:iyangyi/learngit.git
再去关联。
可以通过查看git remote 命令查看
fork更新与提交
我们经常会使用fork ,fork 命令就是把其他人的代码,拷贝一份到我的个人仓库,那么这样我就有了这个项目的一一模一样的备份。可以作为子模块的形式使用,或二次开发 。
在开源项目中点击fork按钮,稍等一会儿,该项目便会拷贝一份到你的respositories中。
那么它就成了我个人的一个项目了。与自己创建的rep的区别是,你能更新同步原始项目的代码,不能报issues,只能报issues给原始的rep项目。
比如:我刚刚fork 了一个项目,就在我自己的仓库下了。 https://github.com/iyangyi/translations
现在我先拉到本地:用上面说到的 git clone命令:
$ git clone git@github.com:iyangyi/translations.gitCloning into 'translations'...remote: Counting objects: 453, done.remote: Compressing objects: 100% (233/233), done.Receiving oemote: Total 453 (delta 217), reused 448 (delta 215)/453), 2.05 MiBReceiving objects: 100% (453/453), 2.07 MiB | 109.00 KiB/s, done.Resolving deltas: 100% (217/217), done.Checking connectivity... done.Checking out files: 100% (110/110), done.
上面说过,使用clone 命令,是默认已经将本地和远程origin管理起来的。我们通过 git remove -v命令查看
$ git remote -vorigin git@github.com:iyangyi/translations.git (fetch)origin git@github.com:iyangyi/translations.git (push)
所以正常的我们在这个项目中增删改 用 git push origin master和 git pull完成提交和更新
现在问题来了。因为我这个rep 是fork 派生的其他人的,而且github 是不会自动更新同步新的代码的。那么我如何将parent的代码更新到我自己的这个fork rep中呢?
有很多种方法可以在做,这里说一种,用到命令 git fetch 和 git merge
1. 先关联一下parent 源的远程,现在就需要用到 git remote add命令了。
我们一般使用upstream这个名字来表示是上游的源头parent地址。当然你可以改成其他的名字。
$ git remote add upstream git@github.com:oldratlee/translations.git
这样就关联好了。就有2个remote 源了。用 git remove 命令再看一下:
$ git remoteoriginupstreamorigin 是我自己fork出来的地址源。upstream 是它的parent的地址源。
2. 用 git fetch upstream 命令获取upstream 的所有分支 :
$ git fetch upstreamremote: Counting objects: 39, done.remote: Compressing objects: 100% (21/21), done.remote: Total 39 (delta 20), reused 37 (delta 18)Unpacking objects: 100% (39/39), done.From github.com:oldratlee/translations * [new branch] master -> upstream/master
3. 将upstream 的 master 分支的改动用 git merge 合并过来
$ git merge upstream/masterAuto-merging README.mdMerge made by the 'recursive' strategy. 10-things-you-didnt-know-about-java/README.md | 551 +++++++++++++++++++++ .../for-you-my-dear-coworkers.jpg | Bin 0 -> 92248 bytes .../java-mystery.jpg | Bin 0 -> 82217 bytes README.md | 7 + bash-3-man/README.md | 2 +- git-workflows-and-tutorials/README.md | 2 +- 6 files changed, 560 insertions(+), 2 deletions(-) create mode 100644 10-things-you-didnt-know-about-java/README.md create mode 100644 10-things-you-didnt-know-about-java/for-you-my-dear-coworkers.jpg create mode 100644 10-things-you-didnt-know-about-java/java-mystery.jpg
4. 好。合并好了。我们前面学习过,merge 后会自动commit的,我们就不用add 和 commit了。那么就需要下一步: git push origin master 推送到我自己pro的远程端了。
$ git push -u origin masterCounting objects: 50, done.Delta compression using up to 2 threads.Compressing objects: 100% (42/42), done.Writing objects: 100% (42/42), 179.36 KiB | 0 bytes/s, done.Total 42 (delta 22), reused 0 (delta 0)To git@github.com:iyangyi/translations.git 76bd644..bc4085a master -> masterBranch master set up to track remote branch master from origin.记住,别 push 到 upstream 上了。因为,这是别人的,你没权限!
5. 如果,你提交了修改,想把修改提交到upstream上了。你可以到 github 上发起一个pull request。它会把改动发送到upstream的人那,他觉得你改的好,就将你这次提交的给合并到分支上去。
小结
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
可以使用命令git pull origin master
获取远程的更新
要克隆一个仓库,首先必须知道仓库的地址,然后使用用git clone
命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
要同步fork源头的代码到自己的,用
1.git remote add upstream git@github.com:oldratlee/translations.git
;
2.git fetch upstream
;
3.git merge upstream/mester
;
0 0
- git 的使用(6)-git远程仓库
- git远程仓库的使用
- git远程仓库的使用
- Git - 远程仓库的使用
- git远程仓库的使用
- GIT远程仓库的使用
- git远程仓库的使用
- git-远程仓库的使用
- Git--远程仓库的使用
- Git --- 远程仓库的使用
- 【Git】远程仓库的使用
- 使用 Git 远程仓库
- 使用git远程仓库
- Git使用-远程仓库
- Git的远程仓库
- Git详解之 远程仓库的使用
- Git 远程仓库的管理和使用
- Git 基础 - 远程仓库的使用
- root密码
- Android Studio User Manual
- IT忍者神龟之笔刷安装说明
- 大数据应用的未来挑战和发展趋势
- gtest
- git 的使用(6)-git远程仓库
- IOS开发网络篇之──ASIHTTPRequest下载示例(支持断点续传)
- 数据结构(JAVA)---JAVA中的对象与指针
- 撒旦法规和国家和看见了空间看环境规划法规
- typedef学习
- [Android第三方类库]Cling-1.0.5 support 使用手册
- Android应用接入第三方登陆之新浪微博
- linux block 设备基本总结-来自于linux设备驱动开发详解
- linux常用小命令技巧