【Gitee版】一篇教你如何快速入门git(详解)
前言--区分Git与GiteeGit 是一个强盛的分布式版本控制系统,用于管理源代码。市面上有许多基于git的仓库网站,比方:GitHub、Gitee、GitCode等,它们之间的关系就好像是:git为基类,剩余为子类的样子。利用的网站是哪一个都无所谓,git下令是公用的,我们主要还是学习git,而不是专注于图形化的某一个详细网站。
我们为什么要利用Git,Git有什么用?
版本控制:Git 资助跟踪文件的更改,记录历史版本,以便随时回溯。
分布式:每个开辟职员都有本身的本地仓库,所有版本信息都保存在本地。
快照:每次提交都是项目当前状态的快照,而非文件差异的记录。
紧张的概念:
仓库(Repository):存放项目文件和版本历史的目录。
暂存区(Staging Area):保存将要提交的变动的地区,允许你选择性地提交更改。
HEAD:指向当前分支的最新提交,常用于查看或引用当前状态。
标签(Tag):为特定的提交创建一个快照标志,通常用于版本发布。
熟悉Git的三个地区
Git 的操纵通常涉及三个主要地区,它们分别是:工作区(Working Directory)、暂存区(Staging Area / Index)和本地仓库(Local Repository)。
1. 工作区(Working Directory)
[*]定义:工作区是你在本地计算机上实际操纵的文件夹,包罗了你的项目文件。
[*]作用:在工作区中,你可以自由地修改文件。所有的编辑、创建和删除操纵都在这个地区进行。
[*]状态:文件的状态通常为以下几种:
[*]未跟踪(Untracked): 新添加的文件,尚未被 Git 跟踪。
[*]已修改(Modified): 文件已被修改,但是还没有被暂存。
[*]已跟踪(Tracked): Git 正在跟踪的文件,可以是未修改、已修改或已删除状态。
2. 暂存区(Staging Area / Index)
[*]定义:暂存区是一个中心地区,用于暂时保存即将提交到本地仓库的文件更改。
[*]作用:暂存区允许你选择性地预备将哪些更改包罗在下一次提交中。这意味着,你可以通过添加和移除文件来控制提交的内容。
[*]操纵:
[*]利用 git add 可以将文件从工作区添加到暂存区。
[*]利用 git reset 可以将文件从暂存区移回到工作区(撤销暂存)。
3. 本地仓库(Local Repository)
[*]定义:本地仓库是 Git 在你的计算机上保存所有历史版本的地方,通常包罗 .git 目录。
[*]作用:在本地仓库中,Git 存储所有的提交信息、版本历史和其他元数据。这是 Git 版本控制的核心。
[*]操纵:
[*]提交更改:利用 git commit -m "message" 下令将暂存区的更改保存为一个新的提交。在这一操纵之后,它们在本地仓库中创建一个新的版本。
[*]查看提交历史:利用 git log 查看本地仓库中的提交记录。
三个地区的工作流程
以下是 Git 中工作区、暂存区和本地仓库的典范工作流程:
[*]在工作区中进行更改:编辑文件,添加文件或删除文件。
[*]将更改添加到暂存区:通过 git add 下令将想要提交的更改添加到暂存区。
[*]提交更改:利用 git commit -m "message" 将暂存区的更改提交到本地仓库,同时创建一个新的提交记录。
[*]重复以上步骤:继续在工作区中修改文件,添加到暂存区并提交,直到你完成所有的更改。
总结
[*]工作区:你正在编辑的文件地区。
[*]暂存区:预备提交的更改的临时存储地区。
[*]本地仓库:保存版本历史的地方。
本地仓库操纵
初始化
整个路径尽量不要有中文
a.创建空目录:mkdir shop
此时文件夹就是普通的文件夹
b.进入到空目录中:cd shop
c.初始化仓库:git init
让Git知道,它必要来管理这个仓库
https://i-blog.csdnimg.cn/direct/cea8342c1d6b479aaf95d52d85974094.png
这时候,新建的目录就关联上仓库了。再看文件就酿成了这个样子:只不外这是本地仓库,不是远程的。
https://i-blog.csdnimg.cn/direct/8fa5eb6e37184e71ab489b172e3e0d0b.png
d.新建文件:touch test.txt
https://i-blog.csdnimg.cn/direct/c9e0dfb77d51405397980111e678ee3a.png
常用指令操纵
查看当前状态:git status
git status https://i-blog.csdnimg.cn/direct/f70a94f8a2fb4aab8db0441713e20334.png
添加到缓存区:git add 文件名
git add 文件名
git add 文件名1 文件名2 文件名3 ...
git add . #添加当前目录到缓存区 https://i-blog.csdnimg.cn/direct/4e2dfe2af4ad46e5870672b9ea518a57.png
https://i-blog.csdnimg.cn/direct/13133292a2e6416ea058b3eace34da7f.png(这里刚刚忘截图了,add后的状态就是一个蓝色的加号)
提交到版本库:git commit -m "注释内容"
git commit -m "注释内容" https://i-blog.csdnimg.cn/direct/ac1d2e74d1b541f28978cb84c1118818.png
https://i-blog.csdnimg.cn/direct/ae31e0e723204c56883efdac132a8192.png(提交到版本库后,状态就酿成了一个绿底色的对勾)
注意Tips1:
https://i-blog.csdnimg.cn/direct/6f953ce19110405594924870c32d560f.png如果没有提交,文件夹就会给出警告标识。当我再次将提交,更改版本,那么文件夹将会改变状态,绿色的状态。
https://i-blog.csdnimg.cn/direct/aa9bbe1731f643a4ad9c49c994ed67f9.png
版本回退:git reset
版本回退分为两个步骤操纵:
①查看版本,确定要回到的时刻点
git log
git log --pretty=online https://i-blog.csdnimg.cn/direct/27659a954a02454a8d299f253256ef9a.png 从下往上看。最下面是最根节点版本信息。内容包括:
版本号(commit *****..**)
提交人(Author)
日期(Date)
日记内容(-m “此处的内容”)
https://i-blog.csdnimg.cn/direct/9fb3274167b644a2bed4f7c24fe3aaee.png
在这里我们可以看到一个版本占一行,此时日记信息只包括:版本号+日记内容
②回退操纵,(回到历史某一时刻)
git reset --hard 版本号
③重返新版,(回退操纵可逆嘛?是的,可逆)
第一步:查看历史操纵号,这里不止新版本有编号,回退操纵本身也有编号。而git log只表现当前版本之前的版本号,还不包括操纵编号
git reflog https://i-blog.csdnimg.cn/direct/449ba3dd7ba54763ad25db61b97b9a75.png
然后第二步再利用git reset --hard 版本号指令回到某一个历史节点。
上述所说的,不管是版本号还是操纵编号都是"commit id"。
远程仓库操纵
我的gitee仓库:李冰鑫/shop (gitee.com)
基于Https协议:
Https地点:shop: 根据itheima教学视频学习而创建的一个仓库
a.创建目录并进入(建议目录名与仓库名一致):
https://i-blog.csdnimg.cn/direct/89930fb139394e53a24a2ee79b12b886.png
b.利用clone指令将仓库克隆到本地:
git clone https://gitee.com/lbingxin/shop.git #线上仓库地址 https://i-blog.csdnimg.cn/direct/c0bcc490452246ca8f538e26388dcc24.png
此时在目录内有一个克隆下来的仓库。
c.在仓库上做对应的操纵,这个克隆仓库就是我们的工作区。我们的操纵主要包括:提交暂存区(git add),提交本地仓库(git commit),提交线上仓库(git push),拉取线上仓库(git pull)。
(1)创建了一个readme.txt文档,并编辑内容:
https://i-blog.csdnimg.cn/direct/56bcb6c0691340bb95f2a16a93da6a99.png
(2)提交到暂存区:
git add 文件名 https://i-blog.csdnimg.cn/direct/0af7649835ec475bb19101fb18e76be4.png
提交后表现的内容意思是:
此时已经将新的操纵过的仓库存到了暂存区,还没有提交。
相比上个版本的仓库,更改内容为:new file多了一个文件:readme.txt
(3)提交到本地仓库
git commit -m "日志注释内容" https://i-blog.csdnimg.cn/direct/86a9c56ab0864d6ca2c62b95c2719d43.png
(4)提交到线上仓库
git push [...] https://i-blog.csdnimg.cn/direct/c77c8ce7e87f40c091a2fba7eb0c72ef.png https://i-blog.csdnimg.cn/direct/3ee466fcab5944e28c70bb686e0b3887.png
push之后,远端仓库就更新为你的本地版本库的状态,暂存区的没有被commit的内容被忽略。
(5)拉取线上仓库
git pull [...] 利用方法与push类似,一个是从本地推向线上,一个是从线上拉向本地。
pull的目标是将你在远端的操纵更新到本地。比方:在远端删除了一个文件,本地由于比git远端仓库的效率低,有状态耽误。必要我们pull一下,拉取线上仓库的状态。
https://i-blog.csdnimg.cn/direct/f728cc86acbe4bcab50c4b7b58864d3a.png
注意:
天天打开电脑,首先git pull拉取线上仓库的最新版本。天天关闭电脑前,首先要git push将本地代码提交到线上仓库
基于SSH协议:
该方式与前面的方式相比,知识影响gitee对于用户的身份鉴权方式,对于git的详细操纵(详细的指令)没有任何影响。
步骤:
①生成公私钥指令:
ssh -keygen -t rsa -C"注册邮箱" #邮箱填自己注册gitee时的邮箱 生成的公钥在 ~/.ssh文件中的id_rsa.pub中,id_rsa是私钥,不能给别人看。生成之前先看看本身有没有,没有的话再执行指令。
https://i-blog.csdnimg.cn/direct/f0897de42e394b288cc229746f413508.png
②将公钥上传到gitee:
首先,利用编辑器,查看id_rsa.pub文件打开,比方:vi id_rsa.pub
https://i-blog.csdnimg.cn/direct/91cef65b88f24bfdbbd97fa517e96c9c.png
然后,将这段内容进行复制,然后进入gitee网站:点击右上角的头像,进入设置界面:选择SSH公钥选项
https://i-blog.csdnimg.cn/direct/3477f501e4b641c3b27bc3d3e9844c49.png
末了,将公钥复制到指定位置。本身恣意起个标题(就相当于备注吧,让你熟悉是本身的公钥,添加的公钥可以删除)
https://i-blog.csdnimg.cn/direct/8939ac8d2f714e449422de584cfb9bef.png
③克隆仓库:
git clone git@gitee.com:lbingxin/shop.git #SSH协议的gitee仓库地址 https://i-blog.csdnimg.cn/direct/4f4b84f67f28431990a5e57f85ddd498.png
Git的分支管理
分支的简介
https://i-blog.csdnimg.cn/direct/e6968eabbb0b48299feb1107dd1ef2bf.png
为什么我们的版本都可以回退和逆回退呢?这是由于我们每次提交都会有一个记录,Git把他们串成时间线,形成类似于时间轴的东西,这个时间轴就是一个分支,我们称之为master分支。
在开辟的时候往往是团队协作,多人进行开辟,因此光有一个分支是无法满足多人同时开辟的需求的,并且在分支上工作并不影响别的分支的正常利用,会更加安全,Git鼓励开辟者利用分支去完成一些开辟任务。
Git的分支指令
git branch #查看分支
git branch 分支名 #创建分支
git checkout 分支名 #切换分支
git checkout -b 分支名 #创建分支同时切换到该分支
git branch -d 分支名 #delete删除分支
git merge 被合并的分支名 #合并分支 查看分支git branch
git branch https://i-blog.csdnimg.cn/direct/5e2e106b9af34f0a8e3eda7cd25cc980.png
当前分支的前面有*,且颜色被标志为特别颜色(比方:绿色)
创建分支git branch 分支名
git branch 分支名 https://i-blog.csdnimg.cn/direct/528aeb3a9137460da5425f89edfbeb97.png
切换分支git checkout 分支名
git checkout 分支名 https://i-blog.csdnimg.cn/direct/a6c253131983437d8f73d384ad0dd6e2.png
注解:创建分支并切换git checkout -b 分支名
git checkout -b 分支名 https://i-blog.csdnimg.cn/direct/b665740072ad485da9312373f64f613c.png
删除分支git branch -d 分支名
git branch -d 分支名 https://i-blog.csdnimg.cn/direct/f5c16cd68e094d43a00332c09d6f79bc.png
肯定要先退出要删除的分支,否则就会产生错误信息:
https://i-blog.csdnimg.cn/direct/6de67cbdb93b4c089796293c95f09ab6.png
我们看到我们身处bugFix分支中,然后试图删除bugFix分支,这时会报错:error:......
合并分支git merge 被合并分支名
git merge 被合并分支名 辩论的产生与办理
①模拟辩论产生:
在线上(浏览器中)将仓库内的恣意一个内容进行编辑修改:比方将readme.txt的文本信息进行修改:
https://i-blog.csdnimg.cn/direct/e8d8574c0f624100810eaba1220fac6e.png
此时查看本地仓库内的文件:
https://i-blog.csdnimg.cn/direct/027f739b267b441fbebfdce28d1ba964.png
此时:本地仓库内容与远程仓库内容的不一致即为辩论。我们如果想进行git push,就会出现题目。
https://i-blog.csdnimg.cn/direct/4b1b7bb3f9f64b5bbe1cd0a05158b7d5.png
hint(提示):在push之进步行pull,拉取线上仓库的内容。
②办理题目:
办理辩论的方式:合并内容,然后与同事探讨保留哪些内容。
办理辩论:在合并分支时可能会出现辩论,必要手动办理并再次提交。
撤销更改:
[*]撤销暂存区更改:git reset
[*]撤销未提交的更改:git checkout --
图形化管理工具
TortoiseGit:小乌龟
https://i-blog.csdnimg.cn/direct/9f1bfdbc44444b35be41c03916ca3a0a.png
https://i-blog.csdnimg.cn/direct/9e9d320d3d344c49aa17e75010f9752c.png
我们可以从中找到许多我们用到过的指令,此时我们就可以根据图形化指示进行操纵。
忽略文件操纵
应用场景:
在项目目录下有许多万年稳定的文件目录,比方:css,js,images等,或者另有一些目录纵然发生变动,我们也不想让其提交到远程仓库的文档。此时我们可以利用“忽略文件”机制来实现需求。
忽略文件必要新建一个名为:.gitignore 的文件,该文件用于声明忽略文件或不忽略文件的规则,规则对当前目录及其子目录均生效。
注意:该文件由于没有文件名,没办法直接在windows目录下直接创建,可以通过下令行Git Bash来touch创建
常见规则:
/mtk/
过滤整个文件夹
*.zip
过滤所有压缩文件
/mtk/do.c
过滤某个详细文件
lindex.php
不外滤某个详细文件
一样平常的.gitignore文件内容:
# Build and Release Folders
bin-debug/
bin-release/
bj/
in/
# Other files and folders
.settings/
# Executables
*.swf
*.air
*.ipa
*.apk
#过滤掉不想要文件和文件夹
*.exe
*.sln
*.vcxproj
*.filters
*.user
*.suo
*.db
*.ipch
Debug/
.vs
Release/
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
# should NOT be excluded as they contain compiler settings and other important
# information for Eclipse / Flash Builder. 总结:
初始化与克隆
[*]git init:初始化一个新的 Git 仓库。
[*]git clone :从指定 URL 克隆一个远程仓库。
查看状态
[*]git status:查看工作区和暂存区的状态,表现哪些文件已修改、哪些已暂存等。
暂存与提交
[*]git add :将文件添加到暂存区。
[*]git commit -m "commit message":将暂存区的更改提交到本地仓库,并附上提交信息。
查看历史
[*]git log:查看提交历史,表现每次提交的信息(SHA 值、作者、日期等)。
[*]git diff:查看尚未暂存的文件与最近一次提交之间的差异。
分支管理
[*]git branch:列出所有分支,当前分支会有星号标志。
[*]git branch :创建一个新分支。
[*]git checkout :切换到指定的分支。
[*]git merge :将指定分支合并到当前分支。
远程操纵
[*]git remote -v:查看当前设置的远程仓库。
[*]git push :将本地分支的更改推送到指定的远程仓库。
[*]git pull :从远程仓库拉取并合并最新的更改。
常见工作流程
[*]克隆仓库:git clone
[*]创建新分支:git checkout -b
[*]修改文件,添加更改:git add
[*]提交更改:git commit -m "description"
[*]切换回主分支:git checkout main
[*]合并分支:git merge
[*]推送更改到远程:git push origin main
感谢大家!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]