git学习心得3

现在记录下本地库和远程库的同步问题

远程仓库最方便快速的就是利用github,在github上申请一个账号,例如我的账号是450093854

首先说说本地库与github上的远程库的连接方式

连接的方式分为两种:https和ssh

https的方式是每次进行同步操作的时候都需要输入账号密码,ssh则可以做到免输入账号密码,但是需要做公私钥的配置,我目前测试的时候ssh方式好像不可用,故我这里采用的是https的方式


本地库与远程库同步的方式首先是要在本地和远程同时建立仓库并关联,这也分为两种情况

一.本地先存在仓库,github不存在仓库,将本地的版本库推送到github在github上建立远程仓库

1.建立远程仓库

git remote add origin https://github.com/450093854/learngit.git //https的方式,这种方式每次需要输入用户名密码
git remote add origin git@github.com:450093854/learngit.git  //ssh方式,这种每次操作远程库时不需要输入用户名密码

2.将本地的master分支关联到远程的master分支,并将本地的master分支的内容推送到远程的master分支上面

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令.


二.github上存在仓库,本地不存在仓库,将github上的仓库克隆下来到本地建立本地仓库

git clone git@github.com:450093854/gitskills.git    ssh方式

git clone https://github.com/450093854/gitskills.git   https方式


在团队开发的时候,多个人会同时远程的版本库进行操作,如何确保同步顺利

假设有甲和乙两个开发人员,甲,乙,远程库显示都是初始版本version_0,甲做了改动提交到远程库,这是甲和远程库的版本都变为version_1,由于乙是在版本version_0的基础上改动的,现在乙也开发好了,其版本为version_2,乙现在要提交到远程库。乙该怎么提交呢?

如果直接推送他本地的代码,则在推送到远程库的时候会报错有冲突,分两步
1.pull,将远程库最新的版本拉取到本地
2.在本地将自己开发的版本与拉取到的最新的版本进行合并,处理冲突
3.将合并后的版本再推送到远程库

1.创建 目录
mkdir learngit
2.将目录指定为git仓库
git init
3.从远程库克隆一个镜像下来
git clone https://github.com/450093854/learngit.git


4.将远程库的dev分支也拷贝到本地
git checkout -b dev origin/dev
在这里会报一个错误,需要使用fetch命令将本地的库与最新的远程库同步
git fetch
然后再执行
git checkout -b dev origin/dev

检查不是上面的错误,而是在远程库上根本就没有dev分支,所以需要先创建一个dev分支并推送到远程库(这个由其他人完成)
git push -u origin dev (其他人在他的仓库中推送dev分支上去)
等他人将dev分支推送到远程服务器后,在拷贝远程的dev分支到本地
git fetch
git checkout -b dev origin/dev


5.现在甲和乙的都与远程的dev分支最新版本同步
甲先做一个修改提交到远程库
vim git.txt  //修改文件
git add git.txt  //添加到暂存区
git commit git.txt  -m 'user commit git.txt' //提交到本地库
git push origin dev  //将本地的dev分支的改动推送到远程库


假设现在乙不先拉取直接推送,则步骤和甲一样
vim git.txt  //修改文件
git add git.txt  //添加到暂存区
git commit -m 'user commit git.txt' //提交到本地库
git push origin dev  //将本地的dev分支的改动推送到远程库


但是直接推送会报一个错误,就是合并错误,导致推送失败,git提示要先pull


6.采用pull先将远程库的内容拉取到本地,解决冲突
pull与fetch的区别
git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git pull:相当于是从远程获取最新版本并merge到本地
pull命令时,git会将远程库的内容拷贝到本地并自动与本地的分支的代码合并
git pull


7.在本地解决冲突,然后将合并后的代码推送到远程库
 git branch --set-upstream dev origin/dev //本地的dev分支没有与远程的dev分支关联,则需要先关联起来
 pull下来之后按照提示,手动将冲突的代码合并,再用如下命令推送到远端
 git add git.txt //添加到暂存区
 git commit -m 'merge commit' //提交到本地库
 git push origin dev  //将本地的dev分支的改动推送到远程库
 
 
 综上,将本地的dev分支的修改更新到远程的dev分支的步骤为,先拉取合并代码,再推送
 1.从远程仓库拉取,合并(使用pull命令拉取与合并就一起做了)
 git pull
 2.在第一步有冲突的话,就手工解决冲突,再推送,如果没有冲突则直接提交,假设git.txt为冲突文件
 git add git.txt //添加到暂存区   git add --all    git add a.txt b.txt c.txt
 
 git commit -m 'merge commit' //提交到本地库
 git push origin dev  //将本地的dev分支的改动推送到远程库


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值