git checkout 命令使用详解_其它综合

来源:脚本之家  责任编辑:小易  

用git reset,找到之前的版本号,回到之前的版本。找版本号的话,git log --pretty=onelinewww.zgxue.com防采集请勿采集本网。

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。

这时我在master分支,这样查看: git status 好,现在我基于master创建一个新分支ubuntug git checkout master 当然上面这条命令是常规的,我们的快速切换回去的命令才是重点,可

在下面的命令中,使用了一些简写,在这里说明一下:

git 1 这时我在master分支,这样查看: git status 2 好,现在我基于master创建一个新分支 git checkout master 当然上面这条命令是常规的,我们的快速切换回去的命令才是重点,可

git st # git statusgit ci # git commitgit br # git branchgit co # git checkoutgit mg # git mergegit line # git log --oneline

命令也可以合成为一个命令: git checkout -b branchName (二)真相——HEAD是checko 在切换分支的时候,HEAD也会相应的指向对应的分支引用。 但是,使用checkout命令的

当然,你也可以直接在git中敲命令,将这些简写添加到git配置中

因为您已经对这些命令 在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 (一)基础——千里之行,始于切糕(checkout) 先

git config --global -e

命令 在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 (一)基础——千里之行,始于切糕(checkout) 先熟悉下常用操作

然后,可以插入下面的配置:

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 (一)基椽—千里之行,始于切糕(checkout) 先熟悉下常用操作,创建分支

[alias] st = status co = checkout br = branch mg = merge ci = commit md = commit --amend dt = difftool mt = mergetool last = log -1 HEAD cf = config line = log --oneline latest = for-each-ref --sort=-committerdate --format='%(committerdate:short) %(refname:short) [%(committername)]' ls = log --pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short hist = log --pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph --date=short type = cat-file -t dump = cat-file -p

ommit -a这个命令可以直接提交所有修改,省去了你git add和git diff和git commit的工 checkout experiment分支程序OKgit commit -a在分支上提交工作切换住干道git checkou

这样,你也就可以使用这些简写的命令咯。下面步入正题啊。

展开全部 注意sync 和 clone 的区别就可以了。 不过,repo sync 这个命令哪来的 ? sync指同步,也就是此项中可以pull,也可以push,这个貌似是在插件里面才有的。。 clone,就是复

(一)基础——千里之行,始于切糕(checkout)

g --global alias.co checkout //设置checkout 命令别名git config --global alias.br branch //设置branch 命令别名git config --global alias.ci commit //设置commit 命令别名git con

先熟悉下常用操作,创建分支和切换分支,也可以称为检出分支。

deleted //表示删除文件 b) 已修改 (changed but not updated) modified //表示修改文件 deleted //表示删除文件 另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout -- c) 未

首先我们新建一个仓库gitTest,然后新建文件a,为什么要用a命名呢,这里是故意为之,后面为大家揭晓分支。呵呵。或许下面的介绍会有些枯燥乏味,因为您已经对这些命令烂熟于胸,而且运用得相当熟练,那么您可以直接跳过这一步。

merge是合并进去。9 取消上次修改:git reset . 返回到上次提交状态。初级命令写熟练了之后就可以写一些连起来的命令行,减少代码量,如:git checkout -b fix-missing origin/mast

在master分支上,做一次提交c1,然后现在新建一个分支a,并切换到a分支。

modified //表示修改文件 deleted //表示删除文件 另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout -- c) 未跟踪 (untracked files) 2. 查看代码修改的内容 git diff <fil

这个操作主要会用到两个命令:

而-a则远程与本地仓库的全部分支。 创建新分支: $ git branch testing 创建一个名为testing的分支 切换分支: $ git checkout teting 切换到testing分支上。通过向该命令传递一个

创建新分支:git branch branchName

指向当前所在的分支要切换到其他分支,可以执行 git checkout 命令。我们 分支看看:$ git checkout master 图 3-8 显示了结果。 图 3-8. HEAD 在一次 checkout 之

切换到新分支:git checkout branchName

然后,上面两个命令也可以合成为一个命令:

git checkout -b branchName

新建远程分支

git push origin master:nggjc_project_XXXXXXX

(二)真相——HEAD是checkout的灵魂

其实,我们在切换分支,和新建分支的时候,有没有想过,这些操作操作背后的工作原理是怎样的呢?最大的功臣就是.git目录下的HEAD引用,她宛如一个芭蕾舞者,从一个分支飘逸的跳到另一个分支,虽无声无息,却精准无比。

在我们身处master分支的时候,您一定很好奇,当前的HEAD的内容是什么?不妨来看看吧。

