Git基本使用

Git基础入门

一、Git原理简要

4个区域

Workspace:工作区 Stage:暂存区 Repository:本地仓库 Remote:远程仓库

basic-usage.svg

basic-usage-2.svg

1.下载与安装:

https://git-scm.com/download/

2.使用入口

win:右键菜单—git bash

mac:终端窗口

3.基础配置

首次使用添加身份说明,使用以下两个命令:

1
2
3
$ git config --global user.name "你的昵称"

$ git config --global user.email 邮箱@example.com

创建仓库

① 在项目文件夹下使用git bash输入

1
$ git init

② 使用他人项目创建仓库

1
$ git clone 项目url

二、状态与提交版本

文件四种状态

image-20230502111811562

1.跟踪

跟踪文件

1
$ git add <name>

跟踪当前目录

1
$ git add .

2.取消跟踪

rm删除

1
$ git rm <name>

保留但不跟踪

1
$ git rm-cache <name>

3.文件状态修改

修改后缓存 / 取消缓存

将修改文件缓存

1
$ git add <file-name>

取消缓存

1
$ git reset HEAD <name>

提交缓存的修改

1
$ git commit -m '本次提交描述'

4.$ git commit 具体操作

① $ git commit 进入提交界面,

​ 按" i "键进入输入模式后输入本次提交详情,

​ 然后esc退出编辑模式, 按" : "进入命令栏, 输入"wq"保存并退出.

② $ git commit -m ’ 你对提交内容的描述 ’

③ $ git commit -a

​ 连带未暂存文件一起提交

​ git commit -am ‘提交描述’

三、远程仓库

新建远程仓库

1.链接远程仓库到本地

本地添加远程仓库

1
$ git remote add origin 远程仓库链接

2.重命名仓库

查看远程仓库

1
$ git remote

修改远程仓库名

1
$ git remote rename <name> <new name>

3.推送本地代码到远程仓库

推送

1
$ git push 仓库名 分支名

4.验证

①使用token令牌验证

②简单方式:SSH鉴权

四、分支

1.分支的概念

image-20230502114331064

每次提交时会生成一个提交对象,每个提交对象有独一无二的哈希值,分支就是一个包含该哈希值的文件

image-20230502114425973

可以理解为分支就是某次提交的一个指针,可以在一个提交对象上新建多个分支

image-20230502114643286

初始化本地仓库时就会新建一个master分支

image-20230502114845388

每次进行一次提交时,分支也会跟着提交对象向前移动

image-20230502115127464

在第二次提交对象上新建一个分支

image-20230502115345401

之后的提交就会有不同的分支

image-20230502115507549

2.经典git模型

image-20230502115831722

3.分支操作

创建分支名

1
$ git branch 分支名

查看分支名

1
$ git branch --list

切换分支

1
$ git checkout 分支名

五、分支合并

1.无冲突合并

在 合并至 的分支使用

1
$ git merge 要合并的分支

2.分支冲突 merge conflict

将 分支2 合并到 master分支 时, 与 分支1 冲突了. 原因是 分支1 和 分支2 修改了同一处内容.

查看哪里有冲突

1
$ git status 

$ vi 到冲突文件中, 选择一个分支的内容保留下来, 保存退出

1
2
3
4
5
$ git add 文件名

$ git commit -m '提交描述'

$ git log --all --graph 查看合并状态

六、推拉与远程跟踪分支

1.推送

1
$ git push 仓库名 分支名

或者

1
$ git push -u 仓库名 分支名

第一次使用 -u 指定推送目标后, 此后可直接使用git push

2.拉取

$ git fetch

$ git checkout 远程分支

$ git checkout -b 本地分支名 远程分支

$ git checkout --track 远程分支

七、贮藏功能

1.git stash

代码写到一半有13事儿来了, 要切换到其他分支是不允许的, 可以把当前分支修改的东西储藏起来再切换.

2.git stash apply

切换回来后, 恢复之前存储的内容

3.多次存储

a.回看存储记录

$ git stash list

b.恢复指定记录

$ git stash apply stash@{记录号}

c.恢复并删除记录

①恢复并删除最近一次记录

$ git stash pop

删除指定记录

$ git stash drop @stash{记录号}

八、重置与变基

1.reset(重置)

a. head

head: 当前的提交

head~: 上次的提交

head~2: 倒数第二次的提交

b. --soft

仅取消commit操作, 把修改文件暂存.

如果不加 --soft 则表示恢复到暂存前, 修改的内容是存在的.

c. --hard

取消暂存, 还取消修改内容, 彻底回到上次提交的状态.

不推荐使用, 可能丢失数据.

2.rebase(变基)

a.将B分支的修改移动到A分支

git checkout B

git rebase A

b.注意事项

注意他人在远程分支二次开发时, 审慎使用变基