
Git基本概念
Working Directory 工作区 Disk:你正在编辑的文件
Index 暂存区 Temp:用 git add 放入的、即将提交的改动
Repository 本地仓库 Local:已经提交到的历史记录
Remote 远程仓库 Remote:云端的代码库
HEAD:当前检出的分支的“游标”
Git配置
- 查看配置:
git config --list - 设置名字:
git config --global user.name "coni" - 设置邮箱:
git config --global user.email "cn@coni.top" - 查看git版本号:
git version
在工作目录初始化git
- 在当前目录初始化git:
git init - 查看git状态:
git status
工作区->暂存区
- 添加当前目录全部文件到暂存区(新文件+修改):
git add . - (新文件+修改+删除):
git add -u - 添加单个文件:
git add <文件名> - 撤销所有已暂存 的文件:
git reset
暂存区->本地仓库
- 将暂时保持的提交固定成一个版本:
git commit -m "提交说明"(git commit)会打开vim来填写提交说明
查看日志
- 查看提交日志:
git log - 查看简短提交日志:
git log --oneline git log后,Git 会进入分页器模式:q退出Space向下翻一页Enter向下翻一行b向上翻一页y向上翻一行g跳到第一行G跳到最后一行- 查看HEAD指针的移动记录:
git reflog
回退版本
- 显示提交id:
git log --oneline - 退回到<id>的版本:
git reset --hard <id>注意--hard硬重置版本即覆盖所有变更,包括HEAD、暂存区、工作区,也会清空后面的版本 --hard会让暂存区和工作区都回到这个 commit 的状态--soft会让HEAD指针回退,但是保留工作区和暂存区的修改--mixed会让工作区保留修改,但清空暂存区- 退回到上一个提交:
git reset --hard HEAD - 恢复单个文件到上个提交状态:
git checkout HEAD -- <文件名> - 把工作区所有文件恢复到最近一次 commit 的状态:
git restore . - 创建一个新的提交,用来抵消之前的修改(这样不会改写历史):
git revert <commit> - 创建一个新提交,撤销最近一次提交:
git revert HEAD
分支:复制当前版本
- 创建分支:
git branch <分支名字> - 创建并切换到该分支:
git checkout -b <分支名字> - 切换分支:
git checkout <分支名字> - 查看本地和远程所有分支:
git branch -a - 删除分支:
git branch -D <分支名字> - 重命名分支:
git branch -m <分支名字> - 合并<分支>到当前分支上:
git merge <分支名字>(git add和git commit来解决冲突) - 将当前分支的提交,重新接到
<分支名>的最新提交后面:git rebase <分支名>
比对
- 比较工作区和暂存区文件差异:
git diff
下载
- 下载到本地:
git clong <仓库地址>
查看远程仓库
- 查看远程仓库:
git remote -v
拉取
git pull <远程仓库名> <分支名>- 使用当前分支已设置的上游:
git pull - 从远程origin仓库拉取main分支代码,并自动合并到本地当前分支:
git pull origin main origin是 Git 给克隆下来的远程仓库起的默认名字
上传
git push <远程仓库名> <分支名>- 上传到当前分支已设置的上游:
git push - 将本地main分支推送到远程仓库:
git push origin main
设置git忽略文件
在仓库根目录创建 .gitignore 文件
# ================================
# C++ 项目通用忽略
# ================================
# 编译产物
*.o
*.obj
*.lo
*.slo
*.ko
*.dll
*.so
*.dylib
*.exe
*.out
*.app
# 预编译头文件
*.gch
*.pch
# 库文件
*.lib
*.a
*.la
# 调试/日志文件
*.pdb
*.idb
*.ilk
*.log
*.tmp
*.swp
# CMake 生成目录
/CMakeFiles/
/CMakeCache.txt
/cmake_install.cmake
/Makefile
/build/
/bin/
/lib/
# Visual Studio
.vs/
*.vcxproj.user
*.VC.db
*.VC.VC.opendb
Debug/
Release/
x64/
ipch/
# Visual Studio Code
.vscode/
# Qt Creator
*.pro.user
*.qmake.stash
# CLion / JetBrains
.idea/
# 操作系统垃圾文件
.DS_Store
Thumbs.db
- 查看被忽略的文件列表:
git status --ignored - 检测单个文件是否忽略:
git check-ignore -v 文件路径