我们看到c1的提交hash值和HEAD对应分支master的当前hash值是一样的。也就是说,HEAD指向的是当前分支名master,而master又对应了当前的最新的一次提交ID.

好,那么我们再做一次提交,看看master对应的hash值有无变化。

从上图,我们可以不难看出,HEAD对应的ref没有变化,还是master,但是master对应的commit ID却变成了c2对应的commit ID,即更新为最后一次提交的ID咯。

现在,提交一次的原理,我们已然了解,那么切换分支的时候呢??

现在我们身处master分支,然后我们切换到a分支,看看会发生什么样的情况吧。

从上图分析,在master分支上的时候,HEAD指向的是master,对应的是c2的commit ID。而切换到a分支的时候,HEAD也相应的指向了a,同时a对应的是a分支上的最新commit ID。因此,我们可以得出结论,在切换分支的时候,HEAD也会相应的指向对应的分支引用。

但是,使用checkout命令的时候,并不是每次都会改变HEAD指针的指向哦。在什么情况下HEAD一直坚定不移的拥护者他的女神呢?可谓衣带渐宽终不悔,长使英雄泪满襟啊!让我们接着往下看。

(三)进阶——HEAD懂不懂,看你怎么用

checkout命令用法如下:

1. git checkout [-q] [<commit>] [--] <paths> ...

2. git checkout [<branch>]

3. git checkout [-m] [ [-b | -- orphan ] <new_branch>]  [start_point] 

用法2比用法1的区别在于,用法1包含了路径。为了避免路径和引用(或提交ID)同名而发生冲突,可以在<paths>前用两个连续的连字符作为分隔。用法1的<commit>是可选项,如果省略,则相当于从暂存区进行检出。

来看个例子:

情景1,省略掉<commit>

现在我们处于master分支下,然后我们修改了文件a,输入“c3”文本到a中,这时候,暂存区中的内容是没有"c3"的,通过git diff可以比较。现在我们从当前分支暂存区中检出文件a。那么我们可以直接使用git checkout a。

 这时候,提示检出失败,git以为我们想检出仓库a。还记得为什么在第一步中,我们曾新建的文件a吗?这里终于派上用场了,由于仓库中还存在分支a,同时当前分支中又存在文件a,于是git傻傻分不清楚了。这时候怎么办?有两个办法,第一,我们在命名分支的时候要注意语义性,分支名要具有一定的意义,不能使用简单的a,b,c来命名,这样很容易导致分支名和文件名重复;第二,参照用法1,使用两个连字符来分隔。在目前的情形中,我们使用第二种方法吧。

这时候,发现工作区的内容被暂存区的内容覆盖,"c3"文本也没有了,当然HEAD指针也没有什么变化,一切又恢复了平静。

再看一个例子:

情景2,不省略<commit>

在不省略<commit>的时候,<commit>既可以是某一个具体的commit hash值,也可以是某个分支名称,tag名称。不论分支也好,tag也好,它们本质上对应的都是一个commit hash值。

在检出a分支下的a文件的时候,最好把两个连字符加上,不然git也会无法区分。整个过程中,HEAD头指针没有发生改动。

总结:第1种用法(包含<paths>的用法)不会改变HEAD头指针,主要使用于指定版本的文件覆盖工作区中对应的文件。如果省略<commit>,则会用暂存区的文件覆盖工作区中的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件。

接下来,我们看看用法2,在第一部分中,我们知道切换分支,会改变HEAD的指向,那么如果我们是检出某个commit会怎样呢?同检出分支一样,会用该commit下的内容覆盖当前分支工作区和暂存区的内容,请看例子。

目前我们处于master分支上,且已经有了两次提交,分别是c1和c2,然后我们修改a,给a文件添加内容"c3",并add到暂存区,随即使用checkout到c1的commit 上。注意,刚开始checkout的时候,git不会允许你直接切换,因为你修改了暂存区的内容, 它会提醒你提交后再切换,这时候,你可以使用-f 强行切换。再查看状态的时候,git提示我们已经不在任何分支上,HEAD指针也是指向具体的c1的commit值,进入了“分离头指针”状态。这个状态下,要回到master上面,只需要git checkout master即可,也可以在这个状态上新建分支。

如果,checkou后面不跟任何参数,则就是对工作区进行检查,请看例子。

我们身处master分支上,并且没有任何改动,这时候git checkout没有任何输出。然后,我们给a文件添加内容“c3”,然后再git checkout一下,git就会提示a文件有修改,是不是很简单?

总结:对于第2种用法,不是检出某个具体文件的的时候,即不指定<paths>的时候,单纯的检出某个commit或分支,是会改变HEAD头指针的。而且只有当HEAD切换到某个分支的时候才可以对提交进行跟踪,否则就会进入“分离头指针”的状态。如果省略用法2后面的<branch>,则默认对工作区进行状态检查。

