Git基础入门笔记(新手入门实现版本更新,项目分支管理)

Git基础入门笔记(新手入门实现版本,项目分支管理)

第一章 Git安装

本入门笔记基于window平台

下载地址:https://git-scm.com

腾讯软件下载地址:腾讯软件中心-海量软件高速免费下载-软件搜索结果 选择第一个就行了

在cmd命令行配置

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱m"
#检查信息是否写入成功
git config --list 

第二章 Git基础(git的三种状态)

(1)Git 是什么?

那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余。 在学习 Git 时,请尽量理清你对其它版本管理系统已有的认识,如 CVS、Subversion 或 Perforce, 这样能帮助你使用工具时避免发生混淆。尽管 Git 用起来与其它的版本控制系统非常相似, 但它在对信息的存储和认知方式上却有很大差异,理解这些差异将有助于避免使用中的困惑。

(2)三种状态

现在请注意,如果你希望后面的学习更顺利,请记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能处于其中之一: 已提交(committed)已修改(modified)已暂存(staged)

  • 已修改表示修改了文件,但还没保存到数据库中。

  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

图片来源 ydlclass.com

工作区、暂存区以及 Git 目录。

工作目录、暂存区域以及 Git 仓库.

工作区是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。

基本的 Git 工作流程如下:

  1. 在工作区中修改文件。

  2. 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。

  3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

(3)Git 保证完整性

Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。

Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样:

24b9da6552252987aa493b52f8696cd6d3b00373

第三章 实操开始(简单快速上手)

简单操作

在自己方便的盘中新建一个文件夹,这里以MyProject为例,注意路径中不要含有中文字符。打开cmd命令窗口,操作如下:

找一个空文件夹:

点击鼠标右键  git bash here

开始操作

# 初始化 仓库
$ git init
Initialized empty Git repository in E:/Git/MyProject/test/.git/
​
    
# 添加一个文件
$ touch a.txt
$ echo 123 > a.txt
    
// 提交至缓存区
$ git add a.txt
​
​
#提交到本地仓库,当前版本f1
$ git commit -m 'f1'
[master (root-commit) ac41d06] first
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt
​

对现在的操作区继续进行进行修改,更新版本。

#添加一个文件
$ touch b.txt


#向文本内添加一些内容
$ echo hello git >> b.txt

#上传到暂存区
$ git add .
#这个警告的意思是window下的换行跟linux不一样,但是Linux支持window的这个换行,git是基于Linux系统开发的
warning: in the working copy of 'b.txt', LF will be replaced by CRLF the next time Git touches it

#提交一个新的版本
$ git commit -m 'second'
[master 241c277] second
 1 file changed, 1 insertion(+)

#查看当前版本
$ git log
commit 241c27761e6da5765069be92e83ea9468e09799b (HEAD -> master)
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:46:06 2024 +0800

    second

commit dfb259f890fcc2915ea3fc8a3181ee5701974836
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:25:52 2024 +0800

    f1

commit eb1c1d552ba71680455d447c366ea016b5373f67
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:21:56 2024 +0800

    master

版本回退,退回之前的版本

有关回退的命令有两个:reset 和 checkout

注:快照即提交的版本,每个版本我们称之为一个快照。

现在我们利用 reset 命令回滚快照,并看看 Git 仓库和三棵树分别发生了什么。

执行 git reset HEAD~ 命令:

注:HEAD 表示最新提交的快照,而 HEAD~ 表示 HEAD 的上一个快照,HEAD~~表示上上个快照,如果表示上10个快照,则可以用HEAD ~10

此时我们的快找回滚到了第二棵数(暂存区域)

记住:head永远指向当前分支的当前快照

现在两个版本

#查看当前版本
$ git log
commit 241c27761e6da5765069be92e83ea9468e09799b (HEAD -> master)
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:46:06 2024 +0800

    second

commit dfb259f890fcc2915ea3fc8a3181ee5701974836
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:25:52 2024 +0800

    f1

commit eb1c1d552ba71680455d447c366ea016b5373f67
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:21:56 2024 +0800

    master

执行版本回退

#进行版本回退
$ git reset head~
Unstaged changes after reset:
M       b.txt
#查看当前版本,second已经没有了
$ git log

commit dfb259f890fcc2915ea3fc8a3181ee5701974836 (HEAD -> master)
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:25:52 2024 +0800

    f1

commit eb1c1d552ba71680455d447c366ea016b5373f67
Author: hanFei <2035346428@qq.com>
Date:   Sat Jul 27 15:21:56 2024 +0800

    master

基础命令

我们怎么知道哪些文件是新添加的,哪些文件已经加入了暂存区域呢?总不能让我们自己拿个本本记下来吧? 当然不,作为世界上最伟大的版本控制系统,你能遇到的囧境,Git 早已有了相应的解决方案。随时随地都可以使用git status查看当前状态

$ git status

查看历史记录

git log

分支操作

假设你的大项目已经上线了(有上百万人在使用),过了一段时间

你突然觉得应该添加一些新的功能,但是为了保险起见,你肯定不能在当前项目上直接进行开发,这时候你就有创建分支的需要了。

对于其它版本控制系统而言,创建分支常常需要完全创建一个源代码目录的副本,项目越大,耗费的时间就越多;而 Git 由于每一个结点都已经是一个完整的项目,所以只需要创建多一个“指针”(像 master)指向分支开始的位置即可。

创建一个新的分支

$ git branch feature-f1

切换到新的分支

$ git checkout feature-f1 Switched to branch 'feature-f1'

查看当前现有的分支

$ git branch

*feature-f1 
master

合并分支,把feature中的内容合并到master中

#首先在在feature中添加文件

qq@LAPTOP-HNECD6N3 MINGW64 /e/Git/MyProject/test (feature-f1)
$ touch b.txt
​
qq@LAPTOP-HNECD6N3 MINGW64 /e/Git/MyProject/test (feature-f1)
#加到暂存区
$ git add .
​
qq@LAPTOP-HNECD6N3 MINGW64 /e/Git/MyProject/test (feature-f1)
#提交
$ git commit -m 'f1'
[feature-f1 dfb259f] f1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 b.txt

切换到主分支进行合并

qq@LAPTOP-HNECD6N3 MINGW64 /e/Git/MyProject/test (feature-f1)
#切换分支
$ git checkout master
Switched to branch 'master'
​
qq@LAPTOP-HNECD6N3 MINGW64 /e/Git/MyProject/test (master)
#对feature-f1进行合并
$ git merge feature-f1
Updating eb1c1d5..dfb259f
Fast-forward
 b.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 b.txt

可以看到master中多了一个b.txt

# ls  查看当前目录下的文件
$ ls
a.txt  b.txt
 

合并完成之后,不需要这个分支了,我们可以进行删除分支

#删除分支
$ git branch -d feature-f1
Deleted branch feature-f1 (was dfb259f).
​
qq@LAPTOP-HNECD6N3 MINGW64 /e/Git/MyProject/test (master)
#查看当前分支,发现feature-f1已经删除
$ git branch
* master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值