git学习笔记

这篇博客详细介绍了Git的各个方面,包括git介绍、安装配置、gitignore设置、git管理流程、分支管理、远程仓库操作(以GitHub为例)、rebase应用、多人协同开发和贡献代码的方法。内容涵盖git的基本概念、常用指令、分支合并和远程仓库的使用,适合Git初学者和进阶者学习。
摘要由CSDN通过智能技术生成

资料均来自网络整理,若有侵权,请联系删除。
此文章主要为B站git教程视频笔记整理

一、git

(一)、git介绍

  1. git是一款分布式版本控制工具(软件)

  2. 发展历程

    ① 文件复制

    ② 本地版本控制

    ③ 集中式版本控制(SVN)

    ④ 分布式版本控制(git)

(二)、安装和配置

Ⅰ、安装

  1. 说明:只能在本地进行安装,且版本控制只在本地,中心是在仓库

  2. 从git官网进行下载安装

    git官网

Ⅱ、配置

  1. 三种个人信息配置方式

    ①当前项目配置(.git/config)

    • 配置指令

      git config --local user.name 'name'
      git config --local user.email 'xxx@xx.com'
      
    • 进入并编辑指令:进入对应目录编辑文件即可

      vim . //进入隐藏文件夹
      vim .git/config //编辑配置文件
      

    ②全局配置(~/.gitconfig)

    • 说明:是在用户名所在(~/.gitconfig),配置好后对所有git项目都通用

    • 配置指令(将上面的配置指令中的local改为global就行)

      git config --global user.name 'name'
      git config --global user.email 'xxx@xx.com'
      
    • 进入编辑指令:进入对应目录编辑文件即可

      //在用户目录下的.gitconfig
      vim ~/.g
      vim ~/.gitconfig
      

    ③系统配置(etc/.gitconfig)

    • 配置指令

      git config --system user.name 'name'
      git config --system user.email 'xxx@xx.com'
      //需要root权限,不然无法写入
      

Ⅲ、应用场景

//配置个人信息
git config --local user.name 'name'
git config --local user.email 'xxx@xx.com'
//配置beyond compare
git config --local merge.tool bc3
git config --local mergetool.path '安装路径'
git config --local mergetool.keepBackup false 

git remote add origin 地址 //默认添加在本地配置文件中(--local)

Ⅳ、指令小结

//查找顺序:本地->全局->系统
//本地项目配置
git config --local user.name 'name'
git config --local user.email 'xxx@xx.com'
//全局配置
git config --global user.name 'name'
git config --global user.email 'xxx@xx.com'
//系统配置
git config --system user.name 'name'
git config --system user.email 'xxx@xx.com'

//编辑本地项目配置文件
vim . //进入隐藏文件夹
vim .git/config //编辑配置文件
//编辑全局配置文件
vim ~/.g
vim ~/.gitconfig

(三)、gitignore忽略文件设置

  1. 说明:让git不再管理名单里面的某些文件,支持正则表达式。可以忽略管理文件夹和自身,也可以加“!”表示要管理的文件或文件夹

  2. 例子:

    //进入编辑gitignore指令,使用vim编辑器
    vim .gitignore
    
    //管理名单举例
    *.h //忽略.h结尾的所有文件管理
    !a.h //对a.h的文件进行管理
    .gitignore //忽略管理gitignore文件自身
    files/ //忽略管理files文件夹下的所有文件
    *.py[a|c|d] //忽略pya,pyc,pyd的文件
    
  3. github提供了各种语言的gitignore文件,拷贝到本地文件即可

    github提供的gitignore参考

二、git管理

(一)、git简单管理流程

  1. 流程:进入所要管理的文件夹->进行指令初始化->进行管理->生成版本

  2. 所需要用到的指令

    git init //初始化,即让git帮助我们管理当前文件夹
    git status //检测当前目录下文件的状态,是否已经进行管理
    /*三种状态的变化
    	红色:新增的文件/修改了原来老文件 -> (git add 文件名)或(git add .)
    	绿色:git已经管理起来,->git commit -m '描述信息'
    	透明:生成版本后,检测不也来,通过状态指令也查不到
    */
    git tag -a v1 -m "标签信息" //给版本打上标签
    git log //查看版本记录信息
    

