Git
安装与配置
下载对应操作系统的
git
配置用户名
1
git config --global user.name "Scarf"
配置邮箱
1
git config --global user.email "1311522701@qq.com"
保存用户名和密码,不必每次都输入
1
git config --global credential.helper store
查看
git
的配置信息1
git config --global --list
生成
ssh
密钥1
2
3cd # 回到用户根目录
cd .ssh
ssh-keygen -t rsa -b 4096 # 生成密钥,回车三次,会生成 id_rsa、id_rsa.pub 两个文件复制
id_rsa.pub
文件内容,配置进Gitee
或Github
--global
表示对所有仓库生效。
新建仓库
将一个目录变成 Git 可以管理的仓库。
方式一:在本地新建。新建一个文件夹,之后进入文件夹执行初始化命令
git init
或者执行git init catalogName
新建方式二:克隆一个已经存在的仓库
1
git clone https://gitee.com/wjsr/demo.git
Git 仓库中存在隐藏 .git
文件夹,如果被删除掉,就会变成一个普通目录。
工作区域
工作区
:当前正在工作的项目文件夹,包含了项目的所有文件和子文件夹。暂存区
:用于临时存储准备提交到版本控制的更改。存在于.git
文件夹下的index
文件中。本地仓库
:存储在本地计算机上的 Git 仓库。它包含了项目的完整历史记录和所有的文件。存在于.git
文件夹下的objects
文件夹中。
文件状态
未跟踪
:新创建的,还未被 Git 管理起来的文件。未修改
:文件已被管理,但是还未被修改。已修改
:文件已被修改,但是还未添加进暂存区。已暂存
:未跟踪及已修改的文件被提交进暂存区后的状态。
添加和提交文件
新添加的文件为未跟踪状态
将未跟踪文件
file1.txt
提交进暂存区创建第二个未跟踪文件
将暂存区的文件提交进本地仓库
执行
commit
后只有暂存区中的文件会被提交进仓库,因此file2.txt
不会被保存下来。使用通配符批量提交
txt
为后缀的文件到暂存区添加所有文件到暂存区
1
git add .
另外,Mac
用户可在 ignore
文件中添加以下两行忽略 .DS_Store
文件:
1 | .DS_Store |
版本回退
git reset --soft
保留工作区以及暂存区中的文件。
git reset --hard
丢弃工作区和暂存区中的文件。
git reset --mixed
保留工作区中的文件,丢弃暂存区中的文件。
如下实例:
1 | echo "1" > file1.txt |
执行命令 git log --oneline
查看历史 commit
情况:
git reset --soft fe84232
命令执行后将回退到"新建文件file1"
版本,此时会保留工作区中的 file2
、file3
文件以及暂存区的 file2
、file3
;若使用 hard
则都不会保留;使用 mixed
只会保留工作区中的 file2
、file3
。当然不管使用哪种方式, file1
都会存在于工作区和暂存区中。
可使用 git ls-files
查看暂存区中的文件,注意执行 commit
后暂存区中的文件是不会被清空的。
Git 中不止版本可以回退,命令也行。先使用 git reflog
查看历史命令,再使用上方相应 reset
命令进行回退。
差异查看
git diff
作用:
- 查看工作区、暂存区和本地仓库之间的差异;
- 查看不同版本之间的差异;
- 查看不同分支之间的差异。
使用:
比较工作区和暂存区之间的差异
1
git diff
比较工作区和本地仓库的差异
1
git diff HEAD
比较暂存区和本地仓库的差异
1
git diff --cached
比较两个版本之间的差异
1
2
3git diff 419557c HEAD # HEAD 指向的是最新版本,可代替提交 ID 来表示
git diff HEAD~ HEAD # HEAD~ 表示上一个版本
git diff HEAD~2 HEAD file1.txt # HEAD~2 表示上上个版本,跟上文件名可以比较指定文件的差异比较两个分支的差异
1
git diff branch_name1 branch_name2
删除文件
把文件从工作区和暂存区中删除
1
git rm filename
仅删除暂存区中的文件
1
git rm --cached filename
递归删除工作区和暂存区中当前目录及其所有子目录和文件
1
git rm -r *
最后不要忘记提交。
忽略文件
.gitignore
隐藏文件,按行从上到下进行匹配。
- 忽略某个文件,直接新增一行输入文件名;
- 使用通配符,
*
匹配任意字符、?
匹配单个字符,如*.log
忽略所有日志文件; - 忽略文件夹,如
temp/
忽略任何目录下的temp
文件夹,必须斜杠结尾; #
号开头的行表示注释。
其他匹配规则略。
文件此前若已在本地仓库中需先将文件从仓库中删除才会被忽略,否则文件一样会被跟踪着。
1 | git rm --cached filename |
推送拉取
将本地仓库内容推送到远程仓库
1
git push <远程仓库名> <本地分支名>:<远程分支名> # 远程仓库名默认是 origin
将远程仓库内容拉取下来
1
git pull <远程仓库名> <远程分支名>:<本地分支名>
分支
创建分支
1
git branch branchName
查看所有分支
1
git branch
切换分支
1
git switch branchName
合并分支
1
git merge dev # 在 main 分支中执行,会将 dev 分支合并到 main 中
删除分支
1
git branch -d branchName # 小写 d 用于删除已被合并的分支,大写则强制删除
合并冲突
分支合并冲突时,手动修改冲突文件即可。
撤销合并
1
git merge --abort