IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> [IDE]git基本使用手册及github规范 -> 正文阅读

[开发工具][IDE]git基本使用手册及github规范

1. GIT基础

1.1 认识git

  • Windows对想使用的版本控制的文件夹鼠标右键git bush here 进入要管理的目录,mac不需要
  • 基础知识教程指路,在此基础上补充了些其他常用的知识。
  1. 初始化
git init 
  1. 检测到目录下文件的状态
git status
  1. 两种状态变化
  • 红色:新增的文件/修改了原文件

    git add filename
    git add .   #全部添加
    
  • 绿色: 管理git版本

    git commit -m 'v1'  #建立版本v1
    
  • 如果不想使用commit将代码放入本地仓库,那么可以使用 git stash将修改的代码暂时存入缓存堆栈中(此命令适用于工作区和暂存区)

    #以下命令可用于本地特殊配置后,替换从服务器拉下项目中的相应配置,以用于在本地运行项目代码
    git add .
    git stash  储藏修改的代码但是不commit
    git pull   从云端拉取新项目
    git stash pop    出栈覆盖到新项目
    
    #清除缓存中的数据
    git stash list #查看stash 列表
    git stash clear #清除全部
    git stash drop stash@{0} #清除第几个队列,这里是第一个
    
  1. 查看日志
git log
git log --graph --pretty=format:"%h %s" # 记录展示简洁化
git reflog   #查看被回滚的版本号
  1. git放弃更改,放弃增加文件方法

    1.修改了一些文件 (并没有使用 git add 到暂存区),想放弃修改
    	-	单个文件/文件夹:
    		git checkout -- filename
    	- 所有文件/文件夹:
    		git checkout .
    2.新增了一些文件,想放弃修改
    	- 单个文件/文件夹:
    		git rm -rf filename
    		(以下命令无法在执行git add后生效)
    	- 所有文件:
    		git clean -xdf
    	- 所有文件和文件夹:
    		git clean -xdff
    3.修改/新增了一些文件,已经 git add 到暂存区,想放弃修改
    		(在git add执行后,执行以下两个命令,再使用git stash或者git commit,保存的就是未修改状态的文件)
    	- 单个文件/文件夹:
    		git reset HEAD filename
    	- 所有文件和文件夹:
    		git reset HEAD .	
    
  2. 执行 git commit后,想回滚版本

  • 回滚到之前版本
git log  # 按英文状态下的Q键位即可退出
git reset --hard commit_id  #commit之后接的9a8d9e4986a4a738b1829fc4b6bde0c794b99d62是commit_id,每个commit_id都不一样
  • 回滚到之后版本
git reflog
git reset --hard commit_id  #下图中的96bb9eb就是commit_id,修改时间随箭头从下自上依次减少,HEAD@{0}表示最新的更改
  • 有无--hard的区别
git reset --hard commit_id :撤销 commit,同时本地删除该 commit 修改,仍在工作区/暂存区的代码也将会清除
git reset commit_id:撤销 commit, 同时保留该 commit 修改,已经 commit 的修改还在工作区

reflog

  1. 新增一个文件
touch 文件名.文件格式   # touch 1.html

# 查看当前分支下所有的文件目录
ls

# 查看文件内容
cat filename   

1.2 分支

修复BUG解决方案

  • 查看分支
git branch
  • 创建分支
git branch dev
  • 切换分支
git checkout dev
git checkout -b dev # 创建并切换分支

git switch dev
git switch -c dev # 创建并切换分支
  • 删除分支
git branch -d dev # 执行此命令的分支必须要是完成和上游分支或与本地HEAD的merge操作
git branch -D dev # 强制删除分支

git push origin -d dev # 同时删除远程分支和追踪分支

# 单独删除本地和远程绑定的追踪分支
git branch -rd origin/dev 
git fetch origin -p origin/dev
  • 分支合并(分支代码冲突)
git rebase dev # 推荐使用,git merge会保留所有commit的历史时间,导致回溯历史的成本提高
git status
git add .
git commit -m '最新版本'

1.2.1 github连接

  • 创建仓库

git remote add origin 地址
git branch -M main
git push -u origin main  # 推送主支
git push -u origin dev   # 推送分支
  • 克隆仓库

mkdir gitdemo # 创建文件夹
cd gitdemo
git clone 网址 # 通常使用ssh地址
git checkout 分支  # 切换分支
  • 本地同步云端分支

1.查看本地已有的分支
git branch

2.本地检出一个新的分支并推送到远程仓库
git checkout -b dev(新分支名)
git push --set-upstream origin dev

3.将远程git仓库里的指定分支拉取到本地(本地不存在的分支)
git fetch
git checkout -b 本地分支名 origin/远程分支名

1.2.2 更新代码

  • 每次进行远程工作的时候优先从云端更新分支的代码

git checkout master

git pull origin master # git pull

git checkout dev

git rebase master

git add .

git commit -m ''

git push origin dev # git push
  • 注意点1:

git pull origin master = git fetch origin master (将云端代码拉到版本库)+ git merge origin/master (将版本库加载到工作区)
  • 注意点2:将多个commit合并成一个

# 在代码提交前将一次开发的commit合并成一个,有利于构建健壮的git commit message

# 查看commit树
git log

