玩转GIT
git tag
https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
git tag:查看所有tag
git tag -l 'v2.1.2.20170111.*'
git tag xx:打tag
git show v2.1.2.20170111.3.bgy
git push origin v2.1.2.20170111.3.bgy: 提交tag
git push origin --tags 要一次推送所有本地新增的标签上去
checkout到某个tag:
先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。
但是这时候 git 可能会提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:
git checkout -b branch_name tag_name
这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。
git reset/revert 撤销
http://yijiebuyi.com/blog/8f985d539566d0bf3b804df6be4e0c90.html
http://gitbook.liuhui998.com/4_9.html
http://blog.jobbole.com/87700/
git revert 撤销某一个commit
git revert是用一次新的commit来回滚之前的commit
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
通常,前几位即可 git revert c011eb3
git reset 回退代码到指定状态
--mixed 未add的时候
会保留源码,只是将git commit和index 信息回退到了某个版本.
git reset 默认是 --mixed 模式
git reset --mixed 等价于 git reset
--soft add之后
保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
--hard 撤销commit和add操作
源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
特殊场景:当用reset 恢复了远端代码,其他人pull更新本地代码,根本不能感知线上的回退。
解决:执行git reset --hard origin/release/1.2.2,把本地代码强制更新为远程的1.2.2分支最新的状态;
reset远程仓库代码之后没有多出来commit,此时执行pull感受不到远端比本地多出来的变化(没有新的commit),所以不会把远端代码更新到本地;
revert则会产生新的反向commit;
恢复某个文件:
git checkout -- hello.rb
这条命令把hello.rb从HEAD中签出并且把它恢复成未修改时的样子.
远程代码覆盖本地
解决方法:
1、如果还没有 commit 的话,可以用
git checkout .
这样将使所有代码还原到最后一次 commit 的状态
2、如果已经 commit 了,最简单的方法就是,删除当前的工程(注意保存有用的代码到别的地方)
然后使用
git clone https:// ....
重新 clone 远程工程到本地
或者 git fetch --all
git reset --hard origin/mastergit reset --mixed HEAD
将你当前的改动从缓存区中移除,但是这些改动还留在工作目录中。
另一方面,如果你想完全舍弃你没有提交的改动,你可以使用git reset --hard HEAD
。这是git reset
最常用的两种用法
git pull 的意思并不是覆盖,而是和远程做一次比对,如果远程代码比本地的新,就把本地代码调整到远程代码最后一次 commit 的状态。而针对问题中的情况,本地代码比远程的新,所以 git pull 不会有任何作用。
版本恢复
版本恢复,本地和远程都恢复到历史提交版本commitid:
git reset -hard 6292d98 #本地恢复到指定版本,git reset --hard HEAD是恢复到最近提交
本地分支强行覆盖远程分支
git push origin master -f #强制用本地分支更新远程分支
http://www.tech126.com/git-reset/#comment-8055下面的评论
删除远程分支
http://zengrong.net/post/1746.htm
git删除远程分支:
如果不再需要某个远程分支了,比如搞定了某个特性并把它合并进了远程的 master
分支(或任何其他存放稳定代码的分支),可以用这个非常无厘头的语法来删除它:
git push [远程名] :[分支名]
。如果想在服务器上删除 serverfix
分支,运行下面的命令:
$ git push origin :serverfix To git@github.com:schacon/simplegit.git - [deleted] serverfix
咚!服务器上的分支没了。你最好特别留心这一页,因为你一定会用到那个命令,而且你很可能会忘掉它的语法。
有种方便记忆这条命令的方法:记住我们不久前见过的 git push [远程名] [本地分支]:[远程分支]
语法,如果省略 [本地分支]
,那就等于是在说“在这里提取空白然后把它变成[远程分支]
”。
git push origin :old_master #master没法删,只能删其他分支,所以这个方法不能用于上面的master分支回滚版本。
http://my.oschina.net/tsingxu/blog/84601
https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E8%BF%9C%E7%A8%8B%E5%88%86%E6%94%AF#删除远程分支
删除本地分支
git branch -d <branchname>
比较两个分支的不同
git diff branch_a..branch_b
git自动补全功能
https://i.cnblogs.com/EditPosts.aspx?postid=4422412
按tab键自动补全命令
locate git-completion.bash找到这个文件,在.bashrc中加入source pathto/git-completion.bash
把这个文件复制到系统目录:
$cp git/contrib/completion/git-completion.bash ~/.git-completion.bash
在 .bashrc 中加入:重新进入terminal,或者直接手动执行下;
source ~/.git-completion.bash
玩转GIT的更多相关文章
- 2015继续任性——不会Git命令,照样玩转Git
最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2 ...
- 玩转Git入门篇
最近项目使用到Git管理项目,所以就学习了一番,随然网上关于 Git的文章铺天盖地,我还是整理下总结下自己学习Git相关笔记,希望也能帮助到需要他的小伙伴们,O(∩_∩)O~ 简介 Git 是分布式版 ...
- 我教你怎么玩转git
我教你怎么玩转git 1.想要练习解决冲突? 很好办.创建本地分支,a,b, a上面,这样改.b上面那样改. 然后你就解决冲突就可以了. 可以merge 或者cheerypick 2.想要玩一个不要历 ...
- 手把手教你玩转Git分布式版本控制系统! (转载)
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...
- 手把手教你玩转Git分布式版本控制系统!
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...
- 玩转git分支
搞个代码的管理工具,居然不弄上分支啥的东西.这简直太low了.尤其是在使用了传说中得很牛X的Git的时候,尤其显得low.拿着青龙偃月刀当烧火棍子使,关公知道了还不重反人间教育你!? 远程分支 要说分 ...
- 玩转Git之初识Git
git是什么 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 Git 和 svn 有什么区别 它们之间的主要区别是Git是分布式的,而svn是集中式. 当然Git也可 ...
- 玩转git版本控制软件
一.git的基本介绍 1.什么是git? git是个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理.说白了就是个版本控制软件 2.git的使用方法 git软件是通过命令来实 ...
- 版本管理·玩转git(快速入门git)
如果你用过Word文档写过文章,那么你一定会有这样的经历. 我觉得某一段或者某一句写得不够好,但是,删掉之后我可能会后悔把它删掉了,进而又想把删掉的段落找回来,这时,你想到了一个好办法,将每次的修改都 ...
随机推荐
- c#.Net:Excel导入/导出之NPOI 2.0简介
NPOI 2.0+主要由SS, HPSF, DDF, HSSF, XWPF, XSSF, OpenXml4Net, OpenXmlFormats组成,具体列表如下: 资料来自:百度百科 Ass ...
- Git------Win7系统使用TortoiseGit
转载: https://my.oschina.net/longxuu/blog/141699?p=1 此步可以省略 1.点击TortoiseGit->PuTTygen 2.点击"Gen ...
- ecshop 支付
支付分成两部分 1.订单信息 2.支付日志ID 3.生成支付代码 一次性支付完成 // 支付信息 include_once('includes/lib_payment.php'); $order['l ...
- IO
文件过滤 http://codego.net/9245/ C# 文件处理 http://wenku.baidu.com/link?url=yXKiIA_OZYR4MIynDgz-qhOnfJoCyOQ ...
- [UML]UML系列——类图class的关联关系(聚合、组合)
关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...
- php函数fgets读取文件
如果一个文件比较大,可以考虑用fgets函数 下面是个例子: #文件作用:fgets读取文件 $start_time = microtime(true); $file_name = "a.t ...
- PG 函数的易变性(Function Volatility Categories)
此概念的接触是在做分区表的时候碰到的,分区表按时间字段分区,在查询时当where条件中时间为now()或者current_time()等时是无法查询的,即使进行格式转换也不行,只有是时间格式如‘201 ...
- LYDSY模拟赛day2 Market
/* orz claris,这个题的解法非常巧妙,首先是时间问题,其实这个问题只要离线处理一下就可以了,把物品和询问都按照时间排序,然后看一下能不能满足.然后,因为容量<=10^9,显然是不可能 ...
- Computer Vision: OpenCV, Feature Tracking, and Beyond--From <<Make Things See>> by Greg
In the 1960s, the legendary Stanford artificial intelligence pioneer, John McCarthy, famously gave a ...
- mysql遇到锁表常用命令
出现 waiting for table metadata lock 锁表的解决方法 1. show processlist; kill xxx; //xxx 为会话id 2.查询是否有未提交的事物 ...