Git的基本使用

1.了解Git

Git是目前最流行的版本控制系统

image-20240708155613262

快照:

Git的快照记录类似于备份,是在原有文件版本上重新生成一份新的文件。如果文件没有修改,Git不再重新存储该文件,而是保留一个链接指向之前存储的文件。

本地执行:

image-20240708160534532

Git中的三个区域

1.工作区

2.暂存区

3.Git仓库

Git中的三种状态

1.已修改(modified)

2.已暂存(staged)

3.已提交(committed)

image-20240708161202966

Git基本工作流程

1.在工作区中修改文件

2.将你想要下次提交的更改进行暂存

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

image-20240708161407734-1720494775118-1

2.Git的基本操作

1.获取Git仓库的两种方式

image-20240708161535799

2.在现有目录中初始化Git仓库

对于一个尚未进行版本控制的项目,想用Git控制他,步骤如下

(1)项目根目录中鼠标右键打开”GitBash

(2)执行

1
git init

命令将当前目录转为Git仓库

git init 命令会image-20240708161759282创建一个名字为.git的隐藏目录,这个.git目录就当前项目的Git仓库。不可删除

3.检查文件状态

命令:

1
2
3
4
git status
# 以简短的方式显示文件状态
git status -s # 或
git status --short

状态1:未跟踪

状态2:已跟踪{

1.已修改

2.已暂存

3.已提交

}

4.跟踪新文件

命令:

1
git add + 文件名

如果文件被跟踪,可以显示绿色A标记(精简查看文件状态)

5.提交更新(本地)

命令:

1
git commit [-m]

比如:

git commit -m ‘测试提交更新’

-m是可选项,可以说明本次提交的简短说明

基本上一套流程是把未跟踪的文件添加到暂存区(git add +文件名)然后通过git commit 往仓库提交

6.对已提交的文件进行修改

如果对已经提交的文件进行修改,那么它的状态会变成已修改但未提交。简短状态是文件名前面有个红色M

命令:

1
git status -s

7.暂存已修改文件

如果对于已提交的文件进行了修改,若是暂存这个修改的话需要再次运行 git add 命令,该命令有如下功效:

image-20240708164159569

此时查看文件状态应该是一个绿色的M

8.提交已暂存的文件

再次输入命令 **git commit -m ‘提交消息’**,即可将暂存区的快照记录提交到Git仓库中

9.撤销对文件的修改

概念:把工作区中对应文件的修改,还原成Git仓库中所保存的版本

image-20240709122012719

命令:

1
git checkout -- 文件名

本质:用Git仓库中保存的文件来覆盖工作区中指定的文件

10.向暂存区中一次性添加多个文件

命令:

1
git add .

11.从暂存区移除对应的文件

命令:

1
git reset HEAD + 文件名

移除所有暂存区文件:

1
git reset HEAD .

12.跳过暂存区

image-20240709122950637

1
git commit -a -m '提交消息'

13.移除文件

1.从工作区和Git仓库中同事移除文件

命令

1
git rm -f  + 文件名 

2.只从Git仓库中移除文件,保留工作区对应的文件

命令

1
git rm --cached + 文件名

14.Git忽略文件

image-20240709123919440

.gitignore的格式规范

image-20240709124015539

glob模式

image-20240709124154847

举个使用例子
image-20240709124345304

14.查看Git提交历史
命令

1
git log

具体用法和功能如下

image-20240709124516351

14.回退到指定版本

1
2
3
4
5
6
7
8
9
10
11
#在一行上展示所有的提交历史
git log --pretty=oneline

#根据指定的提交ID回退到指定版本
git reset --hard <CommitId>

#在旧版本中如果还想查看完整的提交历史使用下面命令
git reflog --pretty=online

#再次根据最新的提交ID,跳转到最新版本
git reset --hard <CommitId>

3.Git分支

目的:防治项目干扰,提高协同开发的体验,有益于团队协作。

1.master主分支

在项目根目录进行初始化操作时,git会自动帮我们创建一个分支,被称为主分支。

作用是:用来保存和记录珍项目已完成的功能代码

2.功能分支

概念:从主分支上临时分叉出来的,负责一些新功能的开发,当开发完毕后,需要将该功能分支与主分支合并。

3.查看分支

命令

1
git branch

注:分支前面的*表示当前所在的分支

4.新建分支

命令

1
git branch 分支名称

新分支的代码是和主分支一样的。

5.切换分支

命令:

1
git checkout + 切换分支的名字

6.快速创建和切换指定分支

1
2
3
# -b表示创建一个新分支
# checkout表示切换到工行拆新建的分支上
git checkout -b 分支名称

image-20240709154539091

7.合并分支

