Git简单总结

0x01 Git理解

  • 分布式版本控制器:在个人电脑,云端都有着所有的代码。
  • 版本控制,可自由回滚,向前向后。git记录的是快照,不是整个代码的备份;每个快照之间通过指针指向来记录。
  • git大量的操作都在本地,远端一般作为发布,备份。
  • git主要分了三个空间进行管理:工作区,暂存区,版本库
  • git指令如果遗忘,可以在后面输入 --help查看详情

0x02 使用流程

1. 初始化

# 该步骤是将当前目录下的所有划归给git进行管理
git init

2. 将在工作区的文件提交到暂存区

# 单个文件
git add 文件名

# 全部文件
git add .
git add -A

3. 将在暂存区的文件提交到版本库

git commit -m "注释信息"

4. 创建tag

一般使用tag来进行版本的发布

git tag -a 名字 -m "注释信息"
	
# 推送给远程仓库
git push origin tag的名字

tag其他常用指令

# 查看有哪些tag
git tag

# 查看某个tag的详细信息
git show tag名字

# 将tag推送到远端
git push origin tag名字

#推送本地所有tag
git push origin --tags 

# 本地删除tag
git tag -d tag名字

# 删除远端tag
git push origin --delete tag名字

5. 查看版本库信息

git log

# 简洁模式
git log --oneline 

# 以图形的形式,简化查看信息,格式化的规则可以看--help里的内容
git log --graph --pretty="%t %s"

# 该指令为查看所有记录
git reflog  

6. 回滚

从版本库到工作区(已控制)

# 可通过git log 和git reflog查看版本号,可反复回滚版本
git reset --hard 版本号     

0x03 分支问题

创建每个分支的时候,实际就是复制当前分支的内容。
创建分支

git branch 分支名字

#创建分支并切换到该分支
git checkout -b 分支名字		

切换分支

git checkout 分支名字

1. 合并分支

merge

merge会基于两个分支,创建一个新的副本,会记录多余的分支提交记录
比如想合并dev和master分支,但master分支是主要分支,dev分支可删,这时就先切到master分支,再使用以下指令

git merge 分支名字
git merge dev

# 推荐以下指令,将dev分支合并进master(先切到master分支,再合并)
git merge master dev

rebase

rebase(变基)会先找记录早一点的分支,然后打补丁,然后再将另一个分支合并起来,不会产生多余的分支记录
和merge一样,想合并到哪个分支,就先切到哪个分支

git rebase 分支名字

# 推荐下面指令,将dev分支合并到master
git rebase master dev

rebase其他功能

  1. 合并提交记录
#合并当前记录和前一个记录
git rebase -i HEAD~2 

#将该id前的记录合并
git rebase -i 某个记录的id 

# 进去后,更改pick
pick 6604296 home.txt
pick ae8d6c5 com.txt
# ->
pick 6604296 home.txt
s ae8d6c5 com.txt
# 便可以合并
  1. 本地代码仓库和远程代码仓库记录合并
    和合并分支的情况是一样的,只不过这里是本地仓库和远程仓库版本不同
# 可以在下拉的时候输入
git pull --rebase origin master

# 也可以先fetch,再rebase
git fetch origin master
git rebase master origin/master

如果产生冲突,就按照提示,手动处理冲突

2. 删除分支

# 删除本地分支
git branch -d 分支名

# 删除远程分支
git push origin --delete 分支名称

0x04 远程仓库

远程仓库有很多,使用人数比较多的是github和gitlab。远程仓库,实际上就是将本地仓库的代码备份到云端。
注册账号,并新建一个空仓库,然后在本地仓库设置一个远程仓库

git remote 远程仓库别名 "url地址"

# 常见指令,将远程仓库取别名origin
git remote origin "url地址"	

将代码全部推送到远程仓库上

git push origin master

将代码下拉,首先要切换到自己的分支,假设为dev,然后下拉

# 此指令是直接从远程仓库拉到工作区
git pull origin dev

# 上面代码等于

# 将远程仓库的代码拉到本地代码库
git fetch origin dev
# 将origin/dev分支合并带本地dev分支,合并到了工作区
git meger origin/dev

0x05 gitflow工作流

https://blog.csdn.net/xingbaozhen1210/article/details/81386269
大概就是从主分支拉出几个分支,测试完成后再合并到主分支。
紧急BUG也是这样处理

遇到紧急bug:

# 先保存自己分支的当前操作(此情况针对,功能没写完,没commit,又不想多一条无用的commit记录)
git stash

# 切换到master分支
git checkout master

# 创建bug分支
git checkout -b bug

# 改完bug,合并到master分支和dev分支
# 切回到自己分支,再复原
git stash pop

1. git stash

git stash用于将当前工作区的修改暂存起来,就像堆栈一样,可以随时将某一次缓存的修改再重新应用到当前工作区。

# 存储未提交的更改
git stash
# 列出暂存
git stash list
# 清理暂存
git stash clear
git stash drop <stash_id>
# 弹出栈
git stash pop

2. gitingore

标记git不管理的文件,可以参考https://github.com/github/gitignore

0x06 PR

给其他github项目提交贡献,简称PR,和gitflow工作流差不多的步骤

  1. fork想要提交贡献的项目到自己的github仓库
  2. git clone下来,在本地修改代码
  3. git push到自己的仓库
  4. 点击pull request(和merge request操作一样,提交等待是否通过就好)

0x07 一些常用操作

1. 在本地生成密钥对

ssh-keygen
# 按照提示走,建议不需要输入密码(方便意味着降低安全性)
# 然后在远程仓库上新建密钥即可

2. 添加远程仓库

git remote add origin git@gitee.com:qiphon/music-thumb.git
git push origin master

3. 从https转为ssh

# 查看远程仓库连接
git remote -v

# 修改地址
git remote set-url origin ssh地址
posted @ 2023-03-08 19:26  Jarwu  阅读(13)  评论(0编辑  收藏  举报