Git/GitHub/Gitee⼯作流最佳实践

我在这里为刚接触git或者对于git不太熟悉的朋友提供一套切实可行的使用方法,建议单独创建一个测试项目熟悉一下我下面讲述的git使用工作流程。如果你能按照步骤逐步理解我的思路,相信你的代码管理能力将上升一个层次!

第⼀步

git clone xxx
克隆拉取最新的代码

第⼆步

git checkout -b my-feature
将主分⽀建⽴新 feature branch 作为⾃⼰修改代码的分⽀
并切换到feature分⽀上

第三步

当有代码修改需要add
使⽤
git diff
查看具体变化了哪些⽂件
然后再
git add

第四步

使⽤
git commit
将代码提交到本地git仓

⾄此刻feature branch(my-feature)这个分⽀ 才与本地主分⽀不同了

第五步

使⽤
git push origin my-feature
就会在远程仓库中多出⼀个branch
经常的情况是:
在我们push时 main分⽀已经发⽣过更新了⽐如最新的代码是main-update
所以我们要判断这个main-update与我们的my-feature合并后是否好使
⽽此时我们的磁盘上的main分⽀远程仓库的main分⽀不同的所以需要更新我们本地的main分⽀

第六步

切换本地分⽀到 main branch
git checkout main

然后pull最新的代码
git pull origin master

然后再回到我们的my-feature分⽀
git checkout my-feature

第七步

现在在my-feature分⽀中同步main的代码改变
git rebase main

意思是:先将我们的修改的代码放在⼀边将主分⽀发⽣的跟新拼接在我们的commit之前,再尝试将我们
commit的代码搞回去,如果中途出现了rebase conflict 需要⼿动选择需要保存的代码内容
》》》
在我们rebase成功之后我们相当于是在最新的main branch上做了我们的修改
现在我们就可以将代码
git push -f origin my-feature

因为我们做了rebase 所以加 -f 强⾏ push

第⼋步

将更新的代码在远程仓库合并
这个过程叫 pull request
因为:我们在形式上认为main分⽀是属于项⽬的,⽽my-feature(feature branch)才属于个⼈,即使
这个仓库主⼈就是我们⾃⼰;所以我们要request这个项⽬的主⼈将我⾃⼰新的修改合并到项⽬中

作为项⽬的主⼈我们在合并请求的分⽀时⼀般在审查代码之后
使⽤Squash and merge
因为:我们⼀个项⽬可能有⾮常多的commit,同时想让我们的main branchcommit history 尽可能
简洁,尤其希望我们的main branch中的每⼀个commit都是可以正常⼯作的,所以⼤多数情况我们选择
Squash and merge(将这⼀个分⽀上所有改变合并成⼀个改变然后再将最终的commit放到main
branch
上⾯)

⾄此我们的代码的改动都正常合并到了main branch中只是commit的数量和名字发⽣了改变

⼀般在pull request 被项⽬管理者merge后会删除远端的这个branch对于管理者我们提交的branch
是远端的

delete branch
此时我们local branch上还有my-feature branch
我们需要
git checkout main

main分⽀
git branch -D my-feature
localmy-feature branch 删除
最后使⽤git pull origin master 将项⽬最新的更新拉取到本地main分⽀和我们的磁盘中

现在我们完成了⼀次完美的Git/GitHub/Gitee⼯作流

相关推荐

  1. Git/GitHub/Gitee最佳实践

    2024-04-05 02:06:01       42 阅读
  2. C#面:.NET Remoting 的原理是什么

    2024-04-05 02:06:01       28 阅读
  3. Flask 最佳实践(二)

    2024-04-05 02:06:01       50 阅读
  4. Flask 最佳实践(一)

    2024-04-05 02:06:01       48 阅读
  5. redis最佳实践

    2024-04-05 02:06:01       55 阅读
  6. Code Review 最佳实践

    2024-04-05 02:06:01       35 阅读
  7. Dockerfile最佳实践

    2024-04-05 02:06:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 02:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 02:06:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 02:06:01       82 阅读
  4. Python语言-面向对象

    2024-04-05 02:06:01       91 阅读

热门阅读

  1. 机器学习——典型的卷积神经网络

    2024-04-05 02:06:01       37 阅读
  2. 第十三题:天干地支

    2024-04-05 02:06:01       32 阅读
  3. 什么叫地下水年龄?

    2024-04-05 02:06:01       37 阅读
  4. IO流c++

    IO流c++

    2024-04-05 02:06:01      37 阅读
  5. 关于在PyCharm中使用虚拟环境

    2024-04-05 02:06:01       39 阅读
  6. GCC -Wl参数详解

    2024-04-05 02:06:01       38 阅读