Git使用心得体会
Git使用感受
本科阶段我一直都知道GitHub是基于git这个强大的版本控制工具来管理的,但是一直没有深入了解和使用过git。研究生很荣幸选了孟宁老师的高级软件工程的课程,老师对git的一步步深入细致的讲解让我受益匪浅。于是,我也希望通过这次作业实践,来进一步认识和使用git,为之后的企业实习打下良好的基础。
参考文献:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg
场景一 初始化一个本地版本库
新建一个gittest文件夹,用VScode打开,直接在终端输入
Git init
即可初始化本地仓库
然后,执行
Git status
获取当前仓库的状态,因为是刚刚新建的仓库,没有任何修改和提交
新建一个MyFirstGit文件,输入内容,修改完成后把文件添加暂存区并提交到本地仓库
打印下log日志
场景二:git远程版本库的基本用法
通过从github clone一个项目到本地仓库管理,这里的GitHubURL为
https://github.com/chywxsqy/git.git
成功克隆到本地如下图:
直接输入git remote可以看到git clone之后默认的远程存储库名称为origin。
使用git remote -v 可以查看更详细的远程存储库信息,包括fetch(抓取)的远程存储库URL和push(推送)的远程存储库URL。
场景三:团队项目中的分叉合并
1 同步最新的代码到本地存储库:
2 为了实现多人协作完成项目,应该为自己的模块建立一个新的分支,该分支只负责我这一部分项目功能或者模块的版本控制:
3 在我本地的分支上新建文件mybranch,进行我所负责的模块开发,进行如下操作:
Git add mybranch
Git commit -m “mybranch”
4 最后,切记先进行切换到main分支,讲远程仓库最新的文件同步到本地存储库,同时合并mybranch到main分支,推送远程仓库完成之后即完成了一项开发工作。代码如下:
Git checkout main
Git pull
Git merge –no-ff mybranch
Git push
场景四:gitrebase
首先来讲一下git merge和gitrebase的区别:
git merge 操作合并分支会让两个分支的每一次提交都按照提交时间(并不是push时间)排序,并且会将两个分支的最新一次commit点进行合并成一个新的commit,最终的分支树呈现非整条线性直线的形式
git rebase操作实际上是将当前执行rebase分支的所有基于原分支提交点之后的commit打散成一个一个的patch,并重新生成一个新的commit hash值,再次基于原分支目前最新的commit点上进行提交,并不根据两个分支上实际的每次提交的时间点排序,rebase完成后,切到基分支进行合并另一个分支时也不会生成一个新的commit点,可以保持整个分支树的完美线性。
这个命令做了以下内容:
a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并
所以 rebase 在拉代码前要确保你本地工作区是干净的,如果你本地修改的内容没完全 commit 或者 stash,就会 rebase 失败。
1 首先git rebase -I HEAD^^^查看到了3条记录
2 输入i进入编辑模式,此时我想合并版本,wq保存退出:
3 gitlog一下,已经合并成功。在合并过程中如果出现冲突或者其他,可以用git rebase –continue
4 如果想撤回rebase,用如下命令:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构