git恢复误删文件及省去密码提交
自己遇到这种情况:自己将某文件在网页的控制面板上直接删除了,再pull下来。或者一个成员误删除了某个文件,然后push到远程库了,其他成员也都pull了,结果就是所有人的本地库当前版本中这个文件都不见了,那么如何恢复呢?
想到用revert恢复上一次提交或用reset和push -f重置版本并强制推送到远程库,经过实验发现这样做只能保证自己的本地库和远程库回到之前一个版本,而其他人想通过git pull同步是无效的,远程库版本已经低于其他人的本地库版本,这时候难道让其他人都删除版本库重新从远程库克隆?得不偿失。
然后就想,能不能从之前的版本中检出这个文件,然后重新添加到版本库中?再作为一个新的提交来挽救?
经实验室可以的,过程如下:
git checkout HEAD^ -- a.txt
HEAD^ 代表上一次提交,
-- a.txt 表示将上一次提交里的a.txt文件检出到工作区,这样a.txt就回来了。
接着:
git add a.txt && git commit -m "recover a.txt" && git push
其他人直接git pull
push时要你输入密码是因为你使用HTTPS方式,但是用SSH更方便更安全,不需要去输入长长的密码。
解决方案有多种:
修改repo目录下的.git/config,可以看到url是HTTPS形式。
[remote "origin"]
fetch = + refs/heads/*:refs/remotes/origin/*
url = https://username@github.com/username/projectname.git
为了使用SSH公钥的方式认证,把config的url改成下面这样
[remote "origin"]
fetch = + refs/heads/*:refs/remotes/origin/*
url = git@github.com:username/projectname.git
这样我git push的时候又可以用SSH公钥认证而不用去输入用户名和密码,不仅方便,而且更安全。
Linux 用户可以使用 ‘cache’ 认证助手包来缓存认证信息,运行下面的命令来启用凭据缓存,启用后每次输入密码将保存一小时(3600秒):
git config --global credential.helper 'cache --timeout 3600'
下面的命令可以查看 ‘cache’ 认证助手的所有配置:
git help credential-cache
除了这些方法之外,还有一种使用 .netrc 文件的方式.
git恢复误删文件及省去密码提交的更多相关文章
- Git恢复指定文件
Git恢复指定文件 修改这个文件的commit有哪些? git log -- <文件路径> 猜测需要还原的commit. 这个文件作了哪些更改? git diff <需要还原的com ...
- eclipse如何恢复误删文件
刚刚真的要吓死宝宝了,不是说宝宝心里素质差,是因为刚刚误删的文件实在是太重要了,废话不多说了,正题 如何恢复eclipse误删的文件 1,当时被误删了,可立即 Ctrl+z 即可恢复误删文件; 2,时 ...
- 【转载】恢复误删文件--DOS命令应用实例(一)
<电脑爱好者>报转载第一辑第二篇之恢复误删文件--DOS命令应用实例(一) 恢复误删文件--DOS命令应用实例(一) 上期我们讲述了 ...
- git 恢复单个文件的历史版本
首先查看该文件的历史版本信息:git log Default@2x.png 记录下需要恢复的commit版本号:如 9aa51d89799716aa68cff3f30c26f8815408e926 恢 ...
- git 恢复单个文件
首先查看该文件的历史版本信息:git log Default@2x.png 记录下需要恢复的commit版本号:如 9aa51d89799716aa68cff3f30c26f8815408e926 恢 ...
- Linux下恢复误删文件:思路+实践
周五篮球群里有人问误删文件了怎么恢复,得知是ext4文件系统之后我推荐了ext4magic这个工具,然后又有人提到了xfs的话怎么办,正好前几天看到Dave Chinner在邮件列表里提到了这个问题, ...
- GIT 恢复单个文件到历史版本
首先查看该文件的历史版本信息:git log <file> 恢复该文件到某个历史版本:git reset 版本号 <file> 检出改文件到工作区:git checkout - ...
- lsof恢复误删文件
用 lsof 恢复 误删除文件实验: 先模拟一个进程: [tiger@root:/home/tiger]$ echo "hello deletede" >> test. ...
- git 恢复误删的文件
误删的文件如何恢复呢? 执行下面的命令: 1. git reset HEAD a.txt 2. git checkout a.txt 注意:上面两个命令,可以帮我们找回删除的文件,但是对文件内容的修改 ...
随机推荐
- [转]各种有用的PHP开源库精心收集
FROM : http://my.oschina.net/caroltc/blog/324024 1.html2ps and html2pdf 下载地址: http://www.tufat.co ...
- stringstream的用法【转】
[本文来自]http://www.builder.com.cn/2003/0304/83250.shtmlhttp://www.cppblog.com/alantop/archive/2007/07/ ...
- windows下安装git & 在git@OSC上推送代码
第一部分 windows下安装git 1.下载最新版本的git:直接百度“git”,如图所示,点击立即下载. 也可以直接在官网下载最新版本的git:http://www.git-scm.com/dow ...
- 分布式中使用Redis实现Session共享(一)
上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享".这篇文章将会介绍如何使用Redis,下一篇 ...
- SignalR与ActiveMQ结合构建实时通信
一.概述 本教程主要阐释了如何利用SignalR与消息队列的结合,实现不同客户端的交互 SignalR如何和消息队列交互(暂使用ActiveMQ消息队列) SignalR寄宿在web中和其他Signa ...
- 青瓷引擎使用心得——修改引擎的loading界面
一. 修改引擎的Loading界面之使用进度条显示1. 双击打开引擎包中的lib/qc-loading-debug.js,如下图所示: 2. 只需要修改qici.init函数即可改变loading界面 ...
- [BZOJ3211]花神游历各国(线段树+区间开根)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3211 分析: 区间开根是没法区间合并的. 但是注意到10^9开根开个5次就变成1了…… ...
- The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path。
项目上右键-->Build Path-->Configuration Build Path -->Add Library -->Server Runtime 选择tomcat
- iOS 自定义NavigationBar右侧按钮rightBarButtonItem--button
//两个按钮的父类view UIView *rightButtonView = [[UIView alloc] initWithFrame:CGRectMake(, , , )]; //历史浏览按钮 ...
- Bootstrap滚动监听
滚动监听(Scrollspy)插件,即自动更新导航插件,会根据滚动条的位置自动更新对应的导航目标.其基本的实现是随着您的滚动,基于滚动条的位置向导航栏添加 .active class. <!DO ...