git与github 项目管理篇
引入
在接触大项目或者稍微复杂一点的工程时 就会有一个版本控制的困扰。在你尝试在已有代码的基础上添加某个新功能时 很有可能会出现改到一半改不下去了的情况。那么如果没有之前成功版本的备份 就会处于一种很尴尬的处境 代码一堆报错 逻辑改的稀巴烂……
当然 可以选择手动备份:在做尝试改进之前 把某个成功版本留好一个备份——这其实就是简易版的版本控制
然而协作呢 要和同事研究某项目 如果以这种方法的话 实际上会是怎么样?我在修改时 得让他别动 等我改完了 再拿我改完后的版本去做他的改进——看似是两个人在做事情 实际上同一时间只能一个人在做 甚至真实效率还不如一个人去做……
既然有困扰 就一定有高手已经提供了解决方案(你还没达到那种境界需要自己解决问题 巨人的肩膀远比想象中的要宽广)。其实 git 和 github 就是帮助做这件事情的。
可以使用 git 进行版本控制——它提供文件比对功能,有种很高级的算法能快速得知你在哪里做了改动,和数据库事务似的:你可以有一个提交 commit,如果你这次 commit 的版本与之前的保留版本有所不同 他就会生成一个新的版本 保存在某个本地仓库。你可以利用可视化工具(如 github desktop)很方便的管理这些版本
github 已经很熟悉了吧,天天在里面“偷”一些别人写的有趣的项目出来玩。现在想想该怎么自己去用它:它能供其他人 clone 出来,这意味着什么?协作啊——你可以把项目代码从本地仓库发布在 github 上,它就像是一个巨大的服务器 帮忙存储管理你的代码,其他人可以将你的项目 clone 到本地 得到一个备份。他们对这个项目进行了修改 可以以分支的形式上传回那个 github 仓库,于是 通过一些比对操作 就能将各个人的代码进行整合 成一个新的版本。这样敲代码写项目就从“单线程”变成了“多线程”
整理
然后让 chatgpt 给出一个比较正式些的整理:
版本控制的重要性:您提到了在开发过程中,可能会遇到代码改动一半无法继续的情况。确实,这时候版本控制变得至关重要。Git允许您随时回到之前的稳定版本,避免了手动备份的麻烦和风险。
Git的工作原理:Git通过跟踪文件的更改历史来管理代码版本。您正确地指出,Git使用提交(commit)来记录更改。每次提交都是代码库的一个快照,允许您随时回到任何一个提交点。
分支的作用:Git的分支功能特别适合多人协作。您可以在自己的分支上工作,而不影响其他人或主分支(通常称为master或main分支)。这样,多人可以同时进行不同的工作,最后再将这些工作合并(merge)到主分支上。
GitHub的角色:GitHub是一个基于Web的Git仓库托管服务。它不仅存储代码,还提供了一系列协作特性,如问题跟踪、代码审查和团队管理。通过GitHub,您可以将本地仓库推送(push)到远程仓库,与团队成员或整个开源社区分享和协作。
拉取请求(Pull Request):在 GitHub 上,当您想将自己的更改合并到主仓库时,可以使用拉取请求(Pull Request)。这是一种通知项目维护者查看您的更改并考虑合并它们的方式。同时,它也是代码审查和讨论的平台。
冲突解决:当多人修改了同一部分代码并尝试合并时,可能会出现冲突。Git提供了工具来帮助您识别和解决这些冲突,确保代码的一致性和稳定性。
GitHub Desktop:这是一个图形界面的Git客户端,简化了Git操作。对于不习惯使用命令行的用户来说,这是一个很好的选择。
这是尚硅谷的课件中的图解。它除了讲 git 外 还拓展了很多其他的版本控制工具 并拓展了一些思路:https://www.youtube.com/playlist?list=PLmOn9nNkQxJG-rYaP3x1Dh2XDoIzqZDJV
目的
但是 我只是想简单的入个门,毕竟 git 也只是个工具——对于工具 学会怎么用就足够了,思路方面要懂、听听就够了,但没必要记下来。
所以 我在这里重点是记录:怎么去使用 git 的图形化工具(github desktop)和 github,我该怎么使用他们让我的项目管理变得更加高效。
至于一些 git 的命令符 会将尚硅谷的讲义附在文章后边 以便查阅;以及 csdn 这篇也是很完整的:http://t.csdnimg.cn/kxwvk。git 基本指令得会,但现在先从用图形化开始。
下载
- git 下载:https://git-scm.com/downloads
- github desktop 下载:https://desktop.github.com/
- 汉化:https://github.com/robotze/GithubDesktopZhTool
基本使用
工作目录→本地仓库
文件+新建 就可以选一个目录作为项目目录,会生成 .git 文件夹——这个文件夹应该就是监控(比对)文件的核心。
但是一般都不这样创建存储库:应该是在 ide 里面创建代码、构建代码文件后 再引用该目录作为 git 仓库(其实 ide 里面也有内置的 git 功能)。
同时就可以在github desktop中看到
当然 文件夹会出现
“更改”文件的版本控制
在这个 .git 文件夹的同级目录或者下级目录中,如果文件有发生更改(增删改) 都会被检测到,并记录在“更改”中 等待 commit。
只要发生了改变 就会被检测到
(不得不说 jetbrains 的 ide 确实 nb,mysql、git 的这些功能都集成在一起了)
每次改变 只要被提交了 就是一个新的版本;这些版本都会被记录 可以被回滚。
然后再去把那个测试文件给删了 就又可以提交一次 其实就是回到了第一个版本
我只能说 什么github desktop 真不如ide内置的直观
就是这个过程
协作 分支
每个人占一个分支 在本地仓库进行修改 最后再在 hub 上进行分支合并。测试一下:创两个分支。
无冲突情况
在分支1中添加一个文件 并提交
分支二中也同理 创建一个文件 并提交
当然 此时主仓库(main)或者说主分支 是没有这两个记录的
接下来就要将两个分支的内容合并在主分支中去
于是main中就有了分支2的文件
或者这样 直接在ide中
这样一来 main中就又有了分支1的提交记录
有冲突情况
分别在分支1 2中创建相同名字的文件common.txt 但里面的内容不同
再尝试合并
把分支1合并到main之后 再把分支2合并进去
会发出警告
继续合并 打开编辑器会具体告诉冲突内容
他会告诉你 当前已有的文件中 内容为“分支1” 而现在又要提交合并的文件中 内容为“这是分支二的内容”
对于大文件也是一样 他会比对出不同的地方 并询问你希望保留哪一段
当你选择完一个后 才能继续进行合并
小结
可见 分支的文件对比 合并功能有多强大
到目前也只是简单的做了个了解
知道了这本质是将一份文件拷贝多份分支给多个本地仓库
各人在各自的本地仓库中进行修改更新
而后可以将修改好的项目进行合并
这个合并过程中 程序会进行比对 如果没冲突就直接合并成功
如果有冲突 就会询问你到底想要选择哪一份
实际上这方面还有很多学问 经常看到chatgpt上有人提问什么git工作树什么的 这其实也很考验大局观 对自己的项目可以分模块进行 对多人项目也可以构建出一个工作树 如果在工作之前就把这些分支什么的缕清 可想而知到时候写代码时会有多思路清晰
这个思维慢慢培养吧 做多了就熟悉了
分支标签
合并了分支如果只显示merge branch xx 的话 在做项目时并不能清晰知道什么意思
所以可以给这些合并分支加上“备注”标签
这样一来就能能直观了解到每一步合并都实现了什么
在github desktop中也可以
github它来了 远程仓库而非本地
放在本地有什么用 还是实现不了协作
需要一个远程仓库 当然可以自己在服务器搭一个
但何必呢 有现成的代码托管平台 github(全球最大同性交友平台 bushi)
创项目
那么来到我们的交友平台 进入自己的主页
左上角一个大大的new
哦豁 ! 熟悉的页面 不过这回是自己创建的了hhh
添加文件或者上传文件
把项目目录拖进去
其实所有操作都是和本地仓库一样的 只不过它是远程仓库罢了
比如分支功能 也都是一个道理
也用不着直接在github做这些事 更多的还是在本地做
和github见要做的事情就是如何交互——将本地更新版本提交到github以及拉取github的分支到本地(clone到本地)
拉取仓库 clone
从 github 上 clone 仓库:直接新建 → clone 仓库即可
快速将项目上传github
发布其实也不是要像刚才那样进 github 主页 new 一个仓库——直接在 github desktop 中或者 ide 中就有。
嗯哼 直接就放在 github 上去了;或者 ide 中登入一下 github 账号就好了。
后面应该也有一键推送的功能 我这不知道为什么抽风一直登不上去
还是用github desktop吧 ide里面连接总出问题
连接gitee
github 毕竟在国外 所以可能出现网络问题,也可以把代码托管在国内的 gitee 上:先在 gitee 创一个仓库,然后通过 url clone 到本地。
而后这个github desktop就绑定了这个gitee仓库
就会出现推送的按钮
小结
这个推送其实就是把本地仓库的修改同步到托管平台
ide集成git使用
https://youtu.be/Fam2HA8WpSI?si=PLUnLk1oHjgcRUFt(与 github 在 17 集,与 gitee 在 18 集)
浅探工作原理
19到21集
更多git知识(命令)
命令相关 22集及以后
部署私有仓库gitlab
30集
项目分区导航:git实操 ⬅️ | 05-git与github项目管理篇 | ➡️ git-github资源使用篇
💬 评论