这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。
1 Git 的基本使用
git 的基本使用可以用下面的这张图来概括
- 工作区和暂存区
- fetch v.s. pull
- fetch 只会讲远端仓库的最新内容拉取到本地,而不会和本地的仓库进行合并
- 而 pull 相当于执行了 fetch + merge 操作
- 可以使用 git merge 命令将其他分支合并到本分支中
- 查看当前分支:
git branch - 查看所有分支:
git branch -a - 切换分支:
git checkout [分支名]
参考:
2 常见的问题
2.1 如何放弃修改
2.1.1 未执行 git commit
git checkout -- <file>...
- 文件没有放到暂存库中(未执行
git add),撤销修改就回到和版本库一模一样的状态; - 文件放到暂存库中,又进行了修改(执行了
git add),撤销修改就回到添加到暂存区后的状态。
2.1.2 已执行 git commit
git reset --soft HEAD^
其中 HEAD^ 表示上一次 commit,如果要指定哪一次 commit,可以先通过 git log 查看提交记录,然后选择要 reset 到的 commit的值。
如果想连带这撤销add的话,可以将--soft改为--hard
3 Github flow
常见的 git 工作流有三种:
- Gitflow
- Github flow
- Gitlab flow
本文主要介绍 Github flow。
3.1 具体流程
- 第一步:根据需求,从master拉出新分支,不区分功能分支或补丁分支。
- 第二步:新分支开发完成后,或者需要讨论的时候,就向master发起一个pull request(简称PR)。
- 第三步:Pull Request既是一个通知,让别人注意到你的请求,又是一种对话机制,大家一起评审和讨论你的代码。对话过程中,你还可以不断提交代码。
- 第四步:你的Pull Request被接受,合并进master,重新部署后,原来你拉出来的那个分支就被删除。(先部署再合并也可。)
3.2 参考
4 通过 ssh 的方式进行免密配置
SSH可以通过公私钥的机制,将生成公钥存放在服务端,从而实现免密访问
目前的Key的类型由四种,分别是dsa、rsa、ecdsa、ed25519,默认使用的是rsa,由于一些完全问题,现在已经不推荐使用dsa和rsa了,优先推荐使用ed25519
ssh-keygen -t ed25519 -C "邮箱"
密钥默认存在~/.ssh/id_ed25519pub
添加到 github 中
之后使用ssh的方式去连接 github 后,无论是push还是pull都不用再输入账号和密码了。