git 命令的使用

文件添加及提交

文件添加

  • 添加某一个文件:git add file.c
  • 添加所有文件: git add .
  • 目的
    • 已经追踪的文件:将修改从工作区保存到暂存区
    • 未追踪的文件,加入git 追踪范围

文件提交

  • 将暂存区的所有内容提交到版本库

  • 单步提交:

    git commit -m "commit info"
    
  • 一次性提交:

    git commit -a
    
  • 修改最后一个提交:

     git commit --amend
    

文件删除

从工作目录和暂存区中删除

  • git rm -f file.c
  • 避免文件出现在未被跟踪的清单中
  • 删除并提交后,该文件就不再被版本库追踪,但是版本库中仍然保存有这个文件的快照

从暂存区删除、工作目录中保留

  • 命令

    git rm --cached file.c
    
  • 包括:库文件、可执行文件、日志、临时文件

从版本库中删除:版本回退到错误提交前的版本

  • 撤销提交到暂存区:

    git reset -soft SHA1
    
  • 撤销到提交到工作区:

    git reset -mixed SHA1
    
  • 将工作区、暂存区和版本库恢复到制定版本:

    git reset --hard SHA1
    

文件重命名

git mv old_file new_file

实际操作

文件移动:

mv old_file new_file

删除旧文件

git rm old_file

添加新文件

git add new_file

忽略文件

忽略文件模式:glob模式匹配

  • 忽略以#开始的行
  • 忽略某种格式结尾的文件:.[ao],以.a 或者*.o结尾的文件
  • 某个库文件除外,不忽略:!clib.a
  • 忽略临时文件:*~
  • 忽略根目录下的某个文件:/text
  • 忽略某个目录下的所有文件:libs/ 、libs/*.a
  • 需要手动创建.gitignore文件
*.bin  //忽略以*.bin文件

撤销本地修改

撤销工作区的修改

  • git checkout --file.c 
    
  • 让文件回到最近一次的commit 或者add的状态

  • 若文件还没添加到暂存区:撤回后和版本库一样

  • 若文件已添加到暂存区且做了修改:回到暂存区状态

撤销暂存区的内容

  • git reset HEAD file.c
    
  • 将暂存区的修改撤销掉,重新放回工作区

撤销版本库的提交

  • git reset --hard SHA1(HEAD^)   //丢弃
    
  • 回退版本,并刷新到工作区

  • 先前的提交对象还在版本库中孤独地存在着

差异比较

比较工作区和暂存区差异

  • git diff
    
  • 查看尚未咱村文件有哪些新的修改

比较暂存区和版本库差异

  • git diff --cached [HEAD]
    
  • git diff --staged SHA
    
  • 查看已暂存文件和上次提交的快照之间的差异

比较工作区和版本库差异

  • git diff HEAD(SHA1)
    
  • 查看未暂存文件和最新提交文件快照的区别

比较两个版本之前差异

  • git  diff SHA1 SHA2 
    
  • 查看不同版本之前的差异

压缩仓库

  • 通过git gc 命令压缩增量存储单元,节省空间
  • 快照的存储
    • 对于修改的内容:做快照处理并保存
    • 对于未修改的文件:做引用处理

高级命令使用

查看提交历史(git log)

  • 参数选项

    • 显示每个版本的修改差异

      git log -p -2 |git shortlog
      
    • 单行显示3条记录:

      git log -3 --pretty=oneline |git log --oneline
      
    • 图形化显示

      git log --graph |gitk
      
    • 查看最近2次提交的详细信息

      git log -2
      
  • 缉凶利器:git blame

    • 查看一个文件每一行的提交记录

    • 查看第6~11行代码是谁的提交

      git blame file.c -L 6,+5
      
    • 查看某个指定文件的提交修改历史

      git log -C file.c
      git log -c file.c   //查看修改的具体内容
      
  • 展开版本之间的内容变化:

    git log -p
    
  • 显示最近的两次更新

    git -n
    
  • 指定位置开始的n个提交

    git log HEAD^~2 -N
    
  • 制定版本之间的提交

    git log HEAD~3..HEAD
    
  • 仅显示行数变化

    git --stat
    
  • 显示新增、增改、删除文件清单

    git --name-status
    
  • 仅显示跟指定作者相关的提交

    git --author
    
  • 仅显示跟制定提交者相关的提交

    git --committer
    
  • 指定日志的起点

    git log SHA1
    

提交查找(git grep)

关键字查找

  • 不同的参数查找

    • 查找所有包含hello 字符串的文件:

      git grep hello
      
    • 显示关键字所在文件的查找

      git grep -n hello
      
    • 不显示内容,只显示文件名

      git grep --name-only hello
      
    • 查看每个文件里有多少个匹配

      git grep -c hello 
      
  • 特定版本中查找

    在v1.0版本里查找

git grep string v1.0

组合查找

  • 逻辑关系:与查找、或查找

    • 查找hello world

      git grep -e hello --and -e world
      
    • 查找hello 或world

      git grep -e hello --or -e world
      

修改提交

增补提交

​ 修改最后一次提交:修改提交信息或者内容

git commit --amend

反转提交

  • 将原来的提交取消掉

    git revert SHA1
    
  • 反转多个提交:要先反转最后提交,防止冲突。这是原操作的逆操作都在暂存区,然后重新提交

git revert -n HEAD
git revert -n SHA1
git commit -m "revert HEAD and SHA1"git revert conitue

如果涉及到冲突,可以使用git mergetool 或者修改文件解决

git 置位

复位

版本回退到工作区

git reset [--mixed] SHA1 //--mixed为默认参数,可以省略

软复位

回退到暂存区

git reset --soft SHA1

硬复位

从版本库和工作区中同时删除提交

git reset --hard SHA1

对提交重新排序

  • 通过人机交互模式改写历史

    • git rebase -i HEAD~3
      
    • 编辑提交信息

    • 退出,git会重新排序提交

  • 改写历史会重新生成新的commit

多个提交合成一个提交

  • 首先定位到要合并的三个提交

    git rebase -i HEAD~3
    
  • 将最新的2个提交合并到他们的父提交上,需要VIM命令操作

    HEAD\HEAD^:pick ->squash  //实际是过程
    
  • 修改提交信息

  • 保存退出,查看提交历史

将一个提交分解成多个提交

  • 进入交互模式

    git rebase -i SHA1
    
  • 定位需要修改的commit

    pick->edit
    
  • 检出到工作区、重新修改、多次提交.第一个提交的需要用到–amend

  • 继续rebase

    git rebase --continue
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值