git从0基础到团队协作,可以作为手册使用

git介绍与安装

介绍

在这里插入图片描述

  • 工作区
    • 工作区的文件,你不经过任何处理,他是不会被git管理的
  • 暂存区
    • 对文件的增删改,需要add才能加入暂存区,暂存区有点像购物车,你修改一个文件,add一下,就相当于加购,当你做了一系列的修改后,暂存区,就会形成一个预提交的列表,最后确定可以修改了,你可以一次性提交,形成一个新的版本
  • 本地仓库
    • 当执行commit会将暂存区的文件提交到本地仓库,形成一个新的版本。
  • 远程仓库
    • 没有远程仓库,我们的代码照样能被管理,只不过是本地管理,有了远程仓库,我们可以把成熟的代码与人共享,远程仓库有国外的github也有国内的码云,我们这里使用码云

git安装

  • git可以在mac、linux、window上安装,我们这里只演示window上安装
  • 下载地址:官网 https://git-scm.com/ ,官网比较慢,通过淘宝镜像 https://npm.taobao.org/mirrors/git-for-windows/
  • 下载下来后,一路next即可。安装完毕后,鼠标右键可以看到如下东东。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRHa0dUf-1678242619173)(201804051446571357953.png)]

配置自己的账号

  • 你是谁?

      $ git config --global user.name zhuximing
    
  • 怎么联系到你?

      $ git config --global user.email 569591357@qq.com
    
  • 如果想修改全局配置,你可以如下改:

      $ vim ~/.gitconfig
    

在这里插入图片描述

本地仓库的增删改查

创建本地仓库

  • 切换到某个工作区(某个目录),在工作区执行git init既可以创建本地仓库。git init不仅创建仓库,还自动帮你创建了master分支。
  • 注意:不要把本地仓库建在中文目录下,也不要去修改.git文件夹,那不是你能碰的东西。

添加文件到本地仓库

  • 1:在工作区,新建文件hello.java
  • 2:执行git status,可以查看工作区的文件状态

添加文件到本地仓库

  • 1:在工作区,新建文件hello.java

  • 2:执行git status,可以查看工作区的文件状态

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K8BDTyRA-1678242619173)(3.png)]

  • 3:执行git add hello.java 或者git add . 点代表当前目录所有的文件。

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WgLKpaaS-1678242619173)(4.png)]

  • 4:你可以反悔,如果你觉得不对,你可以执行如下命令撤销

     git rm --cached hello.java
     或
     git reset hello.java
    
  • 5:如果确定没问题,执行commit提交到本地仓库

    $ git commit -m ‘hello.java第一次添加’
    //注意:-m 提交日志,一定要写日志,不然报错。
    //commit无需执行提交哪个文件,因为commit提交的是整个暂存区。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fbgvCxz8-1678242619174)(5.png)]

修改文件

  • 修改文件后,在添加文件一样需要两个步骤
  • 1: 添加到缓存区
  • git add hello.java
  • 2: commit到本地库
  • git commit -m ‘hello.java做了修改’

删除文件

  • //手动删除文件后执行add命令加入预提交列表
    • git add .
  • 查看状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5BAu5S1L-1678242619174)(6.png)]

  • git commit -m ‘删除了hello.java文件’
  • 增删改操作,如果你不想先add 后commit,你可以直接commit 但是需要加-a命令参数,如:
  • git commit -a -m ‘添加文件’
  • 总结:1:无论你做了什么操作,基本两个步骤,add添加到预提交列表,commit将预提交列表一次性提交到本地库。
  • 2:当你迷茫的不知道下一步干啥的时候敲git status,git会告诉你,你应该干什么。

从本地仓库推送到远程仓库

将本地仓库代码提交到码云

1:创建远程仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7uofDTfl-1678242619174)(7.png)]

2:清空远程仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KXeA0g7D-1678242619174)(8.png)]

3:本地仓库推送到远程仓库命令:

$ git push https://gitee.com/zhuximing/test.git master:test

注意:master为本地仓库master分支,test为远程仓库test分支

每次写这么长的远程地址很麻烦,我们可以给地址取个别名,命令如下:

$ git remote add yuanfang https://gitee.com/zhuximing/test.git

4:使用别名推送代码

$ git push yuanfang master:test

注意:推送的并不是工作空间的代码,而是本地仓库的代码。

查看本地操作日志

  • 前言:先不考虑远程仓库,我们先把本地操作玩熟。当不考虑远程仓库的时候,咱们也不用考虑合并冲突的问题,因为你的本地库只有你在操作,别人也没法干涉。接下来我们一起学习本地仓库的一些常用操作。

查看日志

1:git log 看版本日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zTmQQgP-1678242619174)(9.png)]

git log --pretty=oneline

在这里插入图片描述

2:git show看日志细节

在这里插入图片描述

文件版本分支