(二)、git三大区和转化

Ⅰ、三大分区

  1. git分为三大区域:工作区、暂存区、版本库

    • 工作区又分为两个部分:已经管理的、新增或修改的(红色)
      • 两者之间git会自动识别
    • 暂存区(绿色):数据缓冲作用
    • 版本库(无色)
  2. 操作过程中

    • 先由工作区提交到暂存区(将文件管理起来)—— a d d add add 指令(变成绿色)
    • 确定后,由暂存区提交到版本库(增加版本信息)—— c o m m i t commit commit 指令
  3. 三大分区示意图
    在这里插入图片描述

Ⅱ、各分区转化

  1. 工作区回退

    git checkout - - 文件名.后缀名

  2. 由暂存区恢复到工作区

    git reset HEAD 文件名.后缀名

  3. 版本回滚常用指令

    git reset  - - hard +(commit后面数值,版本号——哈希值) //版本回滚
    git reflog //查看版本信息,可用reset再次恢复之前版本   
    
  4. 等等

(三)、指令小结

git init
git add
git commit -m '描述信息'
git log
git reflog
git reset --hard 版本号 //版本回退
git checkout -- 文件名//工作区文件回退
git reset HEAD 文件名//暂存区回退到工作区

三、分支

(一)、分支作用

  1. 作用:便于同一项目,不同版本同时开发,避免代码产生分歧。

  2. 意义:

    • 不同的任务组在不同的分支上开发,互不影响
    • 比如说,需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,也就是说,主线上都是稳定的代码,可以直接拿来发布的。
  3. 经常会使用的分支

    /*
    主分支(master)
    开发分支(develop)
    功能分支(feature)
    预发布分支(release
    修补bug分支(bug)
    */
    

(二)、分支合并

  1. 合并过程:先切换到要合并到的分支,再使用merge指令进行合并,若有需要可以删除不要分支
//所用到的指令
git checkout 分支名//切换分支
git merge 分支名 //合并分支
/*
合并冲突时,可以通过手动或者软件进行解决
*/
git branch -d 分支名//删除分支
  1. 一般工作流

    • 开发一般有一个主开支(master),一个开发分支(dev)。开发时都在开发分支上写

    • 开支分支稳定后,再进行合并

    • 截图
      在这里插入图片描述

  2. 例子示意图
    在这里插入图片描述

(三)、常用指令小结

git branch //查看分支
git branch 分支名//创建分支
git checkout 分支名//切换分支
git merge 分支名 //合并分支
git branch -d 分支名//删除分支

四、远程仓库(以github为例)

(一)、github介绍

  1. github是一个代码托管平台;

  2. gitlab是一个软件,可以自己搭建一个仓库

(二)、基于github做代码托管

Ⅰ、托管准备

  1. 准备:
    • 注册帐号
    • 创建仓库
    • 将本地代码推送至远程仓库

Ⅱ、代码托管

  1. 新项目代码推送:在github创建仓库后,在本地进行代码推送指令

    git init
    git add README.md //添加说明文档
    git commit -m "fist commit"
    git remote add origin https://github.com/XXXX/仓库名.git //将远仓库链接地址取名为origin
    //链接在github上面可以查看
    git push -u origin master //将master推送至远程仓库
    
  2. 从github下载代码

    • 指令: git clone 仓库地址 \text{git clone 仓库地址} git clone 仓库地址 ;(内部己实现 git remote add origin 远程仓库地址 \text{git remote add origin 远程仓库地址} git remote add origin 远程仓库地址
    • 所有代码和分支都拿下来了,可以通过 c h e c k o u t checkout checkout 直接切换分支

(三)、push操作免密登录

  1. URL中体现

    也可以直接编辑配置文件

    //使用例子体现
    原来的地址:<https://github.com/Lingwu-Sunshine/java-programming-calculator.git>
    修改的地址:<https://用户名:密码@github.com/Lingwu-Sunshine/java-programming-calculator.git>
    
    //指令
    git remote add origin <https://用户名:密码@github.com/Lingwu-Sunshine/java-programming-calculator.git>
    git push origin master
    
  2. SSH实现

    1. 生成公钥和私钥(默认放在 ~/.ssh目录下,id_rsa.pub公钥,id_rsa私钥)

      指令:ssh-keygen

    2. 拷贝公钥的内容,并设置到github中

      • 查看公钥指令:cat ~/.ssh/id_rsa.pub
      • 在github设置中配置SSH
        github中配置SSH
    3. 在git本地中配置ssh地址(使用ssh协议)

      git remote add origin ssh地址
      //配置好就不用输入密码了,通过公钥和私钥已经实现了
      
    4. 以后使用

      git push origin master //使用ssh推送master分支		
      
  3. window10管理凭证
    win10凭据管理

  4. 本节指令小结

    原来的地址:<https://github.com/Lingwu-Sunshine/java-programming-calculator.git>
    修改的地址:<https://用户名:密码@github.com/Lingwu-Sunshine/java-programming-calculator.git>
    
    //指令
    git remote add origin <https://用户名:密码@github.com/Lingwu-Sunshine/java-programming-calculator.git>
    git push origin master
    
    ssh-keygen  //生成公钥和私钥
    cat ~/.ssh/id_rsa.pub //查看公钥指令
    
    git remote add origin ssh地址//配置ssh链接方式
    git push origin master //使用ssh推送master分支
    

(四)、指令小结

git init
git add README.md //添加说明文档
git commit -m "fist commit"
git remote add origin https://github.com/XXXX/仓库名.git //将远仓库链接地址取名为origin
//链接在github上面可以查看
git push -u origin master //将master推送至远程仓库
git clone 仓库地址 //内部己实现 git remote add origin 远程仓库地址
    
//推送简写和更新代码
git push origin 分支名 //推送代码
git pull origin 分支名 //更新代码
    
//拉取代码
/*
 原理如上面的git区域划分图;
 先拉取到版本库,再到工作区
 */
git pull origin(地址别名) 分支名=git fetch origin 分支名+ git merge origin/分支名 

五、rebase应用

(一)、记录合并

  1. 作用:使git记录变的更加简洁

  2. 第一种应用方式:将多个记录整合成一个记录。多用于本地仓库记录合并,不适合己放远程仓库的版本。

    注意:合并记录时,不要和提交push到远程仓库记录进行合并

  3. 指令:

    //第一种指令
    git rebase -i 版本号 //将当前所在版本和所提供的版本进行合并
    //第二种指令
    git rebase -i HEAD~n //从当前版本找最近的n版本进行合并
    
  4. 合并过程的注意事项

    • 编辑过程中,采用vim编辑器
    • 将“pick”改为“s”。“s”的含义为:将所在版本向上一个版本进行合并
    • 进行保存退出:先按esc键,再输入英文:,最后wq回车保存(w 是保存,q 是退出vim)
    • 写合并后版本的提交信息,然后保存退出

(二)、分支合并(变基)

  1. 说明:可以将分支合并成一条线

  2. 所用指令

    git checkout 分支名 
    git rebase 分支名 //要合并到的分支名
    git merge 分支名  //合并的分支名
        
    
  3. 操作流程例子:

    • 此时处于master分支,先切回dev分支
    • 然后执行rebase指令(变基:相当于把dev分支变成基本的枝干),类似于把master分支拿下来到dev分支,变成一条枝干
    • 最后切回master分支,再使用merge指令。把dev分支合并到master分支。最后会变成一条线
  4. 查看记录(图像显示指令)

    
    git rebase 分支名 //将指定分支合并到所处分支
    git log --graph //记录图像形显示
    git log --graph --pretty=format:"%h %s" //简洁形记录图像显示,只显示版本号(哈希值)和版本信息(注释信息)
    
    

(三)、拉取代码分支合并

  1. 说明:从远程仓库拉取最近版本与本地版本合并时会产生分叉

  2. 所用到的指令

    //从远程仓库拉取代码并进行合并操作
    git fetch origin 分支名 //从远程仓库拉取代码
    git rebase origin/分支名 //与拉取下来的版本进行合并,注意是“origin/分支名”
    //合并过程中如果产生冲突,可能需要用到的指令
    git add . //然后进行保存版本,继续rebase
    git commit -m 'xxxx' //保存版本
    git rebase --continue //合并产生合并后的版本
    

(四)、指令小结

//第一种应用
//第一种指令
git rebase -i 版本号 //将当前所在版本和所提供的版本进行合并
//第二种指令
git rebase -i HEAD~n //从当前版本找最近的n版本进行合并

//第二种应用
git checkout 分支名 
git rebase 分支名 //要合并到的分支名
git merge 分支名  //合并的分支名
//记录显示
git log --graph //记录图像形显示
git log --graph --pretty=format:"%h %s" //简洁形记录图像显示,只显示版本号(哈希值)和版本信息(注释信息)

//第三种应用
//从远程仓库拉取代码并进行合并操作
git fetch origin 分支名 //从远程仓库拉取代码
git rebase origin/分支名 //与拉取下来的版本进行合并,注意是“origin/分支名”
//合并过程中如果产生冲突,可能需要用到的指令
git add . //然后进行保存版本,继续rebase
git commit -m 'xxxx' //保存版本
git rebase --continue //合并产生合并后的版本

六、多人协同开发(以github代码为例)

(一)、工作流思路

  1. 从master主分支分出dev,然后每个人再建立自己对应的分支,在自己所在的分支进行编写代码;完成后再进行测试,测试完成后再合并到master分支

(二)、开发流程

  1. 开发流程
    在这里插入图片描述

  2. 在github中多人协同开发:

    • 先建立一个组织,并邀请成员设置权限
    • 再创建仓库,由leader创建不同分支用于不同功能开发
    • 开发完成后,提交review(pull request)
    • 然后测试,测试通过后再合并到release(预发版本)中
    • 最后再合并到master分支(主分支),进行上线

(三)、任务管理

  1. isses:文档及任务管理
    • 提交问题(可以设置被提问的人,打问题标签)
    • 可以查看状态和指派人信息
  2. wiki项目文档

(四)、指令小结


git tag -a v1 -m "标签信息" //给版本打上标签
git push origin - -tags //给github推送标签信息
git clone -b v1 地址 // 

//创建并切换到dev分支指令
git checkout -b dev
//分支推送指令
git push origin dev    

七、给开发源贡献代码

  1. fork源代码

    将别人源代码拷贝到自己的github仓库

  2. 给源代码作者提交 申请(pull request)

八、学习参考资料

  1. B站视频教程
    git实战课程

  2. Git merge 和rebase的区别
    Git merge 和rebase的区别

  3. Git知识总览(一) 从 git clone 和 git status 谈起 - 青玉伏案 - 博客园
    Git知识总览(一)

  4. Git知识总览(二) git常用命令概览 - 青玉伏案 - 博客园
    Git知识总览(二)

  5. Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决 - 青玉伏案 - 博客园
    Git知识总览(三)

  6. Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作 - 青玉伏案 - 博客园
    Git知识总览(四)

  7. Git知识总览(五) Git中的merge、rebase、cherry-pick以及交互式rebase - 青玉伏案 - 博客园
    Git知识总览(五)

  8. git merge实际流程
    git merge实际流程

  9. git rebase实际流程
    git rebase实际流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值