您的位置:首页 > 编程语言

git学习心得3

2017-04-16 02:28 176 查看
现在记录下本地库和远程库的同步问题

远程仓库最方便快速的就是利用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分支的改动推送到远程库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  github 管理