git初学 2

问题1:多人协作如何共享仓库的代码?

问题2:开源项目,如何共享给其他程序员?

上一级重点了解了把自己的项目储存到本地仓库的一些操作

接下来的操作就是工作中常用的操作了 (上传本地仓库到远程仓库,实现多人协作,共同维护项目)

重点1:远程仓库

重点2:分支操作

重点3:多人协同

【1】远程仓库(其实是网站)

1.什么是远程仓库?

远程仓库又叫做开源项目托管平台,专门用于免费存放开源项目源代码的网站

2.有哪些远程仓库?

目前世界上比较出名的开源项目托管平台有:

主要有以下 3 个:

注意:以上3个开源项目托管平台,只能托管以git管理的项目源代码,因此,它们的名字都以git开头

3.自己在码云和GitHub上面注册自己的帐号(这样远程仓库就有了)

4.开始操作了:

1)本地仓库和远程仓库建立联系

建立联系的命令:git remote add origin 远程仓库的地址

git  remote -v  【查看有没有跟远程仓库建立联系】

git remote remove origin 【删除已经建立的联系】

2)把本地仓库的代码,上传到远程仓库【推送到远程仓库】重点

<1>HTTPS方式访问远程仓库

---第一次操作:

step1:准备好自己的本地仓库

step2:创建一个空白的远程仓库(+)

step3:命令行中,本地仓库和远程仓库建立联系 (复制粘贴即可)  git remote add origin ...

step4:把本地仓库的代码,推送到远程仓库 (复制粘贴)git push -u origin master

---后续推送:(无非自己修改了代码或新建了文件需要重新推送)  

注意:不能直接git push  ,需要先将自己的文件存放带本地仓库

具体步骤如下:

step1:在本地仓库中修改文件(创建、修改内容)

step2:提交到本地仓库(工作区-->暂存区-->仓库)   git add .  git commit -m '.......'

step3:推送命令:把本地仓库的最新内容推送到远程仓库   git push 

<2>SSH方式访问远程仓库(平时主要用这个)

使用SSH方式,会提前做一些额外的配置,然后就可以正常推送了

先了解以下SSH和HHTPS 的不同

SSH key(密钥)

SSH key作用:实现本地仓库和远程仓库之间免登录的加密数据传输

SSH key好处免登录身份认证、数据加密传输。(hhtps需要)

SSH key两部分组成,分别是:

id_rsa(私钥文件,存放于客户端的电脑中即可)

id_rsa.pub(公钥文件,需要配置到远程仓库 中)

开始配置了:

额外的配置:(只需要做一次就可以了)(匹配本地和远程的密钥)

第1步,在本机生成 SSH key

① 打开 Git Bash

② 粘贴如下的命令,并将 your_email@example.com 替换为注册 账号时填写的邮箱:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

③ 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹\.ssh 目录中生成 id_rsaid_rsa.pub 两个文件

第2步,找到密钥文件   C:\Users\用户名文件夹\.ssh 目录中生成 id_rsaid_rsa.pub 两个文件

第3步,配置 SSH key   复制密钥文件的内容(公钥文件id_rsa.pub)  ,到托管平台(远程仓库)进行配置   (设置。公钥中查找)

第4步,检测 SSH key 是否配置成功
在本机命令行中:

ssh -T git@github.com  或者   ssh -T git@gitee.com

执行成功后输入yes

配置完成之后就可以  将本地仓库的内容推送到远程了(和hhtps基本一致)

不同之处在于:

本地仓库和远程仓库建立关联  远程地址不一样

🆗  现在就可以把自己本地的代码推动到远程仓库了

3)克隆远程仓库到本地仓库  (本地没仓库,把远程仓库直接复制到本地)

场景:第一天进公司,经理让熟悉项目代码,这时候就需要从远程仓库中克隆代码到自己的电脑上了,自己需要的是远程仓库中项目的地址就可以了

然后执行命令:git clone 远程仓库的地址

4)拉取远程仓库的最新内容到本地仓库    git pull   

所以:频繁的操作就是:推送-拉取-克隆(一次)

远程------>本地(拉取git pull)

本地------->远程(推送 git push)

接下来是本地仓库和远程仓库的的分支操作(重点)

