玩转Git

153 阅读3分钟
  • Git使用的最新配置
git config --global user.name ''
git conifg --global user.email ''

## 查看全局git配置
git config --list --global

## 查看系统git配置
git config --list --system

## 查看全局git 本地配置
git config --list --local
  • 单个仓库设置用户名和邮箱
## cd 本地仓库路径
git config --local user.name 'lufei'
git config --local user.email 'carlxuchao@gmail.com'
git config --list --local
  • 给文件重命名

    git rm readme
    git add readme.md
    git commit 
    
    --------- 
    
    **git mv readme readme.md**
    
  • log

    git log --oneline
    
    ##  查看2此提交
    git log -- n2
    
    ##  --all 可以查看所有分支提交
    git log --all --graph
    
    ##  可以组合
    git log --oneline --all --graph
    
    ## 查看分支
    git branch -v
    
    // 基于 ab7a56bfbd74393ded2a172f10b6af0b3ef27e27 提交创建 temp 分支
    git checkout -b temp ab7a56bfbd74393ded2a172f10b6af0b3ef27e27
    
  • 图形界面的工具使用

    ## 切换分支
    git checkout master
    
    ## 查看当前是那个分支
    cat .git/HEAD
    
    ## 查看本地仓库配置信息
    cat .git/config
    
    ## 查看commit对象
    git cat-file -t xxx
    
    ## 查看树tree
    git cat-file -p xxx
    
    .git目录下文件
    - HEAD
    - config
    - refs
    - objects
    
  • commit, tree , blob三者之间的关系

    • blob只根据内容, 不区分文件

截屏2021-10-30 下午2.49.13.png

## 查找
find .git/objects -type f

## 查看commit对象
git cat-file -t xxx

## 查看树tree
git cat-file -p xxx
  • 分离头指针情况下的注意事项

 git checkout commitId  → detached HEAD

 git commit -am 'xxx'   之间提交commit

 git branch branch_name commitId  创建分支

将分离头指针跟某个分支绑定在一起,  否则切换分支的时候回丢失到之后的commit

## 创建新分支并切换过去
git checkout -b branch_name_xx branchName

## 两次commit的比较
git diff commitId1 comitId2
git diff HEAD HEAD^
  • 怎么删除不需要的分支
## 查看所有分支
git branch -av

## 删除分支
git branch -d 分支名

## 强删
git branch -D 分支名
  • 怎么修改最新commit的message信息
git commit --amend
  • 怎么修改老旧的commit的message信息
git rebase -i 父commitId
vim 修改 pick 为 reword, 并修改提交信息
  • 怎么把多个连续的commit合成一个
git rebase -i 父commitId

## vim 修改需要合并的commit的位置, 并改pick为s
git rebase --continue
  • 怎么比较暂存区和HEAD所含文件的差异
git diff --cached
  • 怎么比较工作区和暂存区的差异
## 比较所有文件
git diff 

## 比较当文件的区别
git diff --file_name
  • 如何让暂缓区恢复和HEAD一样
git reset HEAD
  • 如何让工作区的文件恢复和暂缓区一样
git checkout -- 文件名
  • 怎么取消暂缓区部分文件的更改
git reset HEAD --文件名
  • 消除最近的几次提交
git reset --hard commitId
HEAD变化, 工作区和暂存区都回退
  • 看看不同提交的指定文件差异
git diff 分支1 分支2

git diff 分支1 分支2 --文件名

git diff commit1 commit2 --文件名
  • 正确删除文件的方法
老方法:
工作区 rm file
git rm file
----
直接使用
git rm file
  • 开发中临时加塞了紧急任务怎么处理
git stash

git stash list

git stash apply

git stash pop
  • 如何指定不需要git管理的文件
配置 .gitignore
  • git的备份 截屏2021-10-30 下午7.50.39.png

  • 把本地仓库同步到GitHub (待补充)

  • git上怎么快速淘到自己敢心情的项目

    • xxx in:readme 在readme中查找
    • stars:>3000 根据star数量搜索
    • '关键字' filename: gitlab-ci 搜code
  • 高效的git rebase 方式

git config --global rerere.enabled true

git checkout shanghai
git merge master
to do resolve conflict
git add .
git commit -am'xxx'

git log
git reset --hard HEAD~1

git rebase master