git 常用命令之 git checkout

这篇具有很好参考价值的文章主要介绍了git 常用命令之 git checkout。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是 17。

git checkout 是 git 中最重要最常用的命令之一,本文为大家详细解说一下。

恢复工作区

checkout 的用途之一是恢复工作区。

git checkout .  

checkout . 表示恢复工作区的所有更改,未跟踪的文件不会有变化。

恢复工作区的所有文件风险比较大,会丢失所有工作区的修改,一定要慎用

git checkout -- a.txt

中间加上 – 就安全多了,可以只恢复单个文件。

版本切换

git checkout master   取出 master 分支,HEAD 指向 master
git checkout 907d3ba  取出最后提交为 commit id 为 907d3ba 这个版本,HEAD 转到 907d3ba,和 master 分离。

取出分支的时候 HEAD 会指向当前分支。取出某个版本,HEAD也会跟着指过来,分支不动。这会造成 HEAD 和分支 分离。在分离 HEAD 的情况下,可以查看,提交,做各种试验,如果对结果满意,可以就地打新分支保留这些提交:

git checkout -c <new-branch-name>

如果不满意,什么也不用做,切回当前分支既可。

git checkout master  修正 HEAD 指向 master 分支

如果不知道哪前分支名也没关系 checkout - 同样会修正 HEAD。

git checkout -  

如果要开发新功能,直接在某个提交上打分支即可,为什么要分离 HEAD?原因是这样比较轻量。比如你现在想开发一个功能,但不知道是否可行,所以先试验一下,确认好了再打分支。如果直接打分支,觉得不合适还得删除。因为分支没有合并,还删不掉,删除还得加强制删除参数。

分离头指针的操作相当于 先上车,后补票 。上车后又下车,不用买票,只有到终点才需要补票。

强制拉分支

 git checkout -B dev 

假定 dev 存在,如果没有 -B 参数,会报错,加上 -B 会覆盖原来的 dev 分支,打一个新的 dev 分支出来,并转到 dev 分支。

省得费心起名了。如果并行的只有一个任务,可以每次都用 dev 分支开发。

从某个 commit 打分支

我们打分支的时候,默认会从 HEAD 处开始,对于 master 分支来说,就是 G。

git 常用命令之 git checkout

如果从 F 处打分支出来,可以用第二个参数指定

git checkout -b dev F

也可以这样写
git checkout -b dev HEAD^
git 常用命令之 git checkout

孤儿分支

有这样一个参数 --orphan, orphan 的英文原意是孤儿,如果我们要打一个设计文档分支出来这样写

git checkout --orphan design

因为设计文档和开发的代码完全是独立的部分,不适合和开发代码放一个分支上。

之所以称为孤儿分支,是因为这个分支是完完全全独立的,和以前所有的分支没有任何关联。和其它分支是平行的,永远不会相交。

git 常用命令之 git checkout

就算孤儿分支是从 master 分支打出来的,你在 master 分支 执行 git log --oneline 也找不到任何有关孤儿分支的痕迹。当然更无法 merge 一个孤儿分支,实际上,也没有这个需求。

孤儿分支刚生成的时候,没有父提交,也没有任何提交,完全是空的,暂存区和工作区一般来说会有内容,因为我们要存设计文档,原来的内容都没有用,删除

git rm -rf .

现在我们得到了一个纯净的,独立的分支,可以添加设计文档了,并生成第一个提交。

可能你会有疑问,既然我们要一个孤儿分支,为什么还要初始化内容给我们?因为我们可能还有这样的需求:需要一个起点,而不是从一无所有开始。

试想这样的场景:项目开发半年了,市场反馈却是平平,老板觉得这样下去不是办法,需要另寻出路,但又不想放弃现在的方向。因为这次是方向性的问题,改动比较大,如果打普通分支的话,可能无法向主干合并。于是老板想出了一个办法,新建一个孤儿分支,完全独立来验证新想法,如果新方向正确,就可以代取代原来的方向。

从头来实现项目来验证新想法显然是不实际的,可以从项目中选择合适的节点,比如 F 节点,以这个为基础。

