一直只会常用的那几个 Git 命令,每次遇到不会的操作都是现去Google,十分不方便,今个得空咋就仔仔细细的学习学习 Git !
Git简介
Git是目前世界上最先进的分布式版本控制系统。
工作流程
工作区:你在电脑里能看到的目录。
暂存区:准备进行版本保存的文件列表。
本地仓库:完成版本保存的文件列表。
远程仓库:例如:自己的GitHub仓库、码云仓库。
提交流程为:工作区➤暂存区➤本地仓库➤远程仓库
专有名词
- master:默认开发分支(最新版本的名字)
- origin:给远程仓库地址起别名的常用名字(http方式)
- origin_ssh:给远程仓库地址起别名的常用名字(ssh免密方式)
- HEAD:当前所在的版本(在分支操作时,也叫没有命名的分支)
- HEAD^ :上一个版本
- HEAD^^ :上上个版本
- HEAD~n:前n个版本
配置用户信息
全局配置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
单独配置
#对某个项目想单独配置信息可以使用
git config user.name "Your Name"
git config user.email "email@example.com"
查看配置
git config --global user.name #查看配置的全局名字
git config --global user.email #查看配置的全局邮箱地址
git config --list #查看当前项目的git配置信息(会先列出全局配置,最下面列出的是当前项目的配置)整页翻页 ctrl-f(往前翻) ctrl-b(往后翻)
仓库的创建与提交
创建仓库
git init
提交文件
#第一步:把文件添加到暂存区
git add <file> #添加单个文件
git add . #添加所有文件
#第二步,把暂存区文件提交到本地仓库
git commit -m <message>
例子:新建learngit文件夹,并将该文件夹初始化为Git仓库,再向仓库中添加一个test.txt文件
mkdir learngit
cd learngit
git init
vim test.txt
git add test.txt
git commit -m "add a test file"
版本回退(回到过去)
软回退
将当前分⽀回滚到指定版本,保持⼯作区和暂存区状态不变。
git reset --soft HEAD^ #回退到上一个版本
git reset --soft HEAD~n #回退到前n个版本
git reset --soft <commit id> #回退到指定版本,id可通过git log查看
混合回退
将当前分⽀回滚到指定版本,清除暂存区的修改,但保持⼯作区状态不变。
git reset HEAD^ #回退到上一个版本
git reset HEAD~n #回退到前n个版本
git reset <commit id> #回退到指定版本,id可通过git log查看
强制回退
将当前分⽀回滚到指定版本,清除暂存区的修改,并强制删除所有⼯作区的修改
git reset --hard HEAD^ #回退到上一个版本
git reset --hard HEAD~n #回退到前n个版本
git reset --hard <commit id> #回退到指定版本,id可通过git log查看
回退取消(重返未来)
现在,你回退到了某个版本,关掉了电脑(无法使用git log 查看到回退前的commit id),第二天早上就后悔了,想恢复到回退前的版本怎么办?但是找不到回退前版本的commit id
怎么办?
git reflog #查看所有的历史命令,获取你想要回到的版本id,
git reset --hard <commit id> #回退到该版本
分支管理(平行宇宙)
分支简介
Git用master
指向最新的提交,再用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点
Git新建一个指针叫dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上
对工作区的修改和提交就是针对dev
分支了,比如新提交一次后,dev
指针往前移动一步,而master
指针不变
假如我们在dev
上的工作完成了,就可以把dev
合并到master
上。就是直接把master
指向dev
的当前提交,就完成了合并
合并完分支后,甚至可以删除dev
分支。删除dev
分支就是把dev
指针给删掉,删掉后,我们就剩下了一条master
分支
创建分支
git branch [branch_name]
切换分支
git checkout [branch_name]
git switch [branch_name]
创建并切换
git checkout -b [branch_name]
git switch -c [branch_name]
合并分支
git merge [branch_name] #用于合并指定分支到当前分支
删除分支
git branch -d [branch_name]
查看分支
git branch -vv #查看当前开发分支(当前分支前面会标一个*号)
git branch #查看本地所有分支
git branch -r #查看远程所有分支
git branch -a #查看本地和远程所有分支
查看提交历史
git log #查看历史提交记录
git log --pretty=oneline #查看简洁版历史提交记录
git log --graph #查看历史提交记录拓扑图
git log -p <file> #指定文件的历史提交记录
git blame <file> #查看指定文件的历史修改记录
更多 git log 命令可查看:http://git-scm.com/docs/git-log
一些常用命令
git status #查看项目文件此时的状态(在工作区、缓存区还是在仓库中)
git reflog #查看所有的历史命令
git remote -v #查看远程仓库地址
git diff #⽐较⼯作区和暂存区的修改
git diff HEAD #⽐较⼯作区和上⼀次commit后的修改。
git diff --cached #⽐较暂存区和上⼀次commit后的修改。
SourceTree
一款用于Windows和Mac的免费Git可视化管理工具。
详细用法可参考:
Reference
- git命令与Sourcetree使用
- Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
- git-cheat-sheet (gitee.io)
- Git 教程 | 菜鸟教程 (runoob.com)
- Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
- Git使用教程
- Git分布式版本控制器常用命令和使用
Sponsor❤️
您的支持是我不断前进的动力,如果你觉得本文对你有帮助,你可以请我喝一杯冰可乐!嘻嘻🤭
支付宝支付 | 微信支付 |