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其他功能
- 合并提交记录
#合并当前记录和前一个记录
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
# 便可以合并
- 本地代码仓库和远程代码仓库记录合并
和合并分支的情况是一样的,只不过这里是本地仓库和远程仓库版本不同
# 可以在下拉的时候输入
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工作流差不多的步骤
- fork想要提交贡献的项目到自己的github仓库
- git clone下来,在本地修改代码
- git push到自己的仓库
- 点击pull request(和merge request操作一样,提交等待是否通过就好)
0x07 一些常用操作
1. 在本地生成密钥对
ssh-keygen
# 按照提示走,建议不需要输入密码(方便意味着降低安全性)
# 然后在远程仓库上新建密钥即可
2. 添加远程仓库
git remote add origin [email protected]:qiphon/music-thumb.git
git push origin master
3. 从https转为ssh
# 查看远程仓库连接
git remote -v
# 修改地址
git remote set-url origin ssh地址
标签:总结,origin,git,仓库,tag,Git,master,简单,分支
From: https://www.cnblogs.com/jarwu/p/17195852.html