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一样了。

参考

参考视频链接