美文网首页
Git笔记与思考五:远程仓库

Git笔记与思考五:远程仓库

作者: 囧书 | 来源:发表于2017-11-07 16:38 被阅读34次

多人协作时,每个人都在自己本地有一个Git仓库,这时会希望有一个远程官方仓库来同步代码。

创建远程仓库

创建一个远程仓库,和创建本地仓库没什么区别。如果站在远程服务器的角度来说,就是创建一个服务器本地仓库。
创建仓库的方法有两个,一是通过初始化命令,从无到有新建;二是通过克隆命令,从别的仓库克隆一份过来。

一般来说,对于只用来做代码同步的仓库,我们不需要它有自己的工作区,因为我们不会在服务器上直接开发。
所以比较好的办法是使用初始化命令,再配合bare参数,创建一个不带工作区的纯版本库。

// 在远程服务器上,进入需要放置版本库的目录,执行命令
git init --bare

关联本地仓库

克隆

如果你本地还没建立仓库,或者你只是想得到一份和远程一模一样的仓库,可以直接克隆远程的到你本地。

git clone 远程仓库地址 本地仓库地址

注意指定的远程仓库地址必须要存在,但是本地仓库地址可以不存在,如果不存在就会创建,但如果指定的本地仓库地址已经有Git在管理了,这次克隆命令就会失败。
它会提示你

fatal: destination path '本地仓库地址' already exists and is not an empty directory.

对于克隆得到的本地仓库,它会自动把克隆源作为远程仓库,自动关联上。
这时候,如果你在本地仓库进行了某些提交,然后想把这些提交同步到远程仓库,就可以使用push命令。

// 在本地进行工作,比如新建了文件
touch a.txt
git add --all
git commit --m "A"
// 然后,直接push到远程
git push

假如在你工作的这段时候内,都没有其它小伙伴做过push操作,那么这时候就可以直接push成功。

指定远程仓库

如果你已有一个本地仓库了,也可以使用remote命令手动为其指定远程仓库。
而且一个本地仓库可以关联多个远程仓库。

// 列出所有远程仓库
git remote 
// 添加一个远程仓库关联,并起个名字
git remote add 起的名字 远程仓库地址
// 删除一个远程仓库引用
git remote remove 仓库名

通过remote命令添加了远程仓库后,并不能像clone那样直接可以做push操作,假如你这么做了,Git会告诉你:

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
    git push --set-upstream origin master

这时你有两个选择,一是在push命令后增加参数,告诉Git你要把当前的提交push到哪里;二是设置默认的远程仓库分支,这样你以后的push操作默认都推到设置的远程仓库分支里。

// 把当前分支的提交push到origin仓库的master分支
git push origin master
// 或者
// 设置默认远程仓库分支
git push --set-upstream origin master
// 以后再push就不需要参数
git push

合并远程数据

当远程仓库有更新时,就可以把远程的提交合入本地仓库:

// git merge 远程仓库名/分支名
git merge origin/master

然而这个命令并不会去下载远程仓库的数据,它完全是个本地操作。所以在执行merge之前,需要先下载远程仓库的提交数据:

// 先用fetch下载,git fetch 远程仓库名 分支名
git fetch origin master
// 再合并
git merge origin/master

那有没有方便点的命令把这两步操作一起做了?有,就是pull

git pull

pull命令等同于fetch + merge

推送本地数据到远程仓库

把本地的提交推送到远程仓库,只用一个命令,就是push

git push

push要想顺利执行,需要满足一个条件:本地仓库已包含远程仓库的所有提交,或者说,远程仓库没有比本地仓库更多更新的提交。
在满足这个条件下,可以顺利执行push操作,让远程仓库合并我们的本地提交。
所以,在push之前,都需要先进行pull操作,如果在pull的合并过程中发生冲突,还需要在本地解决完冲突后,再把解决后的提交push到远程仓库。

版本标签

Git能给某次提交打上标签,这个作用很大,比如可以为某次发行版打个版本号标签:

// 在当前分支指针上,打上一个叫3.2的标签
git tag 3.2

标签不会自动同步到远程仓库,此时可以手动推送:

git push --tag

这样就把本地打的发行版标签推送到远程仓库。

相关文章

  • Git笔记与思考五:远程仓库

    多人协作时,每个人都在自己本地有一个Git仓库,这时会希望有一个远程官方仓库来同步代码。 创建远程仓库 创建一个远...

  • Git 入门到放弃

    简介 git关联远程仓库 本地仓库与远程仓库同步问题 Git 终端命令 git关联远程仓库 基本流程 注册gith...

  • Git学习笔记

    Git学习笔记 Git是什么 分布式版本管理系统 本地仓库与远程仓库 本地仓库在当前文件夹下执行 git init...

  • Git远程配置

    Git远程查看  Git查看远程仓库 Git远程参数 Git配置远程仓库

  • 学习如何使用git

    学习如何使用git git的初始设置 git仓库的ssh密钥 远程仓库的设置 远程仓库与本地仓库的同步(参考了这篇...

  • 本地代码强推到git远程仓库的笔记

    本地最新代码强推到git远程仓库的笔记

  • [git] git拉取远程仓库,同步远程分支,解决冲突

    [git] git拉取远程仓库,同步远程分支,解决冲突 1.本地仓库存在 本地仓库与远程master已绑定 1.拉...

  • 【转载】git使用教程-涂根华

    文章来源部分图片来源 五.远程仓库 (一).提交到网上的远程仓库 一.前提: github仓库 ,本地git仓库 ...

  • Git概览

    Git到底是个什么鬼?远程仓库又是个什么鬼?本地Git仓库与远程仓库有什么区别? Git到底是个什么鬼? Git不...

  • 2018-05-14

    删除远程分支: git push 远程仓库 --delete 远程分支 git push 远程仓库:远程分支 本地...

网友评论

      本文标题:Git笔记与思考五:远程仓库

      本文链接:https://www.haomeiwen.com/subject/teyjmxtx.html