Git Bash学习笔记

来源:互联网 发布:医疗数据分析师 编辑:程序博客网 时间:2024/05/22 04:58

Git官方网站: https://git-scm.com
Git官方中文手册: https://git-scm.com/book/zh/v2
Git在线学习: https://try.github.io

  • 删除远程仓库(remote)的文件或目录
    描述: 没有用.gitignore的时候我把outtarget也上传到远程仓库去了,现在想把这些多余的文件从远程仓库中删掉(工作区需要保留).
    解决:如果本地仓库(本地版本库)中没有远程仓库的项目副本!那请先把项目pull下来保持一致.
git rm -r --cached out/git rm -r --cached target/解释:删除并且停止追踪指定文件夹,该文件夹会继续保留在工作区rm命令参数: -r 递归操作文件夹 --cached 停止追踪指定文件/文件夹

  隐式从本地仓库取放到暂存区->递归删除停止追踪关联文件/文件夹(注:这段话前半部分是我猜的)
  然后提交更改(TODO待补充)

git commit -m "删除并停止关联了多余的文件/文件夹" 把暂存区的更改提交到本地仓库git push origin master把本地仓库的 master 分支 推送到 origin 主机的对应分支上,如果后者不存在,则会被新建

  至此操作完成了,可以去远程库看看commits会+1,证明已成成功了~

  • 忽略文件或目录

  • 列表内容

  • 储藏未修改完成(不想commit但又需要存起来)的代码,切换到另一个branch做一些事情

    描述: 在加一些新功能的途中,我需要去其他branch做一些操作.但又想把刚做的半成品存起来,等操作完其他branch后取回去继续coding.
    解决: 解决方案总伴随着问题的出现而产生的

error: Your local changes to the following files would be overwritten by checkout:
或||
error: Your local changes to the following files would be overwritten by merge:
  someDirectory/someFile.XXX
Please, commit your changes or stash them before you can merge.

或||
Please commit your changes or stash them before you switch branches.

  Git中断并提示报错,得知需要你在操作之前先commit或stash变更的文件.此时执行下面命令查看变更文件

git status //显示文件变更

  文件有变更后,我们执行以下命令来stash(储藏)变更(注:stash会记录工作区[working directory]和暂存区[index/stage ]引用)

git stash //储藏变更 扩展:名称为 stash@{0} 0为变数自增长或者git stash save "some changes by xx" //以"something"内的字符作为名字储藏起来

  控制台提示Saved working directory and index state巴拉巴拉…就储藏成功了.输入git status查看工作区和暂存区.
  然后查看一下储藏的东西git stash list此时已经有记录在里面了.可以放心的去其他分支做事情了git checkout master

  如需取回,执行git stash apply来取回当前分支最后一次储藏的内容 或 git stash pop +=并从储藏的列表删除 引用

  • 储藏被清空了,如何恢复?
    描述: 无~
    解决:
git fsck --lost-found

  此时会出现一串

Checking object directories: 100% (256/256), done.
dangling commit 4611cfb715ae4ac1dd18953084ef633145b41fac
dangling commit d53189cf76ffe79095238893d89f2c8203764233
dangling blob 18a44d78b5e5d7c17c381cb7cb9cfaa9d8541a30
dangling blob 3da41d0ff9debeacc67e009db62ad3831826e57a
dangling commit 3b867c43bad0213e53572ba543bd01b8c82cafdf
dangling blob 8178c9f19296e19d5b69a556325179f53b4639d6

  复制dangling commit后的id(dangling blob无视掉)

git show 4611cfb715ae4ac1dd18953084ef633145b41fac //查看具体内容

commit 4611cfb715ae4ac1dd18953084ef633145b41fac
Merge: 32f5997 696fdfb
Author: someone someone@gmail.com
Date: Fri Oct 20 17:26:02 2017
+0800

  WIP on dev: 32f5997 更新ignore过滤规则
……
一些新加修改删除什么的…接下来可以复制下来找下自己commit的说明文字

  确定要恢复的记录赋值该记录的idgit merge 4611cfb715ae4ac1dd18953084ef633145b41fac就搞定了
  

原创粉丝点击