实际开发场景下Git操作流程

张开发
2026/4/10 9:09:15 15 分钟阅读

分享文章

实际开发场景下Git操作流程
目录标题1. 工作场景2. 整个流程3. 番外篇3.1 ahead xxx, behind yyy3.2 删除中间commit节点3.3 一种优雅的方式将本地代码与远程仓库相关联3.4 在哪里查看自己被邀请(invited)的请求信息1. 工作场景利用git对代码的版本管理是一个程序员基本技能之一。本文按照实际研发场景下的情形描述一下具体每个步骤上相关的git 指令和注意事项。在这里假设一个场景你是一名计算机视觉相关领域的算法工程师。在日常研发的过程中 在阅读ATSS这篇论文的时候你想对源码进行一定的研究。2. 整个流程第一步你按照论文中放出的github网址https://github.com/sfzhang15/ATSS找到该源码所在处然后fork一份到自己的github账户下。图1是论文作者的源码页面 图2是fork作者源码之后自己的github相关仓库的页面信息。此时你可以进行阅读源码、修改源码甚至commit自己对源码的优化给论文作者等一系列操作。图1图2第二步将远程仓库的源码clone到本地。下载到本地就可以使用我们熟悉的编辑器例如vscode进行研发以及在本地调试运行。图3第三步如图4所示先通过指令看一下当前本地的分支(branch)情况。可以看到本地分支只有一个名称为master的分支称之为主线分支。但如果你在github的网页端看一看就会发现其实github该仓库中已经有5个branches分支如图5所示。也就是说此时我们并没有将远端remote所有的分支拉下来。图4图5如果此时想将所有的分支都拉下来可以执行gitfetch origin现在想开发一个新的功能或者修复一个bug。此时就出现了一个独立的开发任务。在master的基础上新建一个分支出来取名为putao。图6再查看此时的本地分支就会发现‘putao’分支已经新建了出来并在新建分支的同时当前所在branch已经自动切换到新的分支。图7第四步开发。该步骤因人而异。由于此时是在私人分支“putao”上进行研发不用担心污染主线分支。第五步提交代码。当自己独立单元的开发已经完成之后可以提交代码。图8图9图10此时远程仓库的分支里面就会出现了一个新的分支‘putao’图11第6步Merger.在merger之前我们首先要做git rebase master操作。rebase称之为变基这步的操作主要是因为在实际场景中我们基于master分支拉一个putao分支在本地开发的期间可能会有其他开发者向master分支merger了节点。从而使远程分支的状态变成了如图12所示。图12我们需要将我们当前的开发分支上的节点d的base进行更新也就是rebase到master最新的head节点c。gitrebase master在此过程中如果有提示conflict则手动解决冲突即可。当rebase之后就可以在远端提交pull request操作了。第7步提交pull requests。第8步其他人进行代码的review之后决定是否同意merger。如果同意则此次merger成功。在开发一个独立的单元之后就要提交merger。这是一个比较规范的节奏要避免存在将一个大的功能都开发完之后再merger的想法此时上千行代码对于code review的人也不友好。如果上述pr的操作是在官方作者的github页面上操作的并且官方作者同意了Pr, 那么本人就成为了官方代码的贡献者之一。3. 番外篇3.1 ahead xxx, behind yyy此时如果想舍弃掉本地的变动可以执行gitreset--hardcommit-id3.2 删除中间commit节点例如按照上文第六步所述对d进行rebase从而变成a—b----c----d但此时由于某种原因希望回退至a–d的形式(也即删除中间的两个commit节点c和节点d)可以执行gitrebase-i节点a的commitid然后在对应的条目下选择drop模式即可。3.3 一种优雅的方式将本地代码与远程仓库相关联公司服务器无法从github上clone代码仓库但可以以代码包的方式download下来。通过将下载下来的代码包与公司的gitlab仓库关联达到代码管理的目的。git init git add . git commit -m initial commit git remote add origin remote_rep_url git push origin master3.4 在哪里查看自己被邀请(invited)的请求信息如果自己的合作者有一个private的github仓库想让自己也有access权限这个时候可以通过invite操作来达成。但是发现这个被invited的信息并不是像通讯软件一样在主页上有一个明显的提示而是需要自己手动的去查找被invited信息。查找的位置位于右上角头像的下拉菜单中进入settings然后进一步进入organizations可以见到。记录一下。20260409

更多文章