Git 使用中的一些细节

来源:互联网 发布:mac下载软件存在哪里 编辑:程序博客网 时间:2024/05/14 06:18

git stash 的常用场景

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

$ git stash liststash@{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 不追踪

解决在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
原创粉丝点击