# 这里以合并4个commit为例
git rebase -i HEAD~4  # 合并从上往下数4个版本

# 键入i进入-INSERT-状态,保留第一行的pick,将后几行的pick改为s
# 修改完后使用ESC键,再输入:wq保存
# 进入commit起名阶段,键入i进入-INSERT-状态为合并版本起名
# 修改完后使用ESC键,再输入:wq保存
git log # 查看修改后的结果

2. Github项目配置&管理

2.1 给开源项目提交代码

1.在别人的仓库上fork到自己的仓库  
2.然后从自己的仓库使用git clone 到自己本地文件中开始修复bug或者添加新功能
3.上传,新建一个git commit -m '新版本'
4.git push # 上传到自己的仓库
5.使用github上的New pull request   # 给源代码作者提交一个新版本的申请
6.选择Create pull request填写版本描述等待作者审核
7.在github上在项目上提出一个issue来帮助开发者完善开源项目,Assignee用来指派给特定的用户
8.使用wiki建立项目规范,描述项目详情

2.2 其他

2.2.1 配置文件

  • 项目配置文件:项目/.git/config

    git config --local user.name '姓名'
    git config --local user.email 'xxx@xx.com'
    
  • 全局配置文件:~/.gitconfig

    git config --global user.name '姓名'
    git config --global user.email 'xxx@xx.com'
    
  • 系统配置文件:/etc/.gitconfig

    git config --system user.name '姓名'
    git config --system user.email 'xxx@xx.com'
    注意:需要root权限
    
  • 查看本地配置文件

    vim .git/config  # 在项目文件中查看配置
    vim ~/.gitconfig # 根目录
    
  • 修改远程仓库登录地址

    # 查看远程仓库信息
    git remote -v
    
    # 原来的地址:https://github.com/ERRUI/gridea.git
    # 修改的地址:https://用户名:密码@github.com/ERRUI/gridea.git
    git remote add origin https://用户名:密码@github.com/ERRUI/gridea.git
    git push -u origin master
    

2.2.2 SSH密钥配置

  1. 全局配置git信息
git config -g user.name "yourname"
git config -g user.email "youremail"

#专门为某一个仓库托管平台配置用户名和邮箱
#1.先新建一个专门存放这个平台的文件夹,这里以github为例
|—— /Users/errui/Code/Github
#2.打开git的全局配置文件.gitconfig,增加以下配置
[includeIf "gitdir:Code/Github/"]
	path = ./.github
#3.在全局 .gitconfig 文件夹相同的位置,创建 .github 文件,内容如下:
# .github
[user]
	name = username
	email = email@example.com
  1. 生成密钥
#创建目录命令 -p表示确保目录名称存在,不存在的就建一个
mkdir -p ~/.ssh && cd ~/.ssh
#执行ssh-keygen命令
ssh-keygen -t 算法类型 -b 密钥长度 -f 生成的密钥名(不可更改) -C "email@example.com"(在公钥生成的注释,可以更改)

eg.ssh-keygen -t rsa -b 4096 -f my_id -C "email@example.com"
#4096表示RSA 密钥长度 4096 bits (默认 2048 bits)。Ed25519 算法不需要指定。

推荐使用ed25519算法类型,相关科普说明链接:https://www.cnblogs.com/cure/p/15389876.html

#GitHub
ssh-keygen -t ed25519 -f github_ed25519  -C "email@example.com"
#Gitee
ssh-keygen -t ed25519 -f gitee_ed25519   -C "email@example.com"
#GitLab
ssh-keygen -t ed25519 -f company_ed25519  -C "email@example.com"

#注意点,在连接之前,用ed25519生成的每个密钥都需要配置SSH代理,rsa不用
ssh-add ~/.ssh/company_ed25519
ssh-add ~/.ssh/github_ed25519
ssh-add ~/.ssh/gitee_ed25519

2.2.3 删除远端仓库中的文件或者文件夹

# 加上 -n 这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
git rm -r -n --cached src/components/Test.vue

# 确定以后执行下面语句删除
git rm -r --cached src/components/Test.vue  

#推送提交的改动
git commit -m 'Delete Test.vue'      
git push origin master

2.2.4 撰写commit message 工具,规范commit提交质量

  1. 全局安装:npm install -g commitizen

  2. 项目根目录上执行命令:commitizen init cz-conventional-changelog --yarn --dev --exact

  3. 提交git时将git commit命令改为git cz

  4. 相关说明

    feat:  A new feature    一个新的功能
    fix:   A bug fix            一个bug修复
    docs:  Documentation only changes    只有文件的变化 
    style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)  不影响代码含义的变化
    refactor: A code change that neither fixes a bug nor adds a feature  一个既没有修复错误也没有增加功能的代码修改 
    perf:     A code change that improves performance   一个能提高性能的代码修改 
    test:     Adding missing tests or correcting existing tests   增加缺失的测试或纠正现有的测试 
    build:    Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) 影响构建系统或外部依赖的变化
    ci:       Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) 对我们的CI配置文件和脚本的修改
    chore:    Other changes that don't modify src or test files 其他不修改src或测试文件的改动
    revert:   Reverts a previous commit     恢复先前的提交 
    

ERRUI:转载请注明来源,如有错误欢迎在评论区友好指出,谢谢!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:19:41  更:2022-03-06 13:21:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:54:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码