1
2
3
4
5
# 切换到主分支
git checkout master

#在主分支上运行下列命令,将子分支的代码合并到主分支上
git merge + 子分支名称

image-20240709155608993

注意:

image-20240709155719854

检验发现,已经合并

image-20240709160037453

8.删除分支

命令

1
git branch -d + 分支名称

9.遇到冲突时合并分支

情景:相同的文件,在不同的分支中进行了修改。

解决冲突后再次提交即可。

10.将本地分支推送到远程仓库

1
2
3
4
5
6
7
8
# -u 表示把本地分支和远程分支进行关联,只需要第一个推送即可
git push -u 远程仓库的名字 本地分支的名称:远程分支别名

#例子
git push -u origin payment:pay

#如果希望远程分支和本地分支名称保持一致,可以如下写法
git push -u origin payment

如果远程仓库已经存在那么只需要使用

1
git push origin 分支名称即可

11.查看远程仓库中所有分支列表

命令

1
git remote show 远程仓库名称

12.跟踪分支

image-20240709171258453

13.拉取远程分支的最新代码

1
2
#拉取
git pull

14.删除远程分支

1
2
3
4
5
# 删除远程仓库中,指定名称的远程分支
git push 远程仓库名字 --delete 远程分支名称

#例子
git push origin --delete register

4.关于Github

ssh连接github生成密钥命令

1
ssh -keygen -t rsa -b 4096 -C '注册GitHub的邮箱'

之后生成的密钥会在C:\Users\用户名文件夹.ssh

目录生成id_rsa和id_rsa.pub

配置ssh

image-20240709132422343

上传过程

image-20240709132657970

5.命令总结

命令总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#初始化与配置
git init:在当前目录初始化一个新的Git仓库。
git config:配置Git的设置,如用户名、邮箱等。
#克隆与获取
git clone [repository]:克隆一个远程仓库到本地。
git fetch:从远程仓库下载最新的分支和标签信息,但不自动合并。
git pull:从远程仓库下载并尝试自动合并到当前分支。
#添加与提交
git add [file]:将指定文件添加到暂存区准备提交。
git add .:添加当前目录下的所有修改过的文件到暂存区。
git commit -m "commit message":提交暂存区的更改到本地仓库,需附带提交信息。
#查看状态与历史
git status:查看工作目录和暂存区的状态。
git diff:显示工作目录中未暂存的更改。
git log:查看提交历史,默认显示所有提交的详细信息。
git log --oneline:以简洁的一行格式查看提交历史。
#分支管理
git branch:查看本地分支。
git branch [branch-name]:创建新分支。
git checkout [branch-name]:切换到指定分支。
git checkout -b [branch-name]:创建并切换到新分支。
git merge [branch]:合并指定分支到当前分支。
git branch -d [branch-name]:删除本地分支。
git push origin --delete [branch-name]:删除远程分支。
#远程操作
git remote add origin [url]:添加远程仓库并且这个远程仓库的名字是origin,可以更改这个名字。
git remote set-url origin [new-url]:修改远程仓库地址。
git remote -v:查看远程仓库信息。
git push:推送本地分支到远程仓库。如果你没有指定分支,默认情况下它会推送当前分支的数据到远程仓库中具有相同名称的分支。
git push origin [branch-name]:推送特定分支到远程仓库。
git pull <远程仓库名> <分支名> 可以从远程仓库指定分支拉取
#其他常用命令
git stash:保存当前的工作目录和索引状态,用于临时存储。
git stash apply/pop:应用或弹出最近一次保存的stash。
git reset [file]:取消暂存指定文件的更改。
git reset --hard:撤销工作目录中所有未提交的更改,回到上次提交的状态。
git cherry-pick [commit]:将指定提交应用于当前分支。

关于Git的一些使用感受

1.如果没有本地仓库,那么请先初始化本地仓库

1
git init

2.有了本地仓库,请先将自己的代码放在本地仓库上进行提交或者修改

1
2
3
4
# 前提是 通过git branch 查看我们已经位于了本地仓库
git add <文件名> # 把某个文件加入暂存区
#或者 git add . 把所有文件都加入暂存区
git commit [-m] # 提交,-m可选,表示注释

3.如果想在远程仓库上分享自己的项目,请先把远程仓库和本地仓库关联起来,本地先提交,然后把本地在推送到远程仓库

1
2
3
4
5
6
7
#添加远程仓库
git remote add origin [url]
#关联本地和远程仓库
git push -u 远程仓库名称(比如我的:origin) 本地仓库分支名称:远程仓库分支名称
#如果这时,你本地已经提交了,那么远程仓库应该就是和本地一致最新的了
#如果没提交
git push origin 远程分支名称 # 这样即可提交,关联后的操作