git other-误删恢复等
修改未push的最后一次commit
如在commit后发现漏添加的文件或者commit message需要修改,则可以依次执行:
git add FILE_UN_STAGED # 将未提交的文件添加至缓存区
git commit --amend # 弹出文本编辑器,按需修改提交信息
删除错误的提交 commit
git reset --hard <commit_id>
git push origin HEAD --force
删除已经提交的 ignore 文件
有时候我们想忽略某些文件的提交,在.gitignore文件中声明后并不能直接生效,因为该文件已经被track:
git rm --cached file 再commit,如果不加--cached则在本地工作区也会被删掉.
回退文件版本
git 回退某些文件到之前提交的版本
git checkout COMMIT_ID -- FILE_LISTS
如回退到导数第二次提交COMMIT_ID可以写作HEAD~1
恢复误删文件
从之前的版本中检出这个文件,然后重新添加到版本库中,再作为一个新的提交来挽救:
git checkout HEAD^ -- a.txt
其中HEAD^ 代表上一次提交,
-- a.txt 表示将上一次提交里的a.txt文件检出到工作区,这样a.txt就回来了。
接着:
git add a.txt && git commit -m "recover a.txt" && git push
合并两个仓库
示例:将repo2合并到repo1
cd repo1
git remote add other ../repo2 # 这里repo2地址可以是本地目录也可以是网络地址,设置别名为other
git fetch other # 从repo2仓库中抓取数据到本仓库
git checkout -b repo2 other/master # 将repo2仓库的master分支作为新分支checkout到本地,新分支名设定为repo2
此时当前的分支的remote地址是原repo2的,可以在这个分支上向repo2继续提交代码,
如果想将当前分支提交到repo1的新远程分支,使用git push -u origin <新远程分支的名字>
git checkout master
git merge repo2 # 将新分支合并到master
如果不需要原repo2的remote的话,执行git remote remove repo2,执行git remote可以查看到remote列表,或者查看.git/config中的文件内容。
在合并时有可能两个分支对同一个文件都做了修改,这时需要解决冲突,对文本文件来说很简单,根据需要对冲突的位置进行处理就可以。对于二进制文件,需要用到如下命令。
git checkout --theirs BINARY_FILES // 保留需要合并进来的分支的修改
git checkout --ours BINARY_FILES // 保留自己的修改
git add BINARY_FILES
若是文件有冲突、或要建立子目录,建议在repo1中先解决,再进行合并操作。
存储/从文件系统检索
一些项目(例如 Git 项目自身)直接在 Git 文件系统中存储额外的文件而不必是检入文件。
让我们开始在 Git 中存储一个任意文件:
$ echo "Foo" | git hash-object -w --stdin
51fc03a9bb365fae74fd2bf66517b30bf48020cb
此时,该文件对象已在数据库中,但是如果你不设置(一些东西)指向那个文件对象,它将被作为垃圾而回收。最简单的方法是标记它:
$ git tag myfile 51fc03a9bb365fae74fd2bf66517b30bf48020cb
既然在这里我们已经标记了 myfile。当我们需要获取该文件时,我们可以这样做:
$ git cat-file blob myfile
程序员可能经常用到的工具文件(密码、GPG 密钥、等等),不需要每次都检出到磁盘上(特别是在生产环境下),这种方法非常有效。
代理
- 设置代理
git config –global http.proxy http://127.0.0.1:8080
git config –global https.proxy http://127.0.0.1:8080
git config --global http.proxy socks5://127.0.0.1:8443
git config --global https.proxy socks5://127.0.0.1:8443 - 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
不加global只适用于当前仓库。
git clone 加速完成
git clone --depth 1 <repository>
depth可以控制clone的历史记录层级,显然clone最新的提交占用空间最小,这对于大型工程的clone会体现出时间的缩短。
git fetch也一样。
git设置postBuffer: git config --global http.postBuffer 524288000
能加上传大文件,且有时候能加速clone速度(从十几k到300kb/s)
git other-误删恢复等的更多相关文章
- git stash 暂存恢复和文件误删恢复
git commit提交文件,服务器返回本地文件有修改. 1.git stash :暂存本地代码 2.git pull origin develop : 获取远程分支代码 3.git stash po ...
- git 签出(恢复)指定文件
在项目开发中,偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件.此篇文章将介绍如何通过git从历史提交记录.分支记录恢复指定文件. 1. git checkout 说明:使用git chec ...
- 团队项目管理:Github项目误删恢复记录
参考: 准备更换git托管,如何迁移原git仓库 Github项目误删恢复记录 今天正常上线打卡,发现组织的线上Github仓库被误删了..本来是一场悲剧,所幸在本地的垃圾箱中翻出了还没有删除的本地仓 ...
- linux 下文件误删恢复
linux 下文件误删恢复 0x01 事件背景 某天晚上写代码的时候,本来想删除当前目录下一个叫xxx的文件夹 rm -rdf ./xxx/*, 结果光顾着和人说话,一不留神手贱把命令敲成了rm -r ...
- GIT仓库如何恢复到前一次提交
GIT仓库如何恢复到前一次提交 通过使用Git版本恢复命令reset,可以回退版本.reset命令有3种方式: git reset –mixed:此为默认方式,不带任何参数的git reset,即 ...
- Linux MBR扇区误删恢复
目录 1. 引导记录误删恢复 1.1 备份引导记录 1.2 误删引导记录 1.3 恢复引导记录 2. 分区表误删恢复 2.1 备份分区表 2.2 误删分区表 2.3 恢复分区表 如果MBR分区表没了, ...
- Git 将代码恢复到一个历史的版本
Git 将代码恢复到一个历史的版本 要把代码回到某个历史版本 比如 test有两种方法 暴力的方式 如果你的仓库是自己在用(不影响别人),那么你可以使用 git reset --hard <ta ...
- Git提交与恢复
Git提交与恢复 提交修改 git add --all # 提交所有修改文件 git add file file # 提交部分修改文件 $ git status On branch master Yo ...
- git中误删提交(commit)后,怎么恢复
“xml文件存储数据”提交被我误操作,即使用reset --hard删除了,然后又进行了三次提交,发现删除的提交有用,需要找回来, 于是找了好久,找到好方法: 1.进入工程下的.git文件下,git ...
随机推荐
- MySQL清理慢查询日志slow_log的方法
一.清除原因 因为之前打开了慢查询,导致此表越来越大达到47G,导致磁盘快被占满,使用xtrabackup进行备份的时候文件也超大. mysql> show variables like 'lo ...
- libgdx学习记录22——3d物体创建
libgdx是一个强大的游戏框架,不仅支持2d部分,同时还支持3d部分. libgdx的3d部分投影主要通过PerspectiveCamera实现. 物体的显示过程: 1. 创建远景相机,角度一般设为 ...
- NodeJs学习一NodeJs初识
一.前言 按照惯例,先扯淡,就因为这货,现在才有了各大公司招聘的全栈工程师,正是因为它,让以前只会写前端的人也能写起后端服务器代码来了.所以呢,你招一个会NodeJs的前端,它都能把后端干了,一个人干 ...
- 转--看完让你彻底搞懂Websocket原理
偶然在知乎上看到一篇回帖,瞬间觉得之前看的那么多资料都不及这一篇回帖让我对 websocket 的认识深刻有木有.所以转到我博客里,分享一下.比较喜欢看这种博客,读起来很轻松,不枯燥,没有布道师的阵仗 ...
- 初学Direct X(7) ——位图的旋转,缩放以及平移
初学Direct X(7) --位图的旋转,缩放以及平移 本文旨在实现通过D3DXMatrixTransformation2D函数实现位图的旋转,缩放以及平移操作,但是具体的原理部分会在后面进一步的探 ...
- springmvc 集成apache cxf 开发webservice 示例
今天需要在springmvc中增加webservice功能,试了多次axis2,和cxf都不行,后来发现在springmvc中最好用cxf集成非常方便,在又一次尝试后终于把demo整合到现有的项目中 ...
- 第二个Sprint冲刺第 八天(燃尽图)
因为今天停电了,所以我们也休息一天!
- Spark 实践——基于 Spark MLlib 和 YFCC 100M 数据集的景点推荐系统
1.前言 上接 YFCC 100M数据集分析笔记 和 使用百度地图api可视化聚类结果, 在对 YFCC 100M 聚类出的景点信息的基础上,使用 Spark MLlib 提供的 ALS 算法构建推荐 ...
- C# 7中函数多值返回_转自InfoQ
本文要点 应遵循<.NET设计规范:.NET约定惯用法与模式>一书.和十年前第一版出版时一样,书中给出的原则在当前依然有指导意义. API设计是最重要的.设计不好的API会在极大地增加软件 ...
- Win2008r2 由ESXi 转换到 HyperV的处理过程
1. 大部分2008r2 采取了 windows loader的方式激活 这种方式 会导致hyperV 启动失败 因为他家在了错误的bios类型 所以第一步建议 使用windows loader 卸载 ...