基础介绍
四个区域 | 位置 |
---|---|
工作区(Working Directory) | .git所在的目录 |
暂存区(Staging Area/index) | .git/index |
本地仓库(Local Repository) | .git/object |
远程仓库(Remote Repository) |
文件状态 | |
---|---|
未跟踪 (Untrack) | 新创建但没有被git管理的文件 |
未修改 (Unmodified) | 被git管理但没有变化的文件 |
已修改(Modified) | 修改了但是没有保存到暂存区的文件 |
已暂存(Staged) | 修改后已经保存到暂存区的文件 |
已提交(Committed) | 把暂存区的文件提交到本地仓库后的状态 |
命令介绍
设置Git全局配置,设置用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email mail@example.com"
记住用户的用户名和密码(有安全风险)
$ git config --global credential.helper store
在内存中缓存凭据,而不是存储在文件中(有安全风险)
$ git config --global credential.helper cache
使用 SSH 密钥通常被认为更安全,因为它不涉及在本地存储密码
列出全局 Git 配置的所有设置
$ git config --global --list
初始化仓库方式1
mkdir code
cd code
git init -b "main"
初始化仓库方式2
git clone <url>
查看仓库状态
git status
添加到暂存区
git add
可以添加所有文件
git add .
添加文件可以使用通配符
git add *.txt
提交(暂存区的文件),一般直接 -m “提交信息”
git commit -m "commit message"
查看仓库提交历史记录
git log
查看简洁的仓库提交历史记录
git log --oneline
回退版本,ID是回退到的那个版本
git reset + --模式 + 版本ID
//比如回到ID为5af90b8的版本
git reset --mixed 5af90b8
//或者回退到上个版本 用 HEAD^ 表示上个版本
git reset --mixed HEAD^
回退版本,保留工作区跟暂存区内容
git reset --soft
回退版本,不保留工作区跟暂存区内容
git reset --hard
回退版本,只保留工作区内容,不保留暂存区内容,不加参数默认此模式
git reset --mixed
查看操作历史记录,可回溯误操作
git reflog
查看工作区和暂存区之间的差异
git diff
查看工作区和本地仓库之间的差异
git diff HEAD
查看暂存区和本地仓库之间的差异
git diff --cached
git diff --staged
查看不同版本之间的差异(后面加两个版本ID)
git diff b270efb HEAD
查看上一个版本与当前版本之间的差异
//两种方式都可
git diff HEAD^ HEAD
git diff HEAD~ HEAD
//提交之前的第二个版本与当前版本比较
git diff HEAD~2 HEAD
//单独比较不同版本的某一个文件
git diff HEAD^ HEAD <file>
查看不同分支之间的差异
git diff zhagnsan lisi
查看暂存区文件内容
git ls-files
同时删除暂存区跟工作区文件,删除完提交
git rm <file>
删除暂存区,但保留工作区
git rm --cached <file>
递归删除某个目录下的所有子目录和文件
git rm -r*
.gitignore 文件匹配规则
1.添加要忽略的文件名
2.星号*通配符,比如 *.log
3.问号?匹配单个符
4.中括号[]匹配列表中的单个字符,比如[abc] 表示 a/b/c
5.文件夹用/结尾,比如 temp/
6.两个星号**表示匹配任意的中间目录
7.中括号可以使用短中线连接,比如[0-9]表示任意一位数字,[a-z]表示任意一位小写字母
8.感叹号!表示取反
# 跟踪所有的 lib.a,即便你在前面忽略了 .a文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
应该忽略的文件:
系统或者软件自动生成的文件
编译产生的中间文件和结果文件
运行时生成的日志文件,缓存文件,临时文件
涉及身份密码口令密钥等敏感信息文件
配置SSH
ssh-keygen -t rsa -b 4096 -C "这里是可选的注释"
也可以直接这样
ssh-keygen -t rsa -b 4096
命名密钥文件名
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
密码是可选的,直接回车不设置密码,设置密码需要重复验证一次
Enter passphrase (empty for no passphrase):
关联本地仓库跟远程仓库
git remote add origin https://gitee.com/your-username/your-repository.git
验证是否成功添加远程仓库
git remote -v
拉取远程仓库内容,如果是在一个不同的分支,main为实际使用的分支名称
git pull origin main
推送本地仓库到远程仓库,main为实际使用的分支名称
git push -u origin main