Git项目管理
# Git项目管理
工作区 --> 缓存区 --> 本地仓库区 --> 远端仓库
Git授权SSH
大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。在 Github 或者 Gitlab 上提交代码,我们需要把 SSH 公钥复制托管到Github的
personal setting -> ssh keys
生成 SSH-Key 方法
# 进入ssh目录
cd ~/.ssh
# 生成ssh公私钥
ssh-keygen
# 复制ssh公钥
cat ~/.ssh/id_rsa.pub
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 仓库基本操作
# 在当前目录新建一个Git代码库
git init
# 新建一个目录,将其初始化为Git代码库
git init <project-name>
# clone git仓库
git clone <git-hub-url>
# [高阶用法] clone git仓库并且制定分支
git clone <url> -b <branch>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 修改用户信息
# 配置信息列表
git config --list
# 设置用户名
git config --global user.name "xxx"
# 设置邮箱
git config --global user.email `xxx`
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 设置不同的仓库源
# 查看帮助
git remote --help
# 查看不同源
git remote
# 添加不同地址的源,并取一个别名
git remote add [name] [url]
# 删除一个源
git remote remove [name]
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 操作一次完整提交流程
# 修改readme文件,文件在工作区
vi readme.md
# 文件进入缓存区,缓存区的文件可以被checkout移除到工作区
git add readme.md
# 文件进入提交分支,但还是在本地
git commit 'add readme'
# 提交分支 push 到远端分支
git push origin master
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
git pull : git fetch + git merge
git pull --rebase: git fetch + git rebase
# 如何删除远端多余分支
# 大多数情况remote_name为origin
git push -delete <remote_name> <branchName>
1
2
3
2
3
# Git提交信息检查
# 查看当前工作区改动点
git diff
# 提交hash1和hash2的差异
git diff commit_hash1 commit_hash2
# 分支a和b的差异
git diff branch_a branch_b
# 当前改动文件
git status
# 查看提交历史
git log
# 提交历史缩减一行查看,主要是提交Hash值
git log --pretty=oneline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 多人协同开发
revert 和 reset区别
场景: 有些时候开发者需要退回到某次正确的提交记录,有些时候开发者的commit错误了,这时候可以使用 git revert 和 git reset。
git revert: 撤销某次操作,此次操作之前的commit都会被保留。
git reset : 撤销某次提交,但是此次之后的修改都会被退回到暂存区。
# 强制回退到某次提交,且需要强制提交
git reset ——hard commit_hash
git push origin master --force
# 回退到某次提交,保存提交commit记录, 重新commit
git revert commit_hash
git add .
git commit -m "revert"
git push origin master
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 创建Tag,如何以某个Tag创建分支
有时我们代码已经发布很长时间才发现了一个Bug,同时当前开发分支又有需求在开发,如何以之前发布版本的节点开分支修复问题,这样就可以使用 Tag 创建分支。
# 创建tag
# 创建标注标签
git tag -a daily/0.0.1 -m "add develop file"
# 简单创建tag
git tag daily/0.0.1
# 分享tag到远端
git push origin [tagname]
git push origin --tags
# 如何已某个tag创建分支
git checkout -b <newbranch> <tagname>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13