-
Git命令
- .git文件记载Git的版本库信息,放在项目的根目录下。执行Git命令时会从当前路径往上递归,直到找到项目根目录下的文件
- git init 初始化git仓库
- git add file1 将文件由工作区添加到暂存区
- git add . 将所有文件由工作区添加到暂存区
- git add -u 更新暂存区的文件
- git add -I 新增暂存区的文件
- git commit -m ‘message’ 提交暂存区的改动到本地仓库
- git rev-parse --git-dir
- git rev-parse --show-toplevel
- git rev-parse --show-orefix
- git log 查看提交日志
- git status 查看当前工作区文件状态,是否添加到缓存区
- git diff 暂存区和工作区的区别
- git diff --cached 暂存区和版本库HEAD的区别
- git diff --HEAD 工作区和版本库HEAD的区别
- git reset HEAD 暂存区的目录树被版本库重写/暂存区内容被版本库覆盖
- git rm --cached 删除暂存区文件,工作区不受影响
- git checkout – 用暂存区的(指定)文件替换工作区的文件,工作区文件会被覆盖(DANGER)
- git checkout HEAD . 或 git checkout HEAD 用版本库的文件覆盖暂存区以及工作区,暂存区和工作区未提交更改会被丢弃(DANGER)
- HEAD相当于/refs/heads/master,位于.git/HEAD,内容为ref:/refs/heads/master,该文件内容为当前分支下(master)最新的一次commit id
- git ls-tree -l HEAD 显示HEAD指向的目录树
- git ls-files -s 显示暂存区的目录树
- git stash 相当于git stash save ,暂时搁置,隐藏暂存区(只会操作git追踪的文件,指暂存区)未提交的文件。stash:藏匿
- git stash list 查看保存的列表
- git stash pop 弹出保存的stash,stash记录会消失
- git stash apply 或者 git stash apply stash@{1} 应用保存的stash,但不弹出,stash不会消失
- git log -1 --pretty=raw 显示最新commit 的id,parent id(父提交),tree,author以及committer
- git log --graph --pretty=oneline
- git cat-file -p commitId前七位 显示对应id的相关信息
- commit信息中的tree对应的是此次更改的文件树(tree id),树下文件(也有文件id)对应文件内容(blob格式保存)
- git对象:commit对象(包括parent对象),tree对象(包含变更文件id的树对象),file对象(实际被更改文件对象)。每个对象都有id,master指向最新的commit对象,到parent为空时结束
- git中的id值有SHA1生成
- git重置
- HEAD指向当前所在分支的最新提交。被称为游标,使用git reset命令可以移动游标。
- .git/refs/heads/master中存储该分支下的commit或者reset记录以及id,可以使当前分支回退或前进到指定commit
- git reset 相当于git reset --mixed相当于git reset HEAD相当于git reset refs/heads/master,回退暂存区,相当于撤回之前的git add 命令,但修改的文件还在工作区,相当于用当前版本库覆盖暂存区文件,该命令也可用于回退指定的文件。工作区不受影响,commit之后的提交会放到暂存区(红色状态)。
- git reset --soft 仅改变当前分支指向的commit,常用于重新更改上次提交message,暂存区和工作区文件内容不受影响,该次commit之后的提交会放到暂存区(绿色状态)。
- git reset --hard 使用版本库重置(danger)暂存区以及工作区,且后续提交不再显示已覆盖内容,除非使用相同的命令以及commit id前进到前面的id,id可以在log文件找。
- git checkout 之前的commitId ,指针HEAD会指向该次提交,(HEAD直接指向该次commitID,而不是当前分支)处于‘头分离指针’状态,在该状态提交修改不会影响其他分支,可以通过checkout -b new_branch 创建分支保存当前状态。
- 头分离指针状态下,指向823d提交id,切换到别的分支之后,可以通过merge 823d合并’头分离指针‘到当前分支
- Git checkout branch 切换到其他分支,暂存区和工作区不会变
- Git checkout 显示工作区、暂存区和HEAD的区别
- Git checkout – filename 使用暂存区的file覆盖工作区,工作区file会丢失
- Git checkout branche --filename 使用指定分支的file覆盖工作区,工作区file会丢失
- Git checkout . 使用暂存区直接覆盖工作区所有文件
- git rm 移除工作区以及暂存区文件
- git mv file1 file2 重命名工作区以及暂存区文件。
- mv file1 file2 不会同步到暂存区,需要 git add -u才能达到和git mv file1 file2的效果
- git tag -m ‘message’ tag_name 创建里程碑
- git tag -d tag_name
- git tag -l 显示tag的列表
- git commit -amend -m ‘message’ amend:修正
- git rebase --onto 例:git rebase --onto D B^ A 跳过C,把B、A加到D上,相当于删除了D,参数可以是HEAD、branch、commitId
- git rev-parse newbase 查看head、branch、tag的commitId
- git rebase -i D^ 修改提交信息
- git show commitId/HEAD 显示本次提交的详细信息
- git revert commitId 撤回本次提交,直接生效到版本库
- git merge 当前提交作为最新的父提交,commitId作为该提交的父提交,合并后会自动提交到版本库,使用 --no-commit 会将合并后结果放入暂存区
- git describe 显示某次提交的tag
- git branch 显示所有分支,*标识当前分支
- git branch 创建新的分支
- git branch 从start-point创建新分支
- git branch -d/-D branch 删除或强制删除分支
- git branch -m/-M branch 重命名或强制重命名分支
- 分支合并时,祖先提交不一致,会提示Merge made by the ‘recursive’ strategy.
- mirror和bear区别
-
相关阅读:
RocketMQ源码解析-topic创建机制
酷开科技丨酷开系统重塑家庭娱乐生态,开启家庭生活新体验
SSRF 服务端请求伪造, 简介,SSRF实验, 漏洞探测, 绕过技巧, SSRF防御
证书格式说明
Docker实践笔记7:构建MySQL 8镜像
面试题 01.01. 判定字符是否唯一
【无标题】
视频点播系统,视频播放器,在线视频点播学习系统毕业设计
能够解决传统FTP传输弊端的替代工具是什么样的?
经验分享,两个在线图片处理网站在线抠图和删除不需要的元素
-
原文地址:https://blog.csdn.net/weixin_42424720/article/details/127901738