1:为什么要分支

  • 场景:项目集成完支付宝支付功能后,就开始上线了,上线后有两个任务必须要做,

  • 第一个,线上如果出现bug无条件,第一时间抢修.

  • 第二个老板要求尽快集成微信支付功能.

  • 好,问题来了,这两件事情先做哪一个?

  • 先改bug,bug要等用户用了才知道,难道干等着?

  • 先做功能,但是如果功能做到一半,bug出现了怎么办,撤回到发行版本?那之前做的功能不就没了吗?

  • 解决方案:
    在这里插入图片描述

  • 注意:master不能是开发中间代码,即master不能是半成品,一般都是成熟的功能迭代。

2:创建分支

  • 查看当前有哪些分支

    $ git branch //看本地分支
    $ git branch -a //看远程分支

  • 创建分支:

    $ git branch fixbug_branch //创建分支,此时该分支的进度和master的进度是一致的。
    $ git checkout fixbug_branch //切换到fixbug_branch分支
    接下来在该分支的修改都不会影响到master分支。

  • $ git push https://gitee.com/zhuximing/test.git fixbug_branch:fixbug,推到远程仓库和别人一起协作开发该分支

在这里插入图片描述

3:删除分支

  • $ git branch -d fixbug

4:分支的合并

  • 如果bug已经修复好,这时候我们需要将bug分支代码合并到master
  • 1:先切换到master分支
  • $ git checkout master
  • 2:合并
  • $ git merge fixbug //从fixbug分支合并到master分支

5:合并分支冲突

  • 如果master分支不动,不修改,不提交,只改fixbug分支,这种情况合并是不会冲突的。
  • 但是如果master和fixbug同时修改,提交,前进,而且改同一个文件,那么合并的时候就会冲突
  • 冲突演示:
    • 切换到fixbug分支,修改a.txt文件,并提交

      • $ gi add .
      • $ git commit -m ‘fixbug 修改了a.txt’
    • 切换到master

      • master,耐不住寂寞,也修改a.txt(实际开发中是不修改master代码的,这里只是为了演示冲突,不得已修改哈)
      • $ git add .
      • $ git commit -m ‘master 修改了a.txt’
    • 合并失败
      - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtQg0AlV-1678242619176)(29.png)]

    • 解决冲突:

      • 1:谁改的master,谁改的fixbug,站出来,你们一起商量下怎么合并

      在这里插入图片描述

      • 2:最终商量的结果
        在这里插入图片描述

      • 3:提交

      • $ git add .

      • $ git commit -m ‘分支合并冲突已解决’

6:版本切换

  • 先看看我们的HEAD当前指在哪个版本
    在这里插入图片描述

  • $ git reset --hard HEAD^ //你工作区和本地库都回退到上一个版本。

  • $ git reset --hard HEAD^^//你工作区和本地库都回退到上上一个版本。

  • 注意:这种操作少做,即使要做,也最多只切换到最近一个版本。

git的团队合作

邀请新成员

在这里插入图片描述

同意邀请

在这里插入图片描述

[克隆]第一次下载代码:

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-psGwtK3c-1678242619176)(15.png)]

  • 注意:1:-b test :表示克隆的是远程仓库的test分支代码
  • 2:克隆的是test分支,那么git会在本地也自动帮你创建test分支

克隆结果:

在这里插入图片描述

第n次更新代码协作开发(不考虑冲突的情况)

  • 全村的希望

  • 新建d.txt —add—>暂存区------commit----->本地库-------push------>远程库

  • 命令如下:

    $ git add . //添加当前目录所有改动到暂存区。
    $ git commit -m ‘add d.txt’//将暂存区的改动列表一次性提交到本地库,生成一个新的版本。
    $ git pull https://gitee.com/zhuximing/test.git test:test //让本地库和远程库同步,这是非常好的习惯。
    $ git push https://gitee.com/zhuximing/test.git test:test//将本地库的改动推到远程库。
    注意:test:test,表示将本地库的test分支推到远程库的test分支

  • 小提示:要在一台电脑上演示2个用户操作的效果,需要改下git本地配置文件(不是全局配置文件)

  • $ vim .git/config

在这里插入图片描述

  • 全屯的希望

  • 修改a.txt —add—>暂存区------commit----->本地库-------push------>远程库

    $ git add . //添加当前目录所有改动到暂存区。
    $ git commit -m ‘change a.txt’//将暂存区的改动列表一次性提交到本地库,生成一个新的版本。
    $ git pull https://gitee.com/zhuximing/test.git test:test //让本地库和远程库同步,这是非常好的习惯。
    $ git push https://gitee.com/zhuximing/test.git test:test//将本地库的改动推到远程库。

  • 如此往复,只要全村的希望和全屯的希望不去修改同一个文件,日子永远是美好的,按照上面的操作,开开心心把项目做完。
    注意:每一次push记得先pull,要不然如果远程仓库的HEAD和你本地库的HEAD不一致的时候,即使没冲突也不让你提交的

