设为首页 收藏本站
查看: 945|回复: 0

[经验分享] git小技巧

[复制链接]

尚未签到

发表于 2018-9-18 08:44:12 | 显示全部楼层 |阅读模式
  在使用git过程中记录的一些小技巧,希望对大家能有所帮助。
  
  一、彻底删除仓库中的无效文件
git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch path/to/your/file' HEAD  
git push origin master --force
  
rm -rf .git/refs/original/
  
git reflog expire --expire=now --all
  
git gc --prune=now
  
git gc --aggressive --prune=now
  二、解决 Agent admitted failure to sign using the key 问题 with ssh
  之前如果建立 ssh 连接,只要將公钥复制到 ~/.ssh/authorized_keys 就可以利用公钥登入,而不需要建立密码。
  现在的 ssh 使用同样的方法会出現错误信息:
  Agent admitted failure to sign using the key
  解決方法:

  使用 ssh-add 指令將私钥加进来(根据个人的密匙命名不同更改>  # ssh-add   ~/.ssh/id_rsa
  如果遇到错误:Could not open a connection to your authentication agent.
  请先执行:ssh-agent bash
  使用putty进行OSChina的SSH登录
  1、安装putty完整安装包;
  2、使用puTTygen生成puTTY格式的私钥,Load->选择私钥文件->另存为.ppk文件,启动Pageant,将生成的私钥加到代理中Add Key;
  3、设置cygwin的环境变量:export GIT_SSH=/cygdrive/e/Program\ Files/PuTTY/plink.exe;
  4、先使用plink.exe命令缓存一下SSH连接:/cygdrive/e/Program\ Files/PuTTY/plink.exe -T -i F:/Tools/Programs/Git/cygwin/home/Administrator/.ssh/ddkangfu.ppk git@git.oschina.net;
  5、使用clone命令克隆代码:git clone git@git.oschina.net:ddkangfu/evaluation.git
  6、如果pull一个分支的时候遇到如下错误时:
  $ git pull develop origin/develop
  fatal: 'develop' does not appear to be a git repository
  fatal: The remote end hung up unexpectedly
  执行命令:
  git branch --set-upstream develop origin/develop
  然后再pull。
  7、在使用git时,在未添加.ignore文件前使用 git add . 将所有文件添加到库中,不小心将一些不需要加入版本库的文件加到了版本库中。由于此时还没有提交所以不存在HEAD版本,不能使用 git reset HEAD命令。
  解决:(1)使用git rm -r --cached .
  (2)可以运行git reset FILE`, 他可以将File从当前要提交的文件集合中移除(未验证), git reset HEAD yourfile
  
  四、git-flow --> 一个成功的Git分支模型
  介绍:http://nvie.com/posts/a-successful-git-branching-model/
  翻译:http://www.juvenxu.com/2010/11/28/a-successful-git-branching-model/
  工具:https://github.com/nvie/gitflow
  git-flow备忘清单:http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
DSC0000.jpg

  
  五、git diff用法解释
  git diff 比较的是工作目录树与暂存区之间的区别。
  git diff --cached 比较的是暂存区和版本库最后一个版本的区别。
  git diff HEAD 比较的是工作目录树(包括暂存的和未暂存的修改)与版本库最后一个版本的差别。
  git diff v1.6.0 -- README 从一个特定点开始文件的修改情况(查看创建v1.6这个标签之后README文件所发生的修改)
  git diff v1.0 v1.1 两次提交的差异比对(对两次快照做差异比对,也即项目的两个版本之间比对--直接在git diff后跟上要比对的两个版本号即可)
  git diff v1.6.1.1 v1.6.1.2 --stat 显示v1.6.1.1和v1.6.1.2两个版本之间差异的统计数字,还可以深入查看某个具体文件的变更比对:git diff v1.6.1.1 v1.6.1.2 -- sha1_file.c
  git diff ...(branch) 在合并某分枝前查看变更内容(举例来说,如果你创建了一个'dev'的分枝,进入这个分枝给lib/simplegit.rb添加了一个函数,然后回到了'master'分枝,删除了README文件的一行,然后运行:
  git diff master dev 结果会显示你给某个文件中添加了方法,还往README文件添加了一行内容。为什么会这样?因为对'dev'分枝来说,README文件还是原样,而在'master'上,你已经删掉了一行,这样直接对两个快照进行对比就好似'dev'分枝添加了一行进去一样。你想查看的实际上是在创建dev分枝之后在这条分枝上的差异对比,所以应该执行这样的命令:git diff master...dev 这就不会拿master分枝上最后一个快照和dev分枝上最后一个快照进行比对--而是用dev与master所交的那个分歧点和现在的dev分枝上最后一个快照进行比对。在我们这个例子中,这样比对的结果是显示对那个文件添加了一个函数。如果你目前正处在master分枝上,你可以运行:git diff ...dev跟上面的结果是一样的。所以,如果你想查看将要合并的某个分枝会有什么样的变化,可以执行:git diff ...(branch)将branch替换为你想要合并的分枝名即可。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-589517-1-1.html 上篇帖子: Git如何永久删除文件(包括历史记录) 下篇帖子: 基于gitolite的git服务架设
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表