Git 使用中的一些细节

####git stash 的常用场景

git stash 将当前工作区修改的代码,缓存到缓存区中
git stash list 查看缓存区的列表,所有的缓存都能看到
git stash pop [缓存区索引] (不给索引,默认拿出当前所有) 将放入缓存区的 代码拿出来,并从缓存列表中删除

$ git stash list
stash@{0}: WIP on test2: d94cc61 test stash

$ git stash pop stash@{0}
modified:   tt.txt

git stash apply [缓存区索引] (不给索引,默认拿出当前所有) 将放入缓存区的 代码拿出来,但不从列表中删除

应用场景1:如果在拉取代码的时候,提示本地有修改,不能拉取时,但是你不想提交本地修改,这是就可以使用
git stash 把你修改的代码放入 缓存区中,这是本地工作区目录就干净了,再 git pull , 拉取成功后,
再 git stash pop 或者 git stash apply 把缓存区的代码拿出来

1. git pull //拉不下来时
2. git stash // 把当前工作区的代码放入缓存区
3. git pull // 可以拉取成功
4. git stash pop // 或者 git stash apply 从缓存区把之前缓存的代码拿出来
5. //如果拿出来后冲突了,打开编辑器删掉冲突代码
6. git add 代码文件 // 解决冲突后,重新添加和提交代码
7. git commit -m '提交注释'

应用场景2:如果在 git stash 放入缓存区后,不小心 执行了 git stash clear 清空了缓存区的 列表,这时所有
修改的代码就没了,执行如下命令找回

1. git log --graph --oneline --decorate  $( git fsck --no-reflog | awk '/dangling commit/ {print $3}')
2. 复制刚缓存的 sha1值,一般是最新的在最上面,
3. $ git stash apply 106adb6 //106adb6 就是sha1值,不用pop 是因为 pop是从列表中拿取得
--graph --oneline --decorate 这三个参数可不加,个人喜好

忽略永远不提交的文件

git update-index --assume-unchanged 文件名 //永远的忽略某个文件,让git 不追踪
git update-index --no-assume-unchanged /path/to/file  #恢复跟踪

解决在windows 下git 不区分文件名大小写问题

//在windows下不区分大小写,导致文件名大小写修改后,git 不能追踪变动。
//使用以下命令,可以让git 追踪文件名大小写变动。

git config core.ignorecase false

解决文件或文件夹大小冲突

error: The following untracked working tree files would be overwritten by merge:
有时候本地代码什么都没改,但是拉取时,报错,很可能是因为文件大小写的问题,同一个文件,本地是小写,远程已经改为大写,就可能会出现上面的报错
解决方法1: 解决当前的冲突

git rm --cached <filename> //filename 是本地文件
//修改文件名
mv <本地小写文件> <远程大写文件>
git add <本地修改之后的大写文件>
git commit -m '本地小写文件,修改为大写文件'

避免以后遇到这样的问题

git config core.ignorecase false // 让git管理的文件 大小写变得敏感
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值