git的使用(二)

一 commit操作

  对于 git 操作,每次修改都是有所记录,比如删除并不是真的删除了,所有的操作都记录在磁盘上,git 的本质就是以空间换方便。
有如下提交历史:
在这里插入图片描述

1 修改提交记录

  在提交过程中,有时候发现某次的提交记录不恰当,需要修改,可以使用如下操作:

# git rebase -i 434b071f

在这里插入图片描述
  将需要修改的提交的 pick 修改成 edit,ctrl+x 退出,y 键保存,显示如下:

Stopped at f0f7a14...  modfy a.c
You can amend the commit now, with

  git commit --amend

Once you are satisfied with your changes, run

  git rebase --continue

  然后依次执行命令:

# git commit --amend  在此修改记录
# git rebase --continue

2 删除提交

  对于一个大型项目,开发周期的增加,导致提交的次数也增加,有可能一个功能会需要提交好几次,对于参与开发的人来说增加了负担,故此需要定时删除一些 commit 记录。但是,drop很多时候会出现错误,此错误无法解决,不建议使用。如下提交记录:
在这里插入图片描述
  rebase 操作的命令如上图,包括删除某一次的提交记录。删除的记录是可以找到的,即可以回退。使用 git reflog 和 git reset 回到原来的位置。
  如果是需要删除最新提交的记录,可是使用git reset --soft commit-id进行回退。

3 合并提交记录

  合并提交记录的操作有两个,都是合并到前一个commit中,具体的区别如下:
在这里插入图片描述
  squash操作需要重新编辑两次的提交,如下,红框内的为前两次的提交日志,需要注释掉,然后重新编辑此次的提交日志:
在这里插入图片描述
  fixup将提交日志丢弃,默认使用上次的提交日志。

二 stash功能

  Git 提供了一个 stash 功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作(前提是文件已经被跟踪)

$ git stash #保存工作区
Saved working directory and index state WIP on dev: 6224937 add
merge
HEAD is now at 6224937 add merge
$ git stash list #查看已经保存的工作区
stash@{0}: WIP on dev: 6224937 add merge

  工作现场还在,但是需要恢复一下,有两个办法:

$ git stash apply #恢复后,stash内容并不删除
$ git stash drop #删除stash内容
$ git stash pop #恢复的同时把stash内容也删了

  多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{0}

三 自定义功能

1 忽略特殊文件

  有时必须把某些文件放到Git工作目录中,但又不能提交它们,每次 git status 都会显示“Untracked files …”,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
  GitHub已经写好的各种配置文件,只需要组合一下就可以使用了:https://github.com/github/gitignore
  最后一步就是把 .gitignore 也提交到Git,就完成了!

2 忽略文件夹

  对于文件夹的忽略比较特殊:

# 注释行
# 忽略dbg文件和dbg目录
dbg
# 只忽略dbg目录,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg

  :代表任意的一个字符;*:代表任意数目的字符;{!ab}:必须不是此类型;{ab,bb,cx}:代表ab,bb,cx中任一类型即可;[abc]:代表a,b,c中任一字符即可;[^abc]:代表必须不是a,b,c中任一字符。

3 .gitignore失效

  某些文件如果已经被纳入了版本管理中,后期在 .gitignore 中已经声明了忽略路径也不起作用,这时候我们就应该先把本地缓存删除,然后再进行 git push 操作,这样就不会出现忽略的文件了。
  git清除本地缓存命令如下(例如删除 .idea 文件夹的版本控制):

# 先将 .idea 的文件路径加入 .gitignore
git add .gitignore
git rm -r --cached .idea
git add .
git commit -m 'update .gitignore'

  这样就将 .idea 从版本控制中删除了。

4 .gitattributes

  指定非文本文件的对比合并方式。

四 配置

  config 配置有system级别 global(用户级别) 和local(当前仓库)三个 设置先从system-》global-》local 底层配置会覆盖顶层配置 分别使用–system/global/local 可以定位到配置文件:

1 查看配置

  查看系统config:git config --system --list
  查看当前用户(global)配置:git config --global- --list
  查看当前仓库配置信息:git config --local --list

2 git命令中文显示乱码

  使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如897\232\350\256…的乱码,解决办法:git config --global core.quotepath false
  原因:core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

五 查看 git项目的地址及子模块

  使用命令:git config -l
  关于子模块的介绍在第四篇中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值