代码合并冲突

  • 当全村的希望和全屯的希望,只要不改同一个文件,每次pull的时候都是不会冲突的,但是如果他们俩修改同一个文件,那么在pull的时候必然冲突。

  • 冲突演示之全村的希望操作:
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdya43Lw-1678242619177)(18.png)]

    $ git add .
    $ git commit -m ‘我全村的希望修改了a.txt’
    $ git pull //很好的习惯
    $ git push https://gitee.com/zhuximing/test.git test:test

  • 冲突演示之全屯的希望操作:
    在这里插入图片描述

    $ git add .
    $ git commit -m ‘全屯的希望修改了a.txt’

  • 注意:全屯的希望在push之前要先pull,这时就会将远程代码合并到本地库,冲突马上发生
    在这里插入图片描述

  • git status,看状态
    在这里插入图片描述

  • 既然无法合并,出现冲突,接下来怎么解决冲突呢?思路有三.

  • 1:将全村的希望喊过来,两个人坐下来有话好好说,商量下怎么合并。
    在这里插入图片描述

  • 商量最终的结果
    在这里插入图片描述

  • 2:提交

    $ git add .
    $ git commit -m ‘商量最终的结果’
    $ git push https://gitee.com/zhuximing/test.git test:test

  • 3:全村的希望回到座位,pull代码

    $ git pull
    接下来,继续干活.

  • 为了防止大面积的冲突,几条血的建议

    • 1:写代码之前先 git status看有没有没 未提交的修改,然后git pull同步下代码.有冲突解决冲突,没冲突更好.
    • 2:尽量小步快走,写一点push一下,别等写了n个月再push一次.

忽略文件

  • 在你的工作空间中有很多文件是你不希望与人共享,或者提交的,这些文件你可加入忽略文件列表。

  • 1:在.git文件夹的同级目录创建.gitignore文件 (如果远程仓库有该文件,你就不要多此一举去创建,直接pull下来是一样的)
    在这里插入图片描述

  • 2:提交到本地仓库,并推送到远程仓库

    $ git add .
    $ git commit -m ‘添加忽略文件’
    $ git push yuanfang master:master

  • 3:好了,现在你在本地新建db.properties文件你会发现git不追踪了,你修改该文件也不追踪

在这里插入图片描述

idea同步提交代码到码云gitee和github

之前一直使用的github,但是访问比较慢,一些方法可以提高访问速度的,但总是不够友好,加上国外可能存在禁用因素,作为国人应该不能完全依赖外网,于是果断选择国内的码云作为代码托管平台。以下内容是关于github上代码迁移到gitee,并可实现提交代码同时提交到gitee和github上。

1、从github迁移仓库到gitee

访问码云官网,新建仓库时有个从其他网站导入的功能,可选择性的将仓库导入,如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LpeJ8Br3-1678242619179)(image-20230225110847039.png)]

2、本地提交文件同步提交到gitee和github

2.1 gitee配置公钥

之前有提交过github是肯定都配置了公钥,这个公钥也可以用在gitee,可在对应登录用户的如下目录找到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lgmaQjog-1678242619179)(image-20230225111123756.png)]

用编辑器打开id_rsa.pub文件复制里面的内容。到gitee里配置公钥如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnbVsIDs-1678242619179)(image-20230225111253675.png)]

2.2 配置git,实现同时提交代码

到本地代码目录里找到.git目录(是个隐藏目录),展示出隐藏目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFR5grvM-1678242619179)(image-20230225111519213.png)]

进入.git目录用编辑器打开config文件,如下将gitee的也配置上即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6WrKJwTh-1678242619179)(image-20230225111702230.png)]

idea安装gitee插件并配置自己的gitee账号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yeaIY9xp-1678242619179)(image-20230225112156827.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jJfaJPPK-1678242619179)(image-20230225112342047.png)]

idea修改文件push即可同时提交到gitee和github了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-24zmswVL-1678242619180)(image-20230225112630914.png)]

常见问题解决

Please make sure you have the correct access rights and the repository exists.问题解决

用编辑器打开config文件,如下将gitee的也配置上即可。

[外链图片转存中…(img-6WrKJwTh-1678242619179)]

idea安装gitee插件并配置自己的gitee账号

[外链图片转存中…(img-yeaIY9xp-1678242619179)]

[外链图片转存中…(img-jJfaJPPK-1678242619179)]

idea修改文件push即可同时提交到gitee和github了

[外链图片转存中…(img-24zmswVL-1678242619180)]

常见问题解决

Please make sure you have the correct access rights and the repository exists.问题解决

https://blog.csdn.net/lw545034502/article/details/90696872

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习是生活的调味剂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值