(四)熟悉的checkout,陌生的用法,妈妈再也不用担心我的checkout啦!

1. git branch <branch> <start point>

以某个commit创建新分支。 在通常情况下,我们都会在当前分支的基础上,创建新分支。比如git branch new_branch

也许你不知道,我们还可以基于当前分支的某一次commit来创建分支。请看!

从上图可见,我们想基于master分支的c1 提交ID创建新分支new_branch,创建成功后,切换到new_branch,查看log,只有c1,耶~~成功啦!

当然,也可以使用git checkout -b <new_branch> <start point>这个常用的命令。

2.  git checkout --datch <branch>

切换到分支的游离状态,默认以该分支下的最后一次提交ID,请看下面的例子。

当前分支为a,然后使用git checkout --detach master,那么HEAD就会切换到master的最后一次commit值的状态下!

3. git checkout -B <branch>

这个命令,可以强制创建新的分支,为什么加-B呢?如果当前仓库中,已经存在一个跟你新建分支同名的分支,那么使用普通的git checkout -b <branch>这个命令,是会报错的,且同名分支无法创建。如果使用-B参数,那么就可以强制创建新的分支,并会覆盖掉原来的分支。请看具体操作。

当前分支为master,且仓库中已经存在分支a,我们先用git checkout -b a来创建a分支,必然会失败的,并提示我们仓库中已经有了一个a分支咯,仿佛在说“hi,哥们,你已经有了一个老婆了,一夫一妻制你的不懂?你以为这里是印度啊?”。随后,我们使用git checkout -B a,耶~~,it works!

4. git checkout --orphan <branch>

是的,假如你的某个分支上,积累了无数次的提交,你也懒得去打理,打印出的log也让你无力吐槽,那么这个命令将是你的神器,它会基于当前所在分支新建一个赤裸裸的分支,没有任何的提交历史,但是当前分支的内容一一俱全。新建的分支,严格意义上说,还不是一个分支,因为HEAD指向的引用中没有commit值,只有在进行一次提交后,它才算得上真正的分支。还等什么呢?赶紧试试!

好了,现在我们终于找到组织了!

5. git checkout --merge <branch>

这个命令适用于在切换分支的时候,将当前分支修改的内容一起打包带走,同步到切换的分支下。

有两个需要注意的问题。

第一,如果当前分支和切换分支间的内容不同的话,容易造成冲突。

第二,切换到新分支后,当前分支修改过的内容就丢失了。

所以这个命令,慎用!

6. git checkout -p <branch>

这个命令可以用来打补丁。这个命令主要用来比较两个分支间的差异内容,并提供交互式的界面来选择进一步的操作。这个命令不仅可以比较两个分支间的差异,还可以比较单个文件的差异哦!

结束语:至此,关于git checkout命令暂告一段落,对于checkout命令,你也有所熟悉了吧。当然,git checkout还有一些其它用法,本文并没有讲到,你可以在git bash或终端中使用git checkout --help去进一步了解!

删除本地分支

git branch -d 分支名

删除远程分支

git push origin -delete 分支名

到此这篇关于git checkout 命令使用详解的文章就介绍到这了,更多相关git checkout内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