【2】分支操作(主分支只是用于存储和记录,写代码在功能分支完成,然后再合并到主分支)

前提:多进程同步开发,多个程序员之间不能相互影响  

分类:

(1)主分支master    (git默认创建好的,一直存在)

    --作用:保存和记录整个项目的已完成的功能代码

(2)功能分支  (用来开发新功能的分支)功能实现之后,在合并到master分支上

接下来分别介绍本地仓库中的分支操作远程仓库中的分支操作

1.本地仓库的分支操作:

查看分支:git branch 

创建分支:git branch 新分支名称  注意:基于当前分支,创建了一个副本

切换分支:git checkout 分支名称

创建切换新分支git checkout -b 新分支名称

合并分支:git merge 分支名称  (先执行git checkout master  先切换到主分支)

  注意:在分支上做的操作一定要先提交到仓库,然后再去合并分支

删除分支: (当把功能分支的代码合并到 master 主分支上以后,就可以删除对应的功能分支:

git branch -d 分支名称   

git branch -D 分支名称     没有执行过合并操作的分支            

解决合并分支冲突:

[1] 什么情况下产生冲突?        不同的分支,对同一个文件做了不同的修改。

[2] 如何解决冲突? 

第1步,跟同事一起商量,最终保留哪些代码

第2步,重新做一次提交          git add .     git commit -m '解决某个功能的冲突'                                                    

所以本地仓库的分支操作过程为:

1.切换到功能分支

2.开发功能分支

3.把代码提交到本地仓库

4.合并到主分支  (先切换到主分支上,然后合并git merge 分支名称)

2.远程仓库的分支操作:

(1)把本地仓库的分支推送到远程仓库

如果是第一次将本地分支推送到远程仓库,需要运行如下的命令:

 -u 表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带 -u 参数
git push -u 远程仓库的别名 本地分支名称:远程分支名称
例如:git push -u origin payment:pay

如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化
git push -u origin payment

注意:第一次推送分支需要带 -u 参数,此后可以直接使用 git push 推送代码到远程分支。

(2)查看远程仓库的分支

 git remote show origin

(3)下载远程仓库分支到本地仓库

从远程仓库中,把远程分支下载到本地仓库,分支名称保持一致
git checkout 远程仓库的分支  如:git checkout pay

注意:

本地仓库没有远程仓库的这个分支,执行 git checkout 分支名,表示下载远程的这个分支 

如果本地有这个分支,执行 git checkout 分支名   表示的是切换分支

 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 origin/远程分支名称
例如:git checkout -b payment origin/pay

(4)拉取当前分支对应的远程分支上的最新内容,保持当前分支的代码和远程分支代码一致
git pull

(5)删除指定的远程分支    
git push 远程仓库名称 --delete 远程分支名称 
例如:git push origin --delete pay

(删除本地分支还记得吗? git branch -d 分支名称)

🆗,现在就是本地仓库和远程仓库的一些分支操作

接下来就是工作中多人协作

协作流程(俩字:推拉)

协作时的问题:

   b和c同时需要对同一个文件做修改

【1】推送失败 (c推送失败)

原因:B先于C推送了代码到远程仓库 ,远程仓库的版本记录,高于c本地仓库的记录

解决:先拉后推(一拉又出问题)

【2】拉取冲突

问题原因:先拉后推,一拉就冲突了!  

(拉取的时候,远程仓库的文件会覆盖本地仓库的文件)

解决:

1:手动绝对到底留哪些代码

2:提交到本地仓库

3:把本地仓库推送到远程仓库

4:B如果需要用此文件,需要做一次拉取

命令混淆区:

反悔操作:git checkout --index.html(工作区)撤销对文件内容的修改

切换到指定的分支(本地仓库)git checkout 分支名

创建并切换到新分支  git checkout -b 分支名

远程仓库的分支下载到本地仓库  git checkout 远程仓库分支名

取消文件的暂存  git reset HEAD 文件名 

版本回退  git reset --hard <commit ID>

移除仓库文件(同时移除工作区和本地仓库)git rm -f 文件名

移除仓库文件(移除本地仓库,保留工作区)git rm --chche 文件名

本地仓库删除分支  git branch -d 分支名

远程仓库删除分支   git push origin --delete 远程仓库分支名

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值