| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> Git学习笔记(一) -> 正文阅读 |
|
[开发工具]Git学习笔记(一) |
Git学习笔记1,引言Git官网链接: https://git-scm.com/ 首先我们把Git官网首页上的两句话翻译成中文感受一下。
2,Git 工作机制
注意工作区和暂存区写过的代码,如果感觉不合适都是可以删除掉的,并不涉及历史版本记录问题。 但暂存区中的代码一旦 举一个生活中的例子理解以上三个分区: 小蜗是某公司程序员,某天喝多了,在自己的程序里写进了一些骂老板 的代码注释。在工作区写完此代码老板肯定看不到,但小蜗为了追求刺 激,把代码 老板也看不到,因此还可以补救。但如果一时冲动,把添加到暂存区的 代码 的代码就无法删除了,小蜗酒醒之后,只能修改自己提交的版本进行补救, 但老板仍然可以通过git查看之前的版本,依然存在被发现的风险。最终 小蜗删库路路!!! 3,Git和代码托管中心代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为 我们知道,提交到本地库的代码可以形成历史版本。这时我们还可以通过push 命令把代码从本地库 代码托管中心分类: 4,Git常用命令4.1,设置用户签名签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。 Git 首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。 验证是否操作成功: 找到C盘的用户目录进入当前用户目录,可以找到一个.gitconfig文件打开可以看到我们设置过的用户签名信息,即成功设置了用户签名。 4.2,初始化本地库需要使用Git管理这个目录的时候,就首先需要先进行 git-init命令 初始化成功之后就会生成一个.git目录,图形化界面如图展示。
其中 4.3,查看本地库状态git status ①On branch master:提示当前本地库在master分支(默认分支名字,表示当前分支)里面; ②No commits yet:表示目前还没有提交过任何东西,目前是一个空的git库; ③nothing to commit (create/copy files and use “git add” to track):目前没有什么东西需要提交。 新增文件后再次查看本地库状态
①文件中插入一些内容 ③查看尾部内容 此时再次查看本地库状态: nothing added to commit but untracked files present (use “git add” to track)-----现在没有提交过任何东西,但有一个未被追踪的文件了,要使用git add进行追踪(添加暂存区)。 4.3,添加暂存区git add加文件名 (警告不用管,问题不大) Windows系统里的换行符是CRLF;Linux系统里面换行符是LF。 提交到暂存区之后继续查看本地库状态。
删除操作如下图,删除成功后查看本地库状态,发现hello.txt又变为红色: 4.4,提交本地库对添加到暂存区的文件提交至本地库。形成自己的历史版本。
master(主干分支):第一次提交版本,一个文件被改变。17行内容被插入; 再次查看本地库状态: 4.5,查看版本日志信息git reflog:查看引用日志信息(精简信息)。
使用reflog查看到的版本号为前七位精简版的版本号f785f7a 4.6,修改文件①先查看文件信息,如下图 ②进入编辑状态,修改文件,比如第一行后增加空格和7个3,如下图 ③查看本地库状态,如下图 所以我们对修改后的文件,使用git add添加到暂存区。如下图 接下里提交到本地库
表示:一个文件被修改;其中一行新增,一行删除。
再次查看本地库状态,发现提交成功,如下图 而且当前的指针指向的是第二个版本: 此时查看文件信息,即为第二个提交版本的信息,如下图。 再次查看日志信息,如下图: 注意:尽管此时已经有了三个版本,但Git的工作区依然只有一个文件,如下图。因为Git控制版本是通过指针而非副本。 4.7,关于历史版本①查看历史版本 ②版本穿梭 版本穿梭完成后继续查看日志,如下图: 穿梭之后我们查看文件信息,cat hello.txt。发现文件内容已经穿梭到了第一次提交的版本。 5,Git分支5.1,什么是分支?
使用分支意味着程序员可以把自己的工作从开发主线上分离开来, 开发自己分支的时候,不会影响主线分支的运行。 对于初学者而言,分支可以简单理解为副本,一个分支可以理解为一个单独的副本。(分支底层实际上是指针的引用) 5.2,分支的好处
5.3,分支操作① 查看分支:git branch -v ② 创建分支: git branch 分支名 比如,程序出现问题了,
接下来操作实现从master分支切换到hot-fix分支上,去修改hello.txt 切换分支: git checkout 分支名,如下图: vim hello.txt 编辑 hello.txt 删除第二行的hhh。如下图: 删除之后,查看本地地库状态。如下图 然后查看hello.txt,发现成功修改。如下图:(注意此处修改的是hot-fix分支下的hello.txt) 同时磁盘里的文件内容也被修改,如下图: ④合并分支 肯定先要切换到master分支,执行合并命令。
⑤冲突合并问题 冲突产生的原因: 比如,我们先在master分支下,通过vim hello.txt。修改文件(倒数第二行增加一些内容)。如下图: 接在切换到hot-fix分支,----- git checkout hot-fix 切换到master分支,分支合并----- git merge hot-fix 此时日志提示在hello.txt里产生了冲突,自动合并存在问题。 此时再通过git status查看本地库状态。如下图 因此为了解决冲突需要我们手动合并代码。 先vim hello.txt打开文件,发现文件中已经标出了哪一块发生了冲突。如下图。
保留添加的内容,保存退出即可。如下图: 但要特别注意的是,此时提交本地库的时候不可以加文件名,否则会报错。因为两个分支都修改了hello.txt,并且处于合并状态没有终止。如果带文件名就会报错。如下图。
此时再查看 cat hello.txt, 注意:合并只会修改master分支的内容,hot-fix分支的内容不会被修改。 验证:切换到hot-fix 分支查看,发现确实如此。 6,Git团队协作机制6.1,团队内协作举例分析团队内协作: 作为华山派掌门人,岳不群在他的本地库里开发了一套《华山剑法》,开发完成之后岳不群总感觉此剑法差点火候,所以想让自己的大弟子—令狐冲帮忙完善一下剑法中的中的细枝末节。 于是岳不群使用push命令把自己的《华山剑法》推送到代码托管中心(如github、gitee),于是代码托管中心多了一个远程库,接到师傅命令后,大弟子令狐冲立刻把远程库clone克隆(完整复制)到自己的本地库中去。 经过多天苦苦完善后,令狐冲把自己完善后的版本push到了远程库里,岳不群就可以使用pull命令拉取远程库里的代码,更新自己的本地库。 最终得到终极版的华山剑法!!! 当然,他们需要是同一个团队才可以向此远程库push代码. 6.2,跨团队协作
令狐冲一看,感觉十分头大。这么高深的剑法只有东方不败大佬才能进行优化。但东方不败不是我们团队里的,而且作为堂堂日月神教教主,东方不败肯定不愿意来我们华山派这个小团队。于是和东方不败进行了跨团队协作。 于是,东方不败就开始工作。他先在代码托管中心里把岳不群的远程库fork(叉过去)到自己的远程库里边,接着东方不败把自己的远程库内容clone到本地库,开始修改华山剑法,经过多天努力,在本地库里共提交了三个版本,最终选择v3版本,于是将其push到东方不败自己的远程库里。 接下来的工作就是,把远程库的内容发送给岳不群。东方不败需要先发送一个pull request请求给岳不群,告诉岳不群:修改好了,已经可以拉取了。 岳不群心想:不急,我要先看看你的代码,如果真比我的原版好。我岳不群直接拉取,无话可说。这时岳不群就先对修改内容进行审核,审核完成之后惊叹道:不愧是东方不败大佬,修改完的版本也太强了吧!于是把东方不败修改的代码和自己的代码进行merge合并。之后岳不群就可以把远程库里的内容通过pull拉取到本地库。 这时岳不群就可以修炼已经修改好的《华山剑法》,和岳不群同处一个团队的令狐冲也可以修炼此剑法。 本笔记根据尚硅谷Git视频教程整理。大家可以点击下方链接进行学习,内容若有不当之处也欢迎大家批评指正。 链接: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 19:06:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |