Git:独立开发者应该如何管理仓库分支?

写在前面

前段时间考试比较多,今天终于有空可以整理有关Git分支的管理使用技巧,相信大家对Git应该都不陌生,所以直接进入正题。

如果大家觉得看书面材料太无聊,推荐大家视频学习:

蛋蛋老师的视频真心不错,大家可以学习了这个视频以后再看下面的内容,别忘了关注 + 一键三连。
其实我觉得蛋老师的视频已经足够大家学习一阵子了。

这篇图解Git操作,一篇就够写得很不错,还有图例。

什么是分支?

在任何代码管理工具中, 分支都是一个非常重要的概念。
分支是主线某个状态的一个复制, 在不影响主线情况下, 可以有新的变化。

实际生活中,我们的工作一般都是在一条主线(master/main)上进行,每一次提交会形成一个commit对象。客户提出了一个新的需求,而这个需求的开发需要一段时间才能完成。为了不影响主线的稳定性和持续进行。 我们会怎么做?我们可以把整个项目复制一份,在复制的项目上开发新功能,开发完成通过测试后,再将改动的代码整合回主线。那么,这个复制出来的项目就是一个分支。

重要的分支操作

相信大家看了蛋老师的视频以后,至少对Git已经有了入门级的了解。那么现在,让我们整理一下Git的常用命令。

Git工作流基本可以参考下面这张图:

一定要搞清楚远程仓库、本地仓库、暂存区和工作区的概念

克隆项目

从服务器上进行克隆项目到本地

1
git clone git@github.com:JJLibra/Astar.git

执行git clone就会生成一份副本,在本地仓库和工作区都会同步副本

提交代码

  • git status:查看文件状态。
  • git add .:文件添加进暂存区。
  • git commit -m “提交信息”:文件添加进本地仓库,-m参数改为-am可以直接推向本地仓库。
  • git push:文件推向远程仓库。
  • git log:查看文件提交日志,每一个commit都会有自己的commit的ID。

运行git commit -a相当于运行git add把所有文件加入暂存区,然后再运行git commit把文件提交本地仓库。

代码回退

  • git fetch:从远程仓库拉取代码到本地仓库。
  • git reset –files:用本地仓库覆盖暂存区中修改,也就是覆盖最后一次git add的内容,即撤销提交到暂存区的内容。
  • git checkout –files:把文件从暂存区复制到工作区,用于放弃本地的修改。
  • git checkout HEAD –files:回退最后一次的提交内容。

版本回退

  • git reset –hard HEAD^:回退上一个版本。在Git中HEAD表示当前版本,HEAD^表示上一个版本。

删除文件

  • git rm filename:在工作区删除,如果需要从版本库中删除文件可以使用git rm命令进行删除,然后提交。

如果删除错了,可以使用git checkout -- filename进行恢复,其原理就是使用版本库的文件替换工作区的文件。

分支管理

  • git branch <分支名字>:新建一个分支。
  • git checkout <分支名字>:新建立后分之后,切换分支。
  • git branch:查看本地的分支情况,分支前面带有*号的表示当前的分支。
  • git merge <分支名字>:合并指定的分支到当前分支
  • git branch -d <分支名字>:删除分支,假如分支删除不了,可以通过:git branch -D <分支名字>,强制删除分支。
  • git remote:查看远程仓库的情况,加上-v参数可以查看详细情况。
  • git push origin master:将本地master分支推送到远程库。
  • git pull:拉取远程仓库的分支到本地仓库。相当于执行git fetch和git merge命令。

需要注意git fetch和git pull之间的区别!可以参考这篇详解git pull和git fetch的区别

最后

可以在VScode中安装Git插件,方便使用。

分支的操作其实还有很多,常用的都已经罗列在上面了,使用时结合图例和git结构,熟能生巧,慢慢就能掌握。