git checkout --orphan laboratory  F

新分支生成后,会把 F 节点的所有内容带到暂存区和工作区,我们全部保留,在这个基础上开发。laboratory 和原来的 master 分支的级别是完全一样的,laboratory 就相当于原来的 master 分支。master 只是提供了一个起点。laboratory 后面如何发展和 master 完全没有关系。

选择合并

git checkout master
git merge dev

merge dev 的时候发生的冲突,这时可以打开冲突文件手动修改,也可以自动修改

git checkout --ours a.txt
git checkout --theirs a.txt

下面举例说明一下如何自动修改。

首先制造一个 merge 冲突的现场。起点在 master 分支。 在 master 分支 和 dev 分支同时修改 a.txt 的第一行,

echo init >a.txt
git add a.txt
git commit -m 'add a.txt'

git checkout -b dev
echo dev >a.txt
git add a.txt
git commit -m 'alter a.txt'

git checkout master
echo master >a.txt
git add a.txt

git merge dev

看下 a.txt 的内容 cat a.txt

<<<<<<< HEAD
master
=======
dev
>>>>>>> dev

上面的是 master 的修改,下面的是 dev 的修改。

如果现在后悔了,想取消合并,恢复到合并前的状态,

git merge --abort

自动修改用 git checkout 命令。我们可以选择保留 master 分支的内容

git checkout --ours -- a.txt

查看 a.txt 内容,已经恢复正常了。

master

如果发现这不是我们要的结果,可以恢复冲突现场

git checkout -m -- a.txt

查看 a.txt ,又恢复到冲突状态了。这次我们选择 dev 的内容。

git checkout --theirs -- a.txt

检查内容无误后,添加到暂存区。

git add a.txt

冲突解决完了,但 merge 还没完成。

git merge --continue

这时弹出编辑器,可以修改提交信息,确认后会自动提交修改的内容。merge 完成。

新加的 git switch

你会发现 checkout 承载了很多分支相关的命令。为了让命令更清晰,新版 git 增加了 switch 命令。
switch 能做的事 checkout 都能做。

switch 命令的功能很纯粹,就是切换分支,如果分支不存在,顺便新建分支。

举两个常见的例子。

switch checkout
git switch master git checkout master
git switch -c dev git checkout -c dev
git switch --orphan git checkout --orphan

切分支的时候建议把工作区和暂存区的内容都提交

新加的 git restore

和增加 git switch 同样的原因,新版本增加了 git resotre 命令。

git resotre 的职责是恢复工作区和暂存区。原来 checkout 能做的,它都能做。它能做的, checkout 可能做不了。

--worktreegit restore 的默认参数

git restore a.txt  把暂存区 a.txt 的内容恢复到工作区
git restore .   恢复工作区的所有内容。

git restore --staged a.txt 把 HEAD 的 a.txt 恢复到暂存区


git restore --source=HEAD --staged --worktree a.txt 恢复工作区和暂存区

–source 表示从哪里来,默认是 HEAD --staged 表示恢复到暂存区,–worktree 表示恢复到工作区。这三个参数有简写方式。

git restore -s HEAD -SW a.txt

当 merge 发生冲突时,也可以用 restore 来解决冲突,用法同 checkout。文章来源地址https://www.toymoban.com/news/detail-412201.html

