• Linux下git安装及使用


    Linux下Git使用

    1. git的安装

    sudo apt install git
    
    • 1

    安装完,使用git --version查看git版本

    2. 配置git

    git config --global user.name "Your Name“	##配置用户
    git config --global user.email email@example.com	##配置邮箱
     git config --global --list			##查看配置信息
    ## --global 全局配置,所有仓库生效,不加就只对当前用户有效
    ## --system 系统配置,对所有用户生效
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3. 新建版本库

     git init
    
    • 1

    4. 工作区域与文件状态

    image-20230920204530239

    image-20230920204638439

    5. 添加和提交文件

    git init		##创建仓库
    git status		##查看仓库的状态
    git add			##添加到暂存库
    git commit 		##提交
    git rm --cached ...		##将文件从暂存区中去除
    git log			##查看提交记录
    git ls-files	##查看暂存区的文件
    git commit -a -m " " #实现添加和提交两个步骤
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. 回退版本

    git reset --soft
    git reset --hard
    git reset --mixed	
    
    • 1
    • 2
    • 3

    image-20230921085607903

    git reset HEAD^		##默认为mixed,回退一个版本
    
    • 1
    HEAD 表示当前版本
    HEAD^ 上一个版本
    HEAD^^ 上上一个版本
    HEAD^^^ 上上上一个版本
    HEAD~0 表示当前版本
    HEAD~1 上一个版本
    HEAD^2 上上一个版本
    HEAD^3 上上上一个版本
    执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    误操作之后

    git reflog		##回溯日志
    git reset --hard 版本号	##回退
    
    • 1
    • 2

    6. 查看差异

    image-20230921091532989

    git diff				#默认比较工作区和暂存区之间的差异
    git diff HEAD			#比较工作区和版本库之间的差异
    git diff --cached		#比较暂存区和版本库之间的区别
    git diff 版本号	版本号	#比较两个版本之间的差异
    git diff HEAD~ HEAD		#如回退版本
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20230921092511736

    7. 删除文件

    方法1:先删除本地文件,再提交

    rm -rf 3.txt	##删除本地中的文件
    git add .		##删除暂存区中的文件
    git commit -m 'deleted 3.txt'	##删除工作区文件
    
    • 1
    • 2
    • 3

    方法2

    git rm 2.txt	##删除本地和暂存区中文件
    git commit -m 'deleted 2.txt'	##删除工作区文件
    
    • 1
    • 2

    image-20230921093523261

    8. 忽略文件

    image-20230921093644360

     echo "*.log" > .gitignore		##表示忽略所有日志文件
    
    • 1

    image-20230921094538072

    9. 远程仓库github

    注册github账号,创建仓库

    10. ssh配置和克隆仓库

    创建ssh密钥

    cd ~
    cd .ssh		#如果显示文件不存在,就之间执行以下命令
    ssh-keygen -t rsa -b 4096 -C "xxx@email.com"	#直接enter,如果是第二次执行,记得更改文件名,不然会覆盖之前的id_rsa文件,且不可逆
    
    • 1
    • 2
    • 3

    image-20230921101312117

    执行之前的命令会生成以下两个文件,有.pub的是公钥文件,没有的是私钥文件,复制公钥文件到github的Settings里的ssh配置

    如果是第一次配置就配置完了,如果是第二次,更改了文件名的,就需要新建一个config文件,内容为

    image-20230921101639858

    意思是:当我们在访问github.com这个网站的时候。使用的是test这个文件里的密钥

     git clone git@github.com:xxx.git		##克隆新建的远程仓库
    
    • 1

    image-20230921102254407

    git push	##将本地文件推送到远程仓库
    
    • 1

    11. 关联本地仓库和远程仓库

    1. 本地无仓库
    echo "# fist-repo" >> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git branch -M main
    git remote add origin git@github.com:xxx.git
    git push -u origin main
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 本地已经有仓库
    git remote add origin git@github.com:xxx.git		##添加一个远程仓库
    git branch -M main									##指定分支的名称为main
    git push -u origin main								##把本地的main分支与远程的orgin main分支关联
    
    • 1
    • 2
    • 3
    git remote -v		##查看本地仓库对应的远程仓库别名
    
    • 1

    image-20230921103436235

    image-20230921103522078

    12. 分支

    git branch			#查看分支
    git branch	dev		#新建分支dev
    git checkout dev	#切换到分支dev(有风险,有时会用来恢复文件)
    git switch main		#切换到分支main
    git merge dev		#将要被合并的分支(dev)合并到当前分支(main)
    git log --graph --oneline --decorate --all	##查看分支情况
    git branch -d dev	#删除分支(已经合并)
    git branch -D dev	#删除分支(未合并,强行删除)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20230921140159925

    13. 回退和rebase

    image-20230921140826350

    image-20230921141221770

    image-20230921141308973

    14. 分支管理和工作流模型

    1. git flow模型

    img

    img

    img

    1. github flow模型

    image-20230921141728150

    image-20230921141750346

  • 相关阅读:
    springboot操作influxdb
    C++:拷贝构造函数的初始化列表
    【MyBatis-Plus】简介 | 入门案例
    操作系统专项练习
    【运筹优化】运筹学导论:线性规划导论
    刷爆力扣之最短无序连续子数组
    Excel实用函数Vlookup,多sheet之间多字段的匹配取值
    openocd stm32 telnet 调试
    大数据项目之电商数仓、日志采集Flume测试、日志采集Flume启停脚本
    ES6中Promise用法(封装Ajax)
  • 原文地址:https://blog.csdn.net/qq_43784519/article/details/133134921