目录
2、管理文件:查看(git status)、追踪(git add)、提交(git commit)、删除(git rm)、重命名(git mv)
(2)git add 文件名:将工作区文件添加到暂存区,或将暂存已追踪文件修改
(3)git commit -m "提交说明" 文件名:将暂存区内容提交到本地库
(4)git rm -f 文件名:强制删除已暂存文件,暂存区和工作区同时删除
(2)git log --pretty=oneline:单行展示
(1)git reset --hard 版本索引:硬回滚,工作区、暂存区随本地库回滚到指定版本
(2)git reset --mixed 版本索引:混合回滚,暂存区随本地库回滚到指定版本,工作区不变
(3)git reset --soft 版本索引:软回滚,只回滚本地库版本,暂存区和工作区不变
(4)git checkout -b 分支名:创建并切换到新分支
(2)git remote add 别名 url:添加远程仓库并取别名
(4)git clone 远程仓库url:克隆远程仓库至本地
(5)git push 远程库别名 远程分支名:向远程分支推送本地库内容
(6)git pull 远程库别名 远程分支名:拉取远程库并更新至本地库及工作区
4、比较工作区、暂存区文件内容差别:git diff 文件名.后缀
(1)git rm --cached 文件名:将文件从暂存区删除,但在工作区保留
一、Git安装
1、下载
Git官网:https://git-scm.com/
官网下载比较慢的可以使用腾讯管家的软件管理下载,跟官网版本是同步的,没什么差别
2、安装
点击exe执行安装,只有两处地方需要修改:
安装目录和PATH环境变量设置,其他都默认即可
3、设置
安装完成后在桌面空白处右键,多了两个新的Git选项
点击Git Bash Here打开命令行窗口,输入:git -- version查看git版本
在Git命令窗口上右键进入选项设置
字符集设置为UTF-8
二、Git Bash常用命令(重点掌握)
官方中文文档地址:https://www.git-scm.com/book/zh/v2
Git基本概念:工作区(工作目录)、暂存区、本地库(Git仓库)
说明:
Git库根目录(即目录c/MyGitResp)下的文件都在工作区,
只有工作区内的文件和内容才能添加到暂存区,
只有暂存区内的文件和内容才能提交到本地库。
1、获取git仓库(git init、git clone)
官方说明:
https://www.git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93
git init:初始化本地目录为git仓库
git clone url:克隆远程仓库
2、管理文件:查看(git status)、追踪(git add)、提交(git commit)、删除(git rm)、重命名(git mv)
官方说明:
(1)git status:查看当前工作目录所有文件状态
空仓库状态
有文件状态
a、Changes to be committed:暂存区还没有提交到本地库的文件
b、Changes not staged for commit:已追踪文件内容改变但还没有暂存修改
c、Untracked files:未追踪的新文件,工作区文件还没有添加到暂存区
(2)git add 文件名:将工作区文件添加到暂存区,或将暂存已追踪文件修改
git diff 文件名:列出工作区文件与暂存区差别
(3)git commit -m "提交说明" 文件名:将暂存区内容提交到本地库
-m 添加提交信息
*git commit -a:自动将所有追踪文件的修改保存到暂存区然后提交到本地库
(4)git rm -f 文件名:强制删除已暂存文件,暂存区和工作区同时删除
git rm --cached 文件名:将文件从暂存区删除,但在工作区保留
(5)git mv 文件名 新文件名:追踪文件重命名
注意:暂存文件才能重命名,因为没有执行过git add的文件还没被git管理
3、查看提交日志(git reflog)
官方说明:
(1)git log:详细日志
(2)git log --pretty=oneline:单行展示
(3)git reflog:最常用的查看命令
第一列是版本索引,头指针HEAD指向本地库最新版本,版本回滚时需要用到版本索引
4、版本回滚(git reset)
(1)git reset --hard 版本索引:硬回滚,工作区、暂存区随本地库回滚到指定版本
执行回滚:回滚至HEAD版本,即将撤销上次提交后工作区和暂存区保存的所有新操作
(2)git reset --mixed 版本索引:混合回滚,暂存区随本地库回滚到指定版本,工作区不变
回滚前:test.txt修改已保存至暂存区,但未提交至本地库
执行混合回滚
回滚后:test.txt的修改暂存区已撤销,工作区仍保存修改
(3)git reset --soft 版本索引:软回滚,只回滚本地库版本,暂存区和工作区不变
5、追踪文件对比(git diff)
修改前工作区、暂存区状态(clean表示,工作区所有内容都已暂存,暂存区所有内容都已提交至本地库)
(1)git diff 文件名:比较工作区文件与暂存区差别
空白文件test.txt新增内容:aaa
说明:-0,0 +1表示工作区文件与暂存区相比,减少了0行0列新增了1行
将修改添加至暂存区后,test.txt文件工作区内容与暂存区相同
在test.txt文件后追加内容:bbb
再次比较test.txt文件工作区内容与暂存区差别
说明:git按行管理内容,修改行时先删后增
-1,+1表示工作区与暂存区相比减少了一行新增了一行
-aaa表示减少的内容,+aaabbb表示新增的内容
(2)git diff:比较工作区所有文件与暂存区文件差别
git diff 版本索引 文件名:比较暂存区单个文件与本地库指定版本差别
暂存区文件提交到本地库之后,本地库文件与暂存区文件无差别
修改工作区test.txt保存后添加修改至暂存区
再次比较暂存区test.txt文件与本地库当前版本差别
git diff 版本索引:,比较暂存区所有文件与本地库指定版本差别
6、分支命令(git branch)
(1)git branch -v:查看所有分支
(2)git branch 分支名:创建新分支
(3)git checkout 分支名:切换到指定分支
(4)git checkout -b 分支名:创建并切换到新分支
(5)git branch -d 分支名:删除分支
(6)git merge 分支名:合并指定分支到当前分支
(7)代码冲突导致分支合并中止(保持合并状态)
在master分支,合并branch_b分支时出现冲突,Git停留在合并状态
解决思路:修改工作区冲突文件,暂存修改后的冲突文件,git commit -m "说明" 结束合并
- 找到工作区冲突文件,编辑冲突内容并保存
- git add test.txt:暂存修改后的冲突文件
- git commit -m "解决冲突":提交暂存结果到本地库,合并结束
注意:解决冲突commit时后面不能跟文件名,否则将报错
解决冲突后查看master分支状态
切换到branch_b分支查看分支状态
在分支branch_b上,test.txt文件内容没有变化
8、与GitHub远程仓库交互
官方说明:https://www.git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E8%BF%9C%E7%A8%8B%E5%88%86%E6%94%AF
(1)git remote -v:查看本地库保存的远程库
(2)git remote add 别名 url:添加远程仓库并取别名
(3)git remote rm 别名:删除添加的远程仓库
(4)git clone 远程仓库url:克隆远程仓库至本地
- 在C盘空白处打开Git命令行窗口
- 克隆远程仓库至本地,完成后关闭窗口
说明:clone命令做了三件事—自动创建本地库并初始化、自动将远程库拉取到本地库、自动为远程库创建别名
- 进入自动创建的本地库并重新打开git命令行窗口
- 可以看到git自动为远程仓库创建了别名
(5)git push 远程库别名 远程分支名:向远程分支推送本地库内容
- 在GitHub新建远程仓库
- 拷贝远程仓库url
- 添加远程仓库到本地并取别名
- 首次提交远程库将弹出GitHub登录窗口,输入账号密码登录即可
(账号密码将被计算机永久保存,查看或清除->控制面板(查看方式改为大图标)->凭据管理器->普通凭据)
- 查看远程库,可以看到本地库文件已提交至远程库
(6)git pull 远程库别名 远程分支名:拉取远程库并更新至本地库及工作区
相当于以下两条命令:
git fetch 远程库别名 远程分支名
git merge 远程库别名/远程分支名
三、操作示例
1、将文件夹初始化为Git库:git init
进入空文件夹MyGitResp,右键打开Git Bash窗口,输入命令:git init
通过命令行查看生成文件,ll命令加 -all显示隐藏文件
2、查看git库状态:git status
3、将文件添加到暂存区:git add 文件名.后缀
在工作区新建空白文件test.txt
Git命令行窗口查看
将test.txt添加到暂存区并查看git库状态变化
4、比较工作区、暂存区文件内容差别:git diff 文件名.后缀
4.1 比较工作区test.txt与暂存区差别
说明:目前工作区test.txt文件与暂存区无差别
4.2 修改test.txt文件内容并保存
4.3 比较工作区test.txt与暂存区差别
说明:-0,0 +1 表示减少了0行0列,增加了1行
+aaa 表示增加了内容aaa
5、将文件从暂存区删除
(1)git rm --cached 文件名:将文件从暂存区删除,但在工作区保留
示例:
rm.txt文件已暂存
将rm.txt文件从暂存区删除
rm.txt在暂存区已不存在, 但工作区还存在
6、本地库文件删除与找回
(1)先将工作区文件test2.txt提交至本地库
(2)删除本地库文件test2.txt
思路:先从工作区删除,然后将操作添加到暂存区,最后将暂存操作提交至本地库
(3)找回本地库文件test2.txt
思路:本地库硬回滚至删除前版本,本地库、暂存区、工作区同时恢复
查看工作区当前文件
查看提交记录,复制上一版本索引(选中即自动复制)
执行硬回滚操作
工作区文件已恢复
查看提交历史,记录了版本指针HEAD的移动记录
7、暂存区文件删除与找回
将工作区删除操作保存至暂存区后,想要撤销删除操作,直接同步本地库当前版本即可
8、模拟分支合并冲突
- 工作区、暂存区、本地库同步之后,创建并切换至新分支
- 在新分支branch_b修改test.txt文件并提交至本地库
- 切换回主分支master同样修改test.txt文件并提交至本地库
- 合并branch_b分支时,test.txt文件冲突,合并中止(保持合并状态)
- 解决冲突可参考前述步骤