github工作流
github工作流
一般流程
1.先git clone远端仓库(remote)到本地。
这里的disk是实际源文件,当git clone之后,local和disk的内容是一样的
2.当需要修改代码时,先建立一个新的branch。
建立新的branch,而不是直接往main上push代码的好处:
- 不至于将主分支弄得无法工作
- 利于多人合作
git checkout -b my-feature
(其中my-feature是branch的名字)
这个命令会复制你的当前branch到新的branch上(clone之后,当前branch显然是main)
作用:创建并切换到新的分支
git会把my-feature这个branch的代码同步到硬盘
3.改好代码,保存文件之后。硬盘上的文件是有变化的,但是git不知道。
使用命令查看硬盘上的文件与保存的分支的区别
git diff
4.将修改的文件告知git
git add <changed_file>
(后面是文件名)
这些文件会放到暂存区中。
5.将修改真正放到git中
git commit
6.将local git的变化告知github
git push origin my-feature
使用之后,会发现github中多出来了一个branch(my-feature)
push之后main branch又有更新了
需要把main branch的更新同步到my-feature这个branch里
1.先更新local git的main(由于local git的main和remote的面是不一样的),切换到main这个branch中。
git checkout main
这时候硬盘里面的源代码是初始状态,而不是刚才修改了的状态。
2.将远端的main同步到本地的main
git pull origin main
(这里图片是master,看github的主分支是main还是master)
这时local git和disk就会远端的github一样了
3.回到my-feature branch中
git checkout my-feature
这时disk的my-feature有我们修改的f-commit的变化,但是没有远端main的update的变化
4.同步main的代码改变
git rebase main
作用是:将自己的修改放到一边,把main最新的修改拿过来,然后在这个最新修改的基础上,将自己的commit尝试弄回去。
这一过程可能出现rebase conflict,如果出现,则需手动选择需要哪一段代码。
5.push 到github上
git push -f origin my-feature
(由于做了rebase,在push的时候需要加-f,表示force,强行push)
6.将更新的代码合并到main branch中(pull request)
7.主分支的主人会对pull request进行squash and merge(意思是把这个分支上的所有改变合并成一个改变,然后把这个commit放到main branch上,这些改变合并之后是图中的update2)
8.一般情况下,会将远端的branch(即my-feature)删掉(github上有一个delete branch的按钮)
9.删除local git的branch删掉
git branch -D my-feature
10.将最新的更新拉到local的main branch和disk上
git pull origin main
这些操作后,local git 和disk又和remote一样了。