到了这里,关于git 常用命令之 git checkout的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 玩转git的第6章节:git的smart checkout与force checkout

    玩转git的第6章节:git的smart checkout与force checkout

    1.smart  checkout:  会 把冲突的这部分内容带到目的分支 2.force  checkout: 就不会把冲突的这部分内容带到目的分支,但是你在当前分支修改的所有内容都会丢失,就算你再切回来会找不到,需要慎重操作。 3.Do not checkout : 是不切分支,继续留在当前分支; 在 当前分支修改内容后

    2024年02月11日
    浏览(7)
  • stm32:pwm output模块,记录一下我是用smt32,输出pwm波的记录--(实现--重要)

    stm32:pwm output模块,记录一下我是用smt32,输出pwm波的记录--(实现--重要)

    我是实现了输出pwm波,频率固定,占空比可以不断调整的方法,将PA0接到示波器上,可以看到是一个标准的PWM波,如图下面示波器图。 我刚开始设置的分频的倍数是7199,使得分频的太大了,示波器显示不了,最后修改为71就可以,我之前设置读取pwm也是一样的, 都是设置的

    2024年02月22日
    浏览(7)
  • Git中smart Checkout与force checkout

    Git中smart Checkout与force checkout

    Git中smart Checkout与force checkout 使用git进行代码版本管理,当我们切换分支有时会遇到这样的问题: 这是因为在当前分支修改了代码,但是没有 commit ,所以在切换到其他分支的时候会弹出这个窗口, 提示你选force checkout或者smart checkout。那该怎样处理呢? don`t checkout 是不切分支

    2024年02月11日
    浏览(13)
  • Git分支篇git branch和git checkout

    Git分支篇git branch和git checkout

    在开发过程中,项目往往由多人协同开发,那么将多人编写的代码汇总到一起就成了一个困难且复杂的工作,另外项目也需要备份和版本迭代,因此不能只有一个版本。因此分支就成为了优秀的解决方案。 分支相互独立,不同部门在不同分支开发,分支由主分支构建,分支代

    2024年02月06日
    浏览(19)
  • Git - 如何checkout一个tag

    在版本管理中,Tag就是用来标记和保存一个配置状态,用来对配置进行跟踪和备份。 在发布版本时,一般都会创建一个Tag。然后用这个Tag就能引用到这个版本。 在Git中,如果知道一个Tag状态,如何在本地将配置切换到该状态呢? 使用checkmout命令,加上tag名,就可以切换到

    2024年02月09日
    浏览(7)
  • git实用命令 git常用分支命令

    要在Git中创建一个新的分支,按照以下步骤进行操作: 确保你当前在要创建分支的代码状态下。你可以使用 git status 命令查看当前的代码状态,并使用 git add 和 git commit 命令将修改的文件提交到当前分支。 1.使用 git branch 命令创建一个新的分支。 这将在本地仓库中创建一个

    2024年02月10日
    浏览(6)
  • GIT - checkout指定head的某个文件

    可以使用如下命令: 其中  commit  是要检出的目标提交的 SHA-1 标识符或分支名称,  path/to/file  是要检出的文件路径。这个命令会将指定提交中的指定文件覆盖当前工作目录中的同名文件,并将文件的更改提交到暂存区域。 如果只需要查看文件而不是将其检出到工作目录中

    2024年02月02日
    浏览(6)
  • Git checkout 某个版本到指定文件夹下

    我不想checkout到覆盖本地工作区的文件, 而是想把该 版本checkout到另外一个文件夹下,检出看看,这个文件夹不被git管理 将 commit_hash 替换为你想要检出的具体commit的哈希值,new_folder 替换为你想要保存文件的新文件夹路径。 这条命令会创建一个对应版本的tar临时归档文件,

    2024年02月08日
    浏览(40)
  • git 常用命令大全(附命令注释)

    目录 1 安装 2 初始化配置 3 初始化仓库  4 C(新增)  5 U(修改) 7 R(查询) 8 分支 8.1 git分支本质 8.3 git分支的注意点 8.4 后悔药 8.5 reset三部曲 8.6 路径reset 8.7 checkout深入理解 9 git远程协作开发 9.1 三个必须懂得概念 9.2 远程协作的基本流程 9.3 做跟踪 9.4 推送  9.5 拉取   9.6 pull req

    2024年02月07日
    浏览(18)
  • Git下载和Git常用命令

    要下载和安装 Git,请按照以下步骤进行操作: 1.访问官方网站:打开 Git 官方网站 https://git-scm.com/。 2.下载 Git 安装程序: 3.选择适用于你的操作系统的下载链接。Git 支持多个操作系统,包括 Windows、macOS 和 Linux。 4.点击下载链接,开始下载 Git 安装程序。 5.运行安装程序:

    2024年02月08日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包