一、打开 Git


二、Git Bash 基础命令
Shift+Insert 是复制快捷键。当显示不全出现冒号时按 Enter 显示,最后按 q 退出。
cd: 切换目录pwd: 显示当前路径ls/ll: 显示当前目录信息clear: 清屏touch: 创建文件mkdir: 创建目录rm: 删除文件rm -r: 删除目录mv: 移动文件到目录下history: 查看历史命令
三、配置 Git
查看配置

系统配置

用户配置
用户配置信息相当于身份标识。

系统配置文件位置:

打开和 system 配置一样:

用户配置信息:

个人配置信息:

四、仓库搭建

.git 是隐藏文件夹。

支持远程仓库克隆:


五、文件操作和状态
创建 Git 仓库和 main.cpp 文件:

查看文件状态,未被跟踪:

使用 add 后文件被跟踪:

git commit -m "" 提交到本地仓库并附加备注:

进入 Vim 修改文件内容,用 cat 查看:

按 i 或 Insert 键进入编辑模式:

按 Esc 退出编辑模式,输入 :wq 保存退出:

:q! 强制退出不保存:

修改后状态变为 modified:

使用 git add . 和 git commit -m "" 添加到本地仓库:

也可一步到位添加:

六、忽略文件
.gitignore 用于设置忽略规则:

忽略文件规则示例:


.vs 缓冲文件和 x64 编译文件已被忽略,无法添加:

七、Gitee 的使用
1. 添加公钥
注册账号后设置公钥:


在 C 盘用户目录下新建 .ssh 文件夹:

在新建文件夹下打开 Git Bash:

生成密钥对,pub 结尾的是公钥:

将公钥内容复制到 Gitee SSH 设置中:

粘贴确定即可:

2. 创建仓库



八、VS 中使用 Git



将仓库 HTTPS 地址复制到 URL 栏:



首次需添加远程仓库:

需添加到暂存区或忽略文件。首次推送需验证 Gitee 账号:


九、Git 分支常用命令
先将文件添加到本地仓库。
git branch: 添加或查看分支git checkout: 切换分支

git checkout -b: 同时创建和切换分支git branch -d: 删除分支

切换到另一分支修改 bug,回到主分支合并:
git merge --no-ff 分支名: 完整合并(创建新节点)git merge 分支名: 快速合并(HEAD 直接指向分支节点)

git log: 查看日志

git log --graph: 图形化日志

十、文件差异比较
修改文件后用 git diff 比较工作区与暂存区区别:
+ 表示新增:

将修改文件添加到暂存区,用 git diff HEAD 比较暂存区与本地仓库差异:

日志更新如下:

十一、文件回溯和推进
Commit 后的哈希值相当于版本节点,可方便回退:

使用 git reset --hard 哈希值 硬回溯至原始版本,工作区文件也会恢复:

十二、合并冲突和消除
编写含问题的文件添加到本地仓库:

创建 dev 分支修改并提交,回到主分支:

使用 git merge --no-ff 完整合并,并用 git log --graph 查看:

使用 git reset --hard 哈希值 回到初始版本,创建另一分支修改并提交:

切换到主分支,通过 git reflog 查看操作日志,推进到合并 dev 版本的节点:

此时合并另一分支出现冲突,需手动编辑文件消除冲突。冲突通常因同一文件代码不一致导致。添加后提交:
git commit --amend 修改上一条提交备注:

最终图形化节点结构:

简化图:

十三、合并/压缩提交
创建分支编写简单问题,不想再次提交时可合并最近两次提交:

使用 git rebase -i HEAD~2 交互合并:

将 pick 修改为 fixup 以保留指定提交:

十四、远程仓库推拉
使用 git remote add origin SSH 连接远程仓库,origin 为别名:
git push -u origin master 推送到远程 master 分支:

推送其他分支:

同事克隆仓库选择分支编写后推送,注意分支来源:


使用 git pull origin fea 拉取他人提交:

十五、小乌龟图形操作 Git
1. 仓库克隆远程项目
使用 TortoiseGit 克隆远程仓库:


点击 OK 完成克隆:

可在 .git 同目录下创建项目:

注意在空白处右键:


此处仅提交到本地仓库:

推送到远程仓库:




2. 先创建项目,后创建远程仓库

点击 OK:

提交到本地仓库:



提交到远程仓库,Push 出错通常因账号冲突:

新建空远程仓库,复制 HTTPS:



