| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
clfalh
8年前发布

Git回滚远程版本

   <p> </p>    <pre>  摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!</pre>    <p>“房子是租的 但生活不是”</p>    <h2>1.故事的开始</h2>    <p>远程master分支下代码被不小心提交了很多垃圾代码或项目删掉,想要回滚到以前的某一版本并删除commit log。怎么办?情景如图:</p>    <p><img src="https://simg.open-open.com/show/a2ad2ebae55a46bb0f94c7f69abec6af.png"></p>    <p>情景很简单。老板上传了个文件,我把他删掉了。有一种办法,把文件再push下,但是也不想他看到图中那comment(ps:这样我才不会被fire)。实现上面场景的代码如下:</p>    <ol>     <li>vim A.txt</li>     <li>git add .</li>     <li>git commit -a -m "add A.txt"</li>     <li>git push</li>     <li>rm A.txt</li>     <li>git commit -a -m "我删除了老板的东西"</li>     <li>git push</li>    </ol>    <p>————–分割线 ————–</p>    <p>一头雾水的小白怎么办?怎么办?怎么办?</p>    <p>push到远程的提交默认是不能修改的,但是一定要修改不是不行:</p>    <ol>     <li>git push -f</li>    </ol>    <h2>2.解决之道</h2>    <h3>2.1工作区,暂存区,本地版本库 & 远程版本库</h3>    <p>No pic say 个 78。。。</p>    <p><img src="https://simg.open-open.com/show/587c2405ca1365bb0f74a74bd2e6b022.png"></p>    <p>》》工作区:就是我们操作的目录</p>    <p>》》暂存区:操作目录的快照</p>    <p>》》本地版本库:Git的精髓,人人都是中央仓库。也就是Git分布式的好处,自然对比SVN这种集中式</p>    <p>》》远程版本库:Github这种中央仓库,可以达到共享。</p>    <p>常用的操作也如图所示,不言而喻了。</p>    <h3>2.2 实战解决</h3>    <p>Talk is cheap,Show me the code or money~ 代码如下:</p>    <ol>     <li>git log</li>     <li>git reset --soft ${commit-id}</li>     <li>git stash</li>     <li>git push -f</li>    </ol>    <p>详解如下:</p>    <p>第1行: <strong>git log 查看提交历史,然后找到要回滚的版本</strong> 。历史如下,</p>    <ol>     <li>commit 84686b426c3a8a3d569ae56b6788278c10b27e5b</li>     <li>Author: JeffLi1993 <qiangqiangli1993@gmail.com></li>     <li>Date:   Fri Apr 8 19:11:32 2016 +0800</li>     <li>   我删除了老板的东西</li>     <li>commit 72bd6304c3c6e1cb7034114db1dd1b8376a6283a</li>     <li>Author: JeffLi1993 <qiangqiangli1993@gmail.com></li>     <li>Date:   Fri Apr 8 19:05:23 2016 +0800</li>     <li>   add A.txt</li>    </ol>    <p>我们想要回滚到的版本就是:72bd6304c3c6e1cb7034114db1dd1b8376a6283a</p>    <p>第2行:git reset –soft 72bd6304c3c6e1cb7034114db1dd1b8376a6283a</p>    <p>撤销到某个版本之前,之前的修改退回到暂存区(不懂看漂亮的图哦~)。soft 和 hard参数的区别就是,hard修改记录都没了,soft则会保留修改记录。</p>    <p>第3行:暂存为了安全起见。</p>    <p>第4行:git push -f</p>    <p>将本地master push 到远程版本库中, <strong>-f 强制覆盖</strong> 。</p>    <h2>3. 小结</h2>    <p>git reset 回滚到某个版本之前git push -f 强制push覆盖</p>    <p>欢迎点击我的博客及GitHub — 博客提供RSS订阅哦!</p>    <p>———- <a href="/misc/goto?guid=4959642205888010319" rel="nofollow,noindex">http://www.bysocket.com/</a> ————- <a href="/misc/goto?guid=4959638943650856364" rel="nofollow,noindex">https://github.com/JeffLi1993</a> ———-</p>    <p>微         博:BYSocket豆         瓣: <a href="/misc/goto?guid=4959628303762469932" rel="nofollow,noindex">BYSocket</a> 非死book: <a href="/misc/goto?guid=4959638943315445730" rel="nofollow,noindex">BYSocket</a> 推ter    : <a href="/misc/goto?guid=4959638943412556692" rel="nofollow,noindex">BYSocket</a></p>    <p>来自: <a href="/misc/goto?guid=4959670086560730703" rel="nofollow">http://www.bysocket.com/?p=926</a></p>    
 本文由用户 clfalh 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1460134175743.html
Git 版本控制系统