目录
---配置---
配置仓库参数:
git config --[全拼参数] [配置文件属性] <属性值>
--global: 不加参数只对当前仓库有效
--list: 查看config配置
例子:
$ git config --global user.name "2018246490" #设置user.name属性值
$ git config --global user.email "2018246490@qq.com" #设置user.email属性值
$ git config --list #查看全部属性
---提交与修改---
初始化仓库:
git init <目录>
例子:
$ git init #将当前文件夹初始化为git仓库
$ git init /e/demo #将/e/demo文件夹初始化为git仓库
添加文件到仓库:
git add <文件>
例子:
$ git add *.c #添加 .c结尾的文件
$ git add README #添加README文件或文件夹
暂存区文件提交到本地仓库:
git commit <文件> -[缩写参数] <参数值>
-a: 修改文件后不需要执行 git add 命令,直接来提交
-m: 提供注释
例子:
$ git commit -m '第一次提交' #提交全部缓存区文件到本地库
$ git commit a.html b.html -m '第一次提交' #提交缓存区文件a.html b.html文件到本地库
$ git commit -am '直接提交文件' #全部文件直接从工作区提交到本地库(缓冲区也进行了更新)
回退版本:
会导致与远程库版本不一致问题,需要先pull远程项目,再push,直接push -f 会导致远程库版本记录与本地一致,从而丢失其他人员的提交记录。
git reset --[全拼参数] <版本号>
--soft: 本地库回退到指定版本,工作区与缓存区不变
--mixed: 默认,本地库与缓存区回退到指定版本,工作区不变
--hard: 本地库、缓存区、工作区回退到指定版本
例子:
$ git reset --soft HEAD~3 #本地库回退到上上上一个版本
$ git reset HEAD~3 #本地库与缓存区回退到上上上一个版本
$ git reset --hard HEAD~3 #本地库、缓存区与工作区回退到上上上一个版本
$ git reset --hard bae128 #本地库、缓存区与工作区回退到bae128版之前
$ git reset --hard gitee/master #将本地的状态回退到和远程库gitee/master的一样
HEAD说明:
- HEAD 表示当前版本
- HEAD^ 上一个版本
- HEAD^^ 上上一个版本
- 以此类推...
或
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
- HEAD^2 上上一个版本
- 以此类推...
删除文件:
git rm -[缩写参数] --[全拼参数] <文件>
--cached: 删除暂存区文件
-f: 强行删除文件
-r: 递归删除,删除目录下的全部目录与文件
例子:
$ git rm index.html #删除工作区、缓存区index.html文件
$ git rm --cached index.html #删除、缓存区index.html文件
$ git rm -f index.html #强行删除工作区、缓存区index.html文件
$ git rm -r /a #删除a目录下的全部文件
移动、重命名文件:
git mv -[缩写参数] <文件> <新文件>
-f: 强行修改文件
例子:
$ git rm index.html b.html #修改index.html文件为b.html
$ git rm -f index.html b.html #如果b.html存在则强制修改index.html文件为b.html
查看仓库当前状态:
git status -[缩写参数]
-s: 获取简短的输出结果 可不加
比较文件差异:
git diff --[全拼参数] <文件名称>
--cached/staged: 缓存区文件与上一次提交的差异 ,默认是工作区文件与缓冲器文件对比
例子:
$ git diff README.md #对比README.md文件工作区与缓冲区的差异
$ git diff --cached README.md #对比README.md文件缓冲区与上次提交的差异
查看库管理文件:
git ls-files
---日志---
查看日志:
git log --[全拼参数]
--oneline: 简洁查看历史记录
--graph: 查看历史中什么时候出现分支、合并
--reverse: 逆向查看所有日志
--author: 查看指定用户的日志
例子:
$ git log --oneline #简洁查看全部历史记录
$ git log --reverse --oneline #简洁逆向查看全部历史记录
$ git log --graph #查看什么时候出现分支、合并
$ git log --author=Linus --oneline -5 #查看Linus用户的相关日志
查看指定文件日志:
git blame <文件>
例子:
$ git blame README.md #查看README.md文件历史记录
---分支管理---
分支创建与删除:
git branch -[缩写参数] <分支名称>
-v: 分支的最新提交信息
-d: 删除分支
例子:
$ git branch #查看全部分支
$ git branch -v #查看全部分支与它们的最新提交信息
$ git branch main #添加main分支
$ git branch -d main #删除main分支
分支切换:
git checkout <分支名称>
例子:
$ git checkout main #切换到main分支
分支合并:
git merge <分支名称>
例子:
$ git merge main #将main分支合并到当前分支
---远程操作---
拷贝项目:
git clone <远程库链接> <本地目录>
例子:
$ git clone git@github.com:chloneda/demo.git #将远程库克隆到当前目录
远程库:
git remote [操作命令] <远程主机名> <操作命令参数> -[缩写参数]
show: 显示远程
add: 添加远程库
rename: 修改远程主机名称
rm: 删除远程主机
-v: 关联远程库的详细信息
例子:
$ git remote -v #查看远程库详细信息
$ git remote show https://github.com/tianqixin/runoob-git-test #显示某个远程仓库信息
$ git remote add github git@github.com:chloneda/demo.git #添加主机名为github远程库
$ git remote add gitee git@gitee.com:chloneda/demo.git #添加主机名为gitee远程库
一个本地库可以添加多个远程库
$ git remote rename gitee gitee2 #修改仓库名
$ git remote rm github #删除github远程库
检出远程库文件并合并:
git pull <远程主机名> <远程分支名>:<本地分支名> --[全拼参数]
--allow-unrelated-histories: 允许不相关的历史提交,并强行合并(远程库覆盖本地)
例子:
$ git pull github main:main 或 $ git pull github main #拉取github/mian分支与本地mian分支合并
$ git pull gitee master:main #拉取gitee/master分支与本地mian分支合并
$ git pull github main --allow-unrelated-histories #拉取github/mian分支与本地mian分支强行合并
提交文件到远程库并合并:
git push --[全拼参数] <远程主机名> <本地分支名>:<远程分支名>
--force: 忽略本地域远程库差异强行提交合并(本地覆盖远程库)
例子:
$ git push github main:main 或 $ git push github main #提交本地mian分支与github/mian分支合并
$ git push gitee main:master #提交本地mian分支与gitee/master分支合并
$ git push --force gitee main:master #强行提交本地mian分支与gitee/master分支强行合并