开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
摘要
git常用的命令并不太多,而且也是比较容易理解的,但是如果是多人协作时,其实git的命令就显得不够用了。为了能够很好的通过git的命令来管理仓库。所以对git的命令做了一些比较简单的总结。
基本使用
git的基础命令,相对来说比较简单,如下:
1.初始化仓库
git init 将当前目录初始化为git仓库
2.添加文件
git add 添加文件 -A(所有文件) git add -u 添加修改和删除的文件
- 删除文件
git rm 删除文件
4.提交到仓库
git commit -m <"tips"> 把文件提交到仓库
5.查看仓库状态
git status 查看仓库状态
规范
在网络上找到了一张git知识比较全的思维导图。如下图片:
git基本操作流程图
.git文件
这个是版本库
当我们在本地 使用 git init 命令时,会生成一个.git 的隐藏文件。
简单命令
git init 初始化版本git项目
git remote add origin 链接本地仓库与远程仓库
git config --list 检查配置信息
如下截图:本地与远程连接,然后提交数据到分支
git 配置命令
git config --list 查看配置信息
git config --local --lilst 查看本地仓库配置
git config --global --list 查看全局配置
git config --system --list 查看系统配置
git config --global user.name="your name" 配置你的用户名
git config --global user.email="your email" 配置你的邮箱
分支管理
查看本地分支
git branch
查看远程分支
git branch -r
查看本地和远程分支
git branch -a
从当前分支,切换到其他分支
git checkout
创建并切换到新建分支
git checkout -b
截图是创建新分支成功:
如果要想分支显示出来,则每个分支必须是有提交到本地仓库的内容的操作的,否则这个分支就可能不存在。
删除分支
git branch -d
当前分支与指定分支合并
git merge branch-name
如果被合并的内容比当前内容多,则直接是添加,如下截图:
如果是被合并的分支里边的内容文件,与当前的分支的内容文件存在差异时,以被合并的内容为主(所以分支最好是新建文件,而不是在原先的文件中进行修改,这样会覆盖掉原先文件的内容),则看如下截图:
查看哪些分支已经合并到当前分支
git branch --merged
如下截图是分支:
查看哪些分支没有合并到当前分支
git branch --no-merged
查看各个分支最后一个提交对象的信息
git branch -v
删除远程分支
git push origin -d
删除分支:
git branch -d 分支名
重命名分支
git branch -m
拉取远程分支并创建本地分支
git checkout -b 本地分支名 origin/远程分支名
还有另外一种形式是:
git fetch origin :
分支之间的关系
每一个分支是有不同的内容的。分支之间也是不影响的,这个分支在什么时候创建的,在这个分支上提交了哪些内容都是与这个分支有关的,与其他分支是没有关系的。
fetch指令
- 将某个远程主机的更新,全部取回本地
git fetch <远程主机名>
- 取回特定的分支
git fetch <远程主机名> <分支名>
- 将某个分支的内容取回给某个本地的分支,则是如下操作:
git fetch origin : //这个是将远程master分支取回给本地分支
再举一个栗子:
git fetch 远程主机 远程主机分支:本地主机分支
上边的意思是将远程主机的某一个分支拉回给本地的某一个分支
拉取本地没有这个分支名,则远程的分支
git checkout -b 本地不存在的分支名 origin/master01
origin/master01是远程分支名,远程分支名的操作是不带remotes的
如果警告,可以先 git fetch 再执行上边的操作
撤销
撤销工作区修改
git checkout --
就是修改完,还没有到暂存区就进行撤回
暂存区撤回(不覆盖工作区)
git reset HEAD
在工作区把文件进行修改后,相关命令操作后就会把文件存储在暂存区。
然后暂存区撤销,就是恢复到工作区的状态。
版本退回
版本退回的语法如下:
git reset --( soft | mixed | hard ) <HEAD~num>
soft:回退commit的操作,其他不变
mixed:取消add追踪 以及 commit提交
hard:工作区 暂存区 commit 都撤销,其实就是返回到了上一个版本。内容是不会删除的,只是修改的状态没有了。
另外说明: ~num 表示的是返回上一个版本几次。例如num=3,则表示返回上上上次的版本。
回退到指定版本: git reset --hard 版本号
测试1 默认是mixed 暂存区撤回:git reset
如下截图,则一开始是在暂存区的,则现在不在暂存区了
测试2:测试commit区 撤退 git reset --hard
git reset --hard commitId
commitId是 版本号
如下截图,是本地仓库的提交日志,如果我使用上述命令后,能够返回即可
则操作版本撤回操作后,上一个版本就不见了
版本退回的追忆事项:
如果返回到指定版本,则内容也会是指定版本的内容。如果只是默认退回版本,一般是指当前版本,则回退的是当前操作的追踪。
git reset回退版本会覆盖掉原先的记录:
我们使用git log会查看到本地仓库的版本,一旦选择我们选择之前的某一个版本进行回退,那么再使用git log进行查看时,会发现选择这个版本之后的版本都不见了。例如:有1到10的版本,我们会退到4版本后,就只剩下4以前的版本了。
如下截图说明:
上述有很多个版本,在我们执行退回操作到14:22那个版本时,则是如下结果:
补偿版本退回
就是还是前进的而不是后退,只是这个前进内容用的是之前的版本
git revert HEAD 上一个版本
git revert -n 版本号
状态查询
查看状态
git status
查看历史操作记录
git reflog
查看日志
git log
差异比较
比较工作区和缓存区
git diff
比较缓存区与本地最近一次commit内容
git diff --cached
比较工作区与本地最近一次commit内容
git diff HEAD
分支
master分支:主分支,用于部署生产环境的分支,确保稳定性。
master分支一般由develop以及hotfix分支合并,任何情况下都不能够直接修改代码。
develop分支,开发分支,开发新功能时,feature分支就在它下边。
feature分支,开发新功能时,命名规范 feature/分支名
release分支 为预上线分支 发布提测阶段 会release分支为基准体测
hotfix分支 分支命令名为:hotfix/分支名,修复分支,线上出现紧急问题时,需要及时修复,在master的基础上创建hotfix分支,修复完成后需要合并到master和develop两个分支上。
忽略文件.gitignore
#以整个开头的会被忽略
node_modules 会被忽略
.vscode 会被忽略
.md会被忽略
!README.md 不会被忽略
doc/*.txt 会被忽略,但是doc/images/arch.txt是不会被忽略的
doc/**/*.txt 忽略doc/目录下所有扩展名txt文件
总结
基础命令都还是比较容易的。难点在于回退的操作和分支管理。回退主要是与日志一起使用,每一次的git操作都带有日志的唯一id,所以可以通过id进行代码的撤回。而分支的话,每一个分支都有自己的文件目录,切换分支其实就是切换不同的文件目录。