Git的常用命令:
1 | git init |
1.git init
- 使用
git init
命令, 初始化本地库.
- 注意: .git 目录中存放的是当前项目的本地库相关配置, 不要删除, 也不要胡乱修改.
2.git config
- 设置签名.
- 设置当前项目的签名信息:
1 | git config user.name crainyday |
- 设置好后, 签名信息保存在当前项目的.git/config文件中:
- 设置全局签名, 使用:
git config --global
, 即可.
3.查看状态、追踪、提交
git status
- 查看工作区、暂存区状态.
- 新建一个文件, 再使用
git status
命令:
1 | touch hello.txt |
- 状态信息: 检测到一个未跟踪的文件. 提示你使用
git add <filename>
建立跟踪.
git add
- 使用
git add [filename]
建立文件的跟踪. - 将工作区的"新建/修改"添加到暂存区.
git commit
- 使用
git commit -m "提交的消息" [filename]
, 将暂存区的内容提交到本地库.
- 同样, 可以直接使用
git commit
将文件提交到本地库并在暂存区建立跟踪. - 这样做的前提是: 你之前已经对该文件用过了
git add
命令.
4.查看文件历史
git log
①不带参数
- 直接使用
git log
, 查询打印文件历史记录最详细的信息. - 注意: 只会显示当前"HEAD"指针之前的历史记录, 可以对比后边的
git reflog
命令. - 多屏控制:
空格
向下翻一页.b
向上翻一页.q
退出查看历史.
②带–pretty参数
- 使用
git log --pretty=oneline
命令, 将一个历史显示为一行, 并显示全部索引值. - 注意: 只会显示当前"HEAD"指针之前的历史记录, 可以对比后边的
git reflog
命令.
③带–oneline
- 使用
git log --oneline
命令, 将一个历史显示为一行, 并显示局部索引值.
git reflog
-
显示当前本地库所有的文件历史记录, 只显示局部索引值、HEAD@{n}、提交时的消息.
-
其中:
xxxxxxx HEAD@{n}
表示移动到xxxxxxx版本需要移动HEAD指针n步.
5.git reset
–hard参数
-
git可以在各个本地库版本之间穿梭的本质: "HEAD"指针的操作.
-
①使用局部索引值修改HEAD指针:
1 | git reset --hard [局部索引值] |
- ②使用
^
符号修改HEAD指针, 只能后退到之前的版本:
1 | 一个^后退一步,n 个后退 n 步 |
- ③使用
~
符号加数字修改HEAD指针, 只能后退到之前的版本:
1 | git reset --hard HEAD~n |
reset命令的三个参数
-
①–soft 参数
-
只会在本地库移动 HEAD 指针
-
不会改变暂存区和工作区内容.
-
②–mixed 参数
-
在本地库移动 HEAD 指针
-
并重置暂存区
-
但不会改变工作区内容.
-
③–hard 参数
-
在本地库移动 HEAD 指针
-
并重置暂存区
-
并重置工作区
一般来说, 只会用到 --hard 参数.
git reset的应用
-
找回已经删除了的文件.
-
前提: 删除该文件前, 文件存在时的状态提交到了本地库.
-
命令:
git reset --hard [指针位置]
-
①若删除操作已经提交到本地库, 指针位置为之前的历史记录的
局部索引值
. -
②若删除操作尚未提交到本地库, 指针位置直接填入
HEAD
即可.
6.git diff
-
用于比较文件之间的差异.
-
①
git diff [文件名]
-
将工作区中的文件和暂存区进行比较.
-
②
git diff [本地库中历史版本的局部索引值] [文件名]
-
将工作区中的文件和本地库历史记录进行比较.
不带文件名则比较多个文件.
7.分支管理
分支操作
- ①创建分支
1 | git branch [要创建的分支名] |
- ②查看分支
1 | git branch -v |
- ③切换分支
1 | git branch checkout [要切换到的分支名] |
- ④强制删除分支
1 | git branch -D [要删除的分支] |
- ⑤查看
git branch
的帮助
1 | git branch -help |
合并分支
- ①切换到被合并分支(你要修改的分支)
1 | git checkout [被合并分支名] |
- ②使用merge命令合并分支(不会删除)
1 | git merge [合并分支名] |
- ③若无冲突, 则会成功合并; 否则, 需要解决冲突.如下图:
解决冲突
- 冲突的表现:
-
解决步骤:
-
①编辑有冲突的文件, 删除特殊符号.
-
②修改文件到你满意的程度, 保存退出.
-
③使用
git add [文件名]
命令, 添加冲突文件到暂存区. -
④使用
git commit -m "日志信息"
命令, 提交冲突文件到本地库即可.
注意: 第④步中, commit 时一定不能带具体文件名.
8.和远程库相关操作
创建远程库地址别名
- 前提: 确保你在代码托管中心申请了账号, 并创建了一个远程仓库, 得到了远程仓库的HTTP地址.
1 | 添加远程库 |
Push
- 即, 推送本地库到远程库.
1 | git push [要推送到的远程库别名] [要推送的本地分支] |
Clone
- 即, 克隆远程库到本地库.
1 | git clone [远程库地址] |
- git clone的效果:
- ①完整的把远程库内容下载到本地.
- ②创建 origin 远程地址别名, 指向你克隆的地址.
- ③初始化本地库(相当于执行了
git init
命令).
Pull
-
即, 拉取远程库内容到本地.
-
若是多人协作开发的话, 你需要从远程库"Pull"别人更新的代码.
-
pull
命令, 其实可以拆分为:fetch+merge
命令.
1 | git fetch [远程库地址别名] [远程分支名] |
- 在
merge
的时候, 可能会产生冲突, 若产生冲突, 参照解决冲突即可.
注意: 有一些远程库, 若是本地库的修改不是基于远程库的最新版所做的修改, 不能Push, 必须先Pull. 解决冲突后, 再Push. 例如: GitHub远程库等.
9.使用SSH
- ①进入当前用户的家目录.
1 | cd ~ |
- ②删除之前的.ssh 目录.
1 | rm -rf .ssh |
- ③运行命令重新生成.ssh密钥目录. 注意:
大写-C
1 | ssh-keygen -t rsa -C [你的代码托管中心的账户邮箱] |
- ④进入.ssh目录查看文件id_rsa.pub文件内容, 得到SSH密钥.
1 | cd .ssh |
-
⑤复制
id_rsa.pub文件
内容. -
⑥登录你的代码托管中心, 新建一个SSH密钥, 添加上即可. 下面是Gitee的, 其他类似.
- ⑦得到你的远程库的SSH地址并复制, 不要HTTP的.
- ⑧添加远程库的SSH地址别名:
1 | git remote add origin_ssh git@gitee.com:CRainyDay/test.git |
- ⑨Push文件进行测试.