☰
学习使用Git
2026/10/22 7:21:39 网站建设 项目流程

作为一个编程的初学者,我是根据我自己的理解来写的,我想我的这篇文章会有很多词不达意的地方,欢迎大家的指正,我会积极修改并再次学习的。

一.Git下载并注册登录Gitee

因为之前已经对Gitee有所了解,所以很早就完成了对Gitee的下载注册,那么现在以登录界面来记录Gitee的使用过程



git命令在电脑终端或者命令行里敲,gitee或者github是用来管理代码帮助进行协作,回溯,查找。如果想知道当前终端在哪个文件夹,Windows中在CMD用cd可以查看,PowerShell用pwd也可以查看

二.了解哈希值,分支branch,head之间的关系

哈希值
每次提交过程中代码的内容,提交的时间,其父节点等等会生成一串数字,取该数字中的一部分作为简要标记
分支branch
main为主线,那么在与我的搭档合作过程中我们想要实现同时工作于这条线上的不同部分,就可以通过创建分支branch,在各自的分支上写代码,提高效率。
通过git branch 分支名来实现
更多收获·:
git branch->git commit->git checkout->git commit
新创建好的branch里面还是没有代码的,commit后现在还是处于main主线上的,可以checkout到branch上
head指当前的所在提交记录,当下在哪里提交,默认隐藏在分支名下面
当checkout到当前提交记录的提交节点上时,为分离head状态,此时commit会出现新的提交,但原来的分支名不会动,最好创建一个新的分支名(应用场景:在原代码上想进行试验但是害怕搞砸那就这么做。实验失败了直接退回原代码)

三.了解本地仓库基本操作init,commit,相对引用,branch,合并merge,变基rebase,撤销变更reset与revert,移动工作,add,restore,tag,describe

1.init
git init就是用来把当前文件夹变成一个Git仓库并创建一个.git文件夹来记录版本历史,不关联任何远程
2.commit
比如在main主线上写代码,那就可以通过commit来一次次提交代码,并且之前写的代码的记录都可以通过checkout查找,main就相当于是一个标签,我通过commit来不断将main标签贴在最新存档的代码上。
用git commit实现
3.相对引用想要到达某个提交节点可以通过checkout+哈希值来完成,但没有被简写的哈希值很长,为了省事便利,可通过
git checkout 分支名^到达其最新提交的父节点
git checkout 分支名或HEAD ~+number实现多级提交记录的跨越
同时,当面对被合并出来的一个提交记录,它具有两个父节点
已经知道通过git checkout HEAD~+number可以实现向上移动,那么该节点向上移动是移动到哪个父结点上呢?
一般来说默认移动到其正上方的节点,可以通过git checkout 分支名^来实现,想要移动到另一个父结点上可以通过git checkout 分支名^2来实现
^是指移动到父节点,~是向上移动多少个提交
4.合并merge
如果当前在main主线上,并且已经创立了bugfix分支且commit过了,那么这时通过git merge bugfix可以把分支上做出修改的新内容合并共享到main里面,但此时bugfix仍存在于新commit出来的main分支的parent里面,并没有同步main里面的新的内容,再通过git merge main 可以使bugfix中也同步最新内容。
通过git merge 名字来实现
更多收获:应用场景(当我的搭档在bugfix分支写好代码时,我可以将他写的内容合并到我这里来,我继续写代码,当我的搭档想要再继续写代码的时候,他可以合并我的内容再继续进行代码修改)
5.变基rebase
简单可以理解为改变基底,比如将bugfix分支rebase到main主线上,就相当于把bugfix不同于main的部分单独取出来并作废掉了bugfix之前的基底,放到了main上
交互式变基
git rebase -i HEAD~num
执行后会出现弹窗,在弹窗内部可以对提交记录进行修改或顺序排列,修改之后,会把刚刚修改的内容再去旁边复制一遍
另外交互式rebase可以将想要修改的文件放在前面,然后通过git commit --amend进入编辑
(merge和rebase的比较)
相同:都实现了两个分支的结合,使得所编写的内容越来越全面,而且执行这两个命令的双方可以是并列的状态也可以是先后两次提交的状态
不同:
merge相当于保留两支线共同的内容,并把分支上的新内容加到主线上,但是分支只是停留在新的main的parent里面还是完整的只不过没有新内容,且没有作废之前的记录,清晰展现结合的过程。适合团队工作。
rebase相当于把分支上的新内容挑出来结合到main主线里面,那么分支新内容就相当于换成了main的基底,并且之前分支的记录被作废。适合个人工作。
6.撤销变更reset与revert
相同:reset,revert都可使分支名上移到一个原来的提交从而实现变更的撤销
不同:
reset撤销更改后原来最新一次的提交记录就看不到了,branch回到了上一次的提交记录处
revert撤销后只是多了一个修改后的新提交,原来的记录还在
reset后变更确实还在,但是不在暂存区,本地仓库自己做更改是可以的,但远程仓库大家一起合作就不起作用了,这时用revert。
7.移动工作
利用git cherry-pick+想要复制的内容,可以将之前所有提交记录中想要的记录自由移动到目前所在的分支下面。
8.add
在讲add的功能前不得不提到Staging Area暂存区,暂存区就像是一个有待打包的候选名单,在当前的分支上面工作时,目前有三个文件,如果想要一次性全部存档提交,就用git commit,但如果其中有一个文件还没编写完整有待测试,就可以用git add 文件名暂存单个文件,如果想要暂存所有文件可以用git add .
先git add+文件名,那么这个文件就进入了暂存区,再git commit就把这个文件保存为正式的节点了,但是暂存区仍旧有这个文件的记录。
通过git status也可以查看文件状态。
9.撤销工具restore
如果不小心把两个文件同时放入了暂存区,相当于不小心将它们捆绑在一起了,想要更加自由地提交,就需要把其中的一个文件从暂存区撤销,就可以通过git restore --staged 文件名来实现
如果一个文件它本身没有作用想要把它彻底删除掉,可以通过git restore 文件名来实现
10.tag
在日常的提交当中,分支名是会随着提交移动的,但有时候有的提交比较重要,我们会选择创立一个tag来标记一下,这里的tag就像是一个里程碑或者锚点一样
通过使用git tag 标记名 分支名来创立
11.describe
通过git describe 分支名来查找距离该分支名最近的锚点是哪个,距离是多少,通常得到的结果是
锚点名 距离长度 标签名

