对视频十分钟学会正确的github工作流,和开源作者们使用同一套流程的记录,方便自己回顾和使用。
注1:一个分支 只有一个人在进行
注2: main和master是不同时期对主分支的命名,两者是同一个东西。如果项目已经有了,和项目一致。
1. 初始化
# 克隆一个和远端一模一样的仓库
git clone https://github.com/example/example.git
2.修改代码(新建分支)
我们不直接在原来的main分支上进行修改,而是创建一个新的分支。
# 新建(并切换到) my-feature分支
git checkout -b my-feature
3.修改代码
编辑代码,进行修改。然后提交修改后的代码到git。
# 查看更改
git diff
# 添加文件
git add <修改的文件>
# 提交
git commit
将本地更改推送到远程(github)
【可能出现的情况】 main分支更新了
- 更新本地的main分支
# 切换到main分支
git checkout main
# 拉取最新的main分支
git pull origin main
- 更新main分支的更改到 my-feature分支
# 切换到my-feature分支
git checkout my-feature
# 切换到新的main分支,并应用my-feature的修改。可能会有冲突,需要手动解决。
git rebase main
推送自己的分支到远程(github)
# 推送分支到远程
git push -f origin my-feature
合并my-feature分支到main分支(Pull Requrest, PR)
项目拥有者在github上使用Squash and merge
合并分支,然后在github删除my-feature分支
Squash:将提交分支上的所有commit合并成一个,保持main分支简介
然后我们完成了该分支的提交,在本地删除该分支:
#切换main分支
git checkout main
# 删除my-feature分支
git branch -D my-feature
# 拉去最新的main分支
git pull origin main