0%

git学习笔记

查看暂存区

git ls-files -s

查看某个对象的内容

git cat-file -p hash前缀

查看某个对象的类型

git cat-file -t hash前缀

git高层命令(CRUD)

  • 初始化仓库
git init                        
  • 将本目录下,所有修改过的文件,添加至暂存区,同时文件从“未跟踪”变为“已跟踪”的状态
git add ./         
  • 如果注释内容比较多的情况下,可以使用这个
git commit                      
  • 将暂存区添加到版本库
git commit -m "注释内容"        
  • 跳过暂存区域,也就是跳过 git add 这一个步骤
git commit -a -m "注释内容"     
  • 检查文件的状态(已暂存、已修改、已提交)
git status                      
  • 查看哪些文件修改了,但是还没用暂存(也就是查看未暂存的修改)
git diff                        
  • 查看文件修改了,但是还没有提交(也就是查看未提交的暂存)
git diff --staged 或 git diff --cached      
  • 查看日志文件(也就是提交的历史记录)
git log                         
  • 显示到一行
git log --pretty=online         
  • 显示到一行(更简短)
git log --online                
  • 查看项目分叉历史
git log --online --decorate --graph --all       
  • 记录head改动的所有记录
git reflog                      
  • 删除工作区中对应的文件,同时将修改添加至暂存区
git rm 文件名                   
  • 重命名文件,同时将修改添加至暂存区
git mv 旧名字 新名字            

分支

  • 显示分支列表:git branch
  • 创建分支:git branch 分支名
  • 创建分支并自动切换至该分支:git checkout -b 分支名
  • 切换分支:git checkout 分支名
  • 删除分支:git branch -d 分支名(删除空的分支,或删除已经被合并的分支,注意:不能自己删自己)
  • 删除分支:git branch -D 分支名(强制删除分支)
  • 合并分支:git merge 分支名 (注意:这里的分支名,是你要合并进主分支的分支名,而且,你必须要切换到主分支上,才能输入这个命令,合并其他的分支到主分支上)
  • 查看哪些分支已经合并到当前分支:git branch -merged
  • 查看哪些分支没有合并到当前分支:git branch --no-merged
  • 查看当前分支最后一次提交:git branch -v
  • 在当前提交对象上创建新的分支:git branch 新的分支名
  • 时光倒流:git branch 新的分支名 某个Hash提交对象 (作用:创建一个分支,并使分支指向对应的提交对象)

注意:在切换分支的时候,一定要保证当前分支是干净状态

允许切换分支的情况:

  1. 分支上的所有内容处于 已提交 状态
  2. 分支上的内容是 初始化创建,处于 未跟踪 状态(避免)
  3. 分支上的内容是 初始化创建,处于 已暂存 状态(避免)

不允许切换分支的情况:

  1. 分支上所有内容处于 已修改 状态 或 第二次(也就是提交过一次之后)以后的 已暂存状态

git 存储

在分支上工作到一半时,如果有切换分支的需求,则应该把当前分支上的工作存储起来

  • git stash list 查看存储列表

  • git stash 请未完成的修改,保存到一个栈上

  • git stash pop 还原存储在栈顶的工作,并立即从栈中清除

  • git stash apply 还原存储在栈顶的工作,不会冲栈中清除

  • git stash drop 存储名字 删除栈里的某个存储元素


时光机

  • 回到过去的某个时刻:git reset --hard 哈希编号

  • 从过去重新回到未来:先通过 reflog 查找到哈希编号,再执行 git reset --hard 哈希编号


撤回

  • 撤回在工作目录中的修改:git checkout -- 文件名
  • 撤回暂存区中的修改:git reset HEAD 文件名
  • 撤回已提交的修改:git commit --amend (注意:只能修改注释的内容,其他的不能修改)

标签

  • git tag 列出标签

  • git tag 标签名 创建标签

  • git show 标签名 查看标签

  • git tag -d 标签名 删除标签


配置git命令别名

有时候git命令又臭又长,我们可以配置别名,来使命令进行简化

git config --global alias.别名 git命令

例如我配置了一个status的别名,git config --global alias.st status,那么,当我使用的时候,就只需输入 git st 就可以了
注意:如果要配置别名的那条命令有多个参数,那么需要用引号括起来


忽略文件 .gitignore

需要在项目的目录下,新建一个 .gitignore 文件,在里面写上忽略的规则即可,作用范围为当前目录及其子目录

/node_modules/      # 忽略整个文件夹

*.zip # 忽略所有 .zip 结尾的文件

/static/1.mp4 # 忽略某个具体的文件

readme.md # 不忽略某个具体的文件

# 井号代表注释

其他说明

  1. HEAD是一个指针,指向一个分支
  2. 分支是一个提交对象
  3. 提交对象指向树对象
  4. 树对象有可能指向多个git对象
  5. 一个git对象就是一个文件
-------------本文结束    感谢阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!