git学习笔记之远程仓库

1.1 概述

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。

实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器仓库“克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

完全可以自己搭建一台运行Git的服务器,不过现阶段,为了学Git先搭个服务器绝对是小题大作。好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
当然国内也有git服务器:码云
公司内部往往会搭建自己的git服务器,可能选型为: gitlab

在这里插入图片描述

2. 设置SSH-Key

git本地库和 github 或 码云 之间传输,建议设置SSH key,避免在传输中反复输入密码

执行:ssh-keygen -t rsa -C "邮箱地址" 然后一直回车即可 -C后"可以随意写一个,作为key的title而 已,无关紧要"

最后:在 C:\Users\主机名\.ssh 目录下生产秘钥文件,

id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

登录GitHub,在账户设置中,选择 “SSH Keys” ,在Title中随便填写一个,在Key中填写 id_rsa.pub文件中的所有内容即可。
在这里插入图片描述
这样和git服务器通信时(clone,push,pull)git无夫妻就可以识别出你的身份。识别出你是谁;你是否有权限访问某个远程库;你是否可以上传你的代码。

在这里插入图片描述

在这里插入图片描述

3. 关联远程库

将本地git库和远程github库建立关联。可以方便本地库和远程库的pushpull

# 添加远程库      远程库别名               库地址
git remote add   origin     git@github.com:zanghongjiu99/repo.git  # 注意:origin是默认会有的别名
git remote add   test       git@github.com:zanghongjiu99/repo2.git # 还可以设置自己的别名
git remote -v  # 查看关联的所有远程库
git remote show origin # 关联远程库后,本地分支和远程分支的对应关系
git remote remove origin  # 删除关联
git remote rename origin origin2 # 重命名

4. Push

将本地master分支的内容上传到关联的远程库中,push结束后在github中可见
如果在你push之前有人向库中添加新的内容,则需要先pull再push否则会push失败

# 本地的master分支上传到与之有跟踪关系的远程分支中,(克隆时就会建立跟踪关系),如果远程分支不存在,则会建立远程分支
git push origin master
# 本地存在分支dev,上传到远程库origin的分支dev,如果没有dev,将建立远程分支dev
git push origin dev:dev
# 本地库dev:远程库dev  本地库dev2:远程库dev2
git push origin dev:dev dev2:dev2
# push动作,其一需要你有权限push,其二需要在你pull之后没人push过。(乐观锁机制)

5. Pull

等价于git ffrth+git merge拉取远程的新内容,并合并到当前分支

# 语法格式:git pull <远程主机名> <远程分支名>:<本地分支名>
# 完整写法
git pull origin master:master

# 省略本地分支名 = master:当前分支(缺省)
git pull origin master

# 省略本地分支名 = dev:当前分支
git pull origin dev

# 拉取远端origin的所有分支中的改变,并将属于当前分支的改变自动merge
git pull origin

6. Clone

下载远程库中的内容,注意clone操作会自动搭建关联,即上述的3.关联远程

# 任意新建一个目录,并执行:
git clone git@github.com:zanghongjiu99/repo.git   #ssh 地址,将远程库clone到本地,已设置key,不用口令
git clone https://github.com/zanghongjiu99/zhj_repo.git  #https地址,需要输入github口令

细节:clone 只在初次从git服务器下载项目时执行一次,后续在需要同步应该执行 pull 或 fetch
当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。

7. 协同工作流程

· 项目管理员(项目经理)

1> 由管理员负责创建一个远程库,初始的库中什么也没有,成为裸库,如5.2中所述。库的名称建议和项目同名

2> 管理员会在idea中创建一个空项目,其中包含.gitignore文件。 并在项目根目录下 git init. 建立本地库。并建立 dev分支

3> 管理员将本地库同步到远程库:git push 远程库地址 master:master dev:dev

4> 将其他开发人员拉入远程库的 开发成员列表中 ,是的其他开发人员可以访问该远程库。

5> master分支设置为 protected分支,只有管理员有权限将代码合并到其中。dev分支设置为 常规分支所有开发人员 都可以其中合并代码

  • 开发人员

    1> 初始化:在cmd或idea中clone 远程库,获得项目。执行 git clone 远程库地址 即可。会建立本地库

    2> 获得项目时,本地库中只显示master分支,需要执行: git checkout dev 即可获得dev分支。

    3> 后续的开发中,都要在dev分支上进行。开发完一个功能并测试通过后就可以 git add ..git commit .. 提交到本地的dev分支中,然后 git push 远程库地址 dev 同步到远程dev分支中。 是否需要在本地master中合并下?

    4> 注意如果在 git push 远程库时,有人比你早一步 git push,git服务器将拒绝你的 git push.(乐观锁原理) 不过很简单,你需要 git pull 远程库 dev ,然后再 git push即可。

    后续的开发,会接到一个个的功能任务,往复操作 3> 和 4> 而已。

  • 效果

    在实际开发中,我们应该按照几个基本原则进行分支管理:

    首先,master分支应该是非常稳定的, 也就是仅用来发布新版本,平时不能在上面干活;

    那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再有管理员把dev分支合并到master上,在master分支发布1.0版本;

    你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

    所以,团队合作的分支看起来就像这样:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值