四.了解远程仓库基本操作clone,fetch,pull,push

1.clone
通过git clone可以将远程的仓库下载到本地,不仅是代码,所有的分支所有的提交都会复制过来,这时会出现o/main的分支,这个就是远程分支,远程仓库就叫o,但是在本地仓库提交无法控制远程仓库的。远程分支反映上次与远程仓库通信的过程
2.fetch
于远程仓库交互的过程就是从其他仓库传输或者获取数据,那么fetch就可以帮助我们获取数据,帮我们更新远程仓库最新的状态,通过git fetch来实现,它只是把远程仓库下载下来,并不会更新本地仓库该分支上的状态
3.pull
git pull本质上是git fetch跟一次merge的简写,同样git pull --rebase就是一次fetch和一次rebase的简写,执行后会把远程仓库的提交拉过来再合并.
4.push
push就像是将自己的成果提交到远程仓库,但如果在本地仓库中的某次提交是基于远程仓库中的某个提交,并且本地以及远程仓库都分别在自己的仓库中进行了提交,那么这时候就会出现不能push的情况,那么我们需要做的就是使我们的工作基于最新的远程分支。

五.代码管理平台的平台功能issue,PR(Pull Request)

团队开发:
a.主分支稳定
main是稳定可发布的版本
b.功能分支开发
新的功能,修改Bug都在分支上实现
c.分支命名规范
feature/ 新功能
bugfix/ 修Bug
hotfix/ 紧急修复
d.所有改动经过PR+审查后再合入
1.issue
issue通常用来描述问题Bug,提出需求,提出新功能,分配任务,发起讨论。
issue的组成:
a.title
用一句话来概括问题
b.body
详细的说明背景,想要实现什么效果,解决什么问题,期待的结果
c.comments
其他开发者加入进行讨论解决方法
d.lables
给问题分类
e.assignee
被指派负责的人
f.milestone
关联到某个版本或截止日期
2.PR(PullRequest)
用来请求将某个分支的代码合并到另一个分支并在这个过程中进行代码的审查,讨论,自动化检查。要写清楚改了什么,为什么改,怎样测试
a.开发者先在本地仓库开发,commit到本地仓库
b.push到远程仓库
c.去代码管理平台Gitee选择来源分支和目标分支,点击创建PR
d.审核讨论代码,没有问题由维护者合入PR,若有问题,直接在分支上进行修改,不用关闭PR再创建新的PR,PR与branch强相关,将新的修改再push到远程仓库就可以了

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询