1.安装GitLinuxsudo apt-get install gitWindow:到Git官网下载安装:https://git-scm.com/downloads2.配置全局用户Name和E-mail$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"3.初始化仓库git init4.添加文件到Git仓库git add <file>提示:可反复多次使用,添加多个文件;5.提交添加的文件到Git仓库git commit然后会弹出一个Vim编辑器输入本次提交的内容;或者git commit -m "提交说明"6.查看仓库当前的状态git status7.比较当前文件的修改$ git diff <file>8.查看历史提交记录git log或者加上参数查看就比较清晰了$ git log --pretty=oneline9.回退版本$ git reset --hard HEAD^说明:在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,以此类推,如果需要回退几十个版本,写几十个^容易数不过来,所以可以写,例如回退30个版本为:HEAD~30。如果你回退完版本又后悔了,想回来,一般情况下是回不来的,但是如果你可以找到你之前的commit id的话,也是可以的,使用如下即可:$ git reset --hard + commit id提示:commit id不需要写全,Git会自动查找;补充说明:Git中,commit id是一个使用SHA1计算出来的一个非常大的数字,用十六进制表示,你提交时看到的一大串类似3628164...882e1e0的就是commit id(版本号);在Git中,版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向回退的版本,然后顺便刷新工作区文件;10.查看操作的历史命令记录$ git reflog结果会将你之前的操作的commit id和具体的操作类型及相关的信息打印出来,这个命令还有一个作用就是,当你过了几天,你想回退之前的某次提交,但是你不知道commit id了,通过这个你可查找出commit id,就可以轻松回退了,用一句话总结:穿越未来,回到过去,so easy!11.diff文件git diff HEAD -- <file>说明:查看工作区和版本库里面最新版本文件的区别,也可以不加HEAD参数;12.丢弃工作区的修改$ git checkout -- <file>说明:适用于工作区修改没有add的文件13.丢弃暂存区的文件$ git reset HEAD <file>说明:适用于暂存区已经add的文件,注意执行完此命令,他会将暂存区的修改放回到工作区中,如果要想工作区的修改也丢弃,就执行第12条命令即可;14.删除文件$ rm <file>然后提交即可;如果不小心删错了,如果还没有提交的话使用下面命令即可恢复删除,注意的是它只能恢复最近版本提交的修改,你工作区的修改是不能被恢复的!$ git checkout -- <file>内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • git rebase命令使用实战
  • windows 版本git命令行的使用详解
  • git pull(拉取)及push(上传)相关命令介绍
  • 解决idea中terminal终端无法执行git命令+terminal 中文乱码问题
  • .net corek中git的常用命令及实战演练
  • c#/.net使用git命令行来操作git仓库的方法示例
  • git命令的简单整理大全
  • 分享git常用7大技巧和命令
  • 一些你必须要熟练掌握的git命令
  • git代码提交流程及git命令汇总(基础篇)
  • git的简单理解及基础操作命令详解
  • git 常用命令清单(整理且详细)
  • 日常收集整理的git常用命令
  • git 命令行教程及实例教程(附github注册)
  • github 热门:别再用 print 输出来调试代码了
  • atom-ide 的使用方法简单介绍
  • aergo ship:用于开发智能合约的包管理器
  • 到初创公司工作的五个理由
  • url中斜杠/和反斜杠\的区别小结
  • ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境的详细教程
  • 如何将服务器上的python代码通过qq发送回传信息(附实现方法)
  • 分享4个最受欢迎的大数据可视化工具
  • 一个30多年编程经验的程序员总结
  • http头信息总结
  • 几个常用的git命令
  • 当错误的使用了git checkout -- . 这个命令后 能够回退吗?
  • 如何理解git checkout
  • 如何理解git checkout
  • git checkout怎样快速切换回上一个使用过的分支
  • git checkout怎样快速切换回上一个使用过的分支
  • git checkout 有什么用
  • 如何理解git checkout
  • 如何理解git checkout
  • 先git checkout 再make么
  • git checkout怎样快速切换回上一个使用过的分支
  • git clone和checkout有什么区别
  • Git常用命令笔记
  • 如何在git命令中指定ssh-key文件
  • 怎么用git命令行讲项
  • 如何在git命令中指定ssh-key文件
  • 以下哪些git命令可以切换branch
  • Git分支,为何以及如何使用分支
  • git 切换分支 选不选 clean
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页git rebase命令使用实战windows 版本git命令行的使用详解git pull(拉取)及push(上传)相关命令介绍解决idea中terminal终端无法执行git命令+terminal 中文乱码问题.net corek中git的常用命令及实战演练c#/.net使用git命令行来操作git仓库的方法示例git命令的简单整理大全分享git常用7大技巧和命令一些你必须要熟练掌握的git命令git代码提交流程及git命令汇总(基础篇)git的简单理解及基础操作命令详解git 常用命令清单(整理且详细)日常收集整理的git常用命令git 命令行教程及实例教程(附github注册)github 热门:别再用 print 输出来调试代码了atom-ide 的使用方法简单介绍aergo ship:用于开发智能合约的包管理器到初创公司工作的五个理由url中斜杠/和反斜杠\的区别小结ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境的详细教程如何将服务器上的python代码通过qq发送回传信息(附实现方法)分享4个最受欢迎的大数据可视化工具一个30多年编程经验的程序员总结最新idea2020注册码永久激活(激活intellij idea2020永久破解,亲测intellij idea激活码获取方法(i删除svn三种方法delsvn(windows+c/s和b/s两种架构的概念、区别和网址(url)支持的最大长度是多少5个linux平台程序员最爱的开发工url中斜杠/和反斜杠\的区别小结提示“处理url时服务器出错”和“科学知识:二进制、八进制、十进制、十六python和go成为2019年最受欢迎的黑客工具ieee spectrum 2014编程语言排行榜各种语言常用的一句话判断代码解释执行和编译执行的区别?cnpm不是内部命令的解决方案:配置环境变tiobe编程语言排行榜前20的语言入门书籍推delphi使用chilkat 组件和库从sftp下载文删除svn三种方法delsvn(windows+linux)在visual studio code环境中使用svn的方案
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved