当前位置:   article > 正文

git 将其它分支的文件检出到工作区_分支检出

分支检出

主要是使用如下命令:

git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>…​
  • 1

覆盖与 pathspec 匹配的文件的内容。当没有给出<tree-ish> (通常是一个commit)时,用 index 中的内容覆盖工作树。当给出<tree-ish>时,用<tree-ish>处的内容同时覆盖 index 和工作树。


由于前一个的合并失败,index 可能包含未合并的条目。默认情况下,如果您试图从 index 中检出这样的条目,则 checkout 操作将失败,并且不会检出任何内容。使用 -f 将忽略这些未合并的条目。可以使用 --ours--theirs 从 index 中检出合并的特定端的内容。使用-m,可以放弃对工作树文件所做的更改,以重新创建原始的冲突合并结果。

首先要弄清楚什么是工作树,什么是 index ?

Git的三种状态

现在注意 — 如果你想让剩下的学习过程顺利进行,这里是关于Git需要记住的主要事项。Git有三种主要状态,您的文件可以驻留在其中:modified, staged, 以及 committed

  • Modified 意味着您已经更改了文件,但尚未将其提交到数据库。
  • Staged 意味着您已经在当前版本中标记了修改后的文件,以便进入下一个 commit 快照。
  • Committed 意味着数据安全地存储在本地数据库中。

这就引出了Git项目的三个主要部分:工作树(working tree)、暂存区(staging area)和Git目录(Git directory)。

Figure 6. Working tree, staging area, and Git directory
Working tree, staging area, and Git directory
工作树是项目的一个版本的单个检出。这些文件从Git目录中的压缩数据库中提取出来,放在磁盘上供您使用或修改。

暂存区是一个文件,通常包含在Git目录中,用于存储有关下一次 commit 内容的信息。用Git的术语,它的技术名称是 index ,但短语 “staging area” 也同样有效。

Git目录是Git存储项目的元数据和对象数据库的地方。这是Git最重要的部分,也是从另一台计算机 clone 存储库时所复制的内容。

Git的基本工作流程如下:

  1. 您修改工作树中的文件。
  2. 您选择性地只暂存那些您希望成为下一次 commit 的一部分的更改,这只会将这些更改添加到暂存区域。
  3. 您执行一个 commit ,将文件保存在暂存区中,并将快照永久存储到Git目录中。

如果Git目录中有一个特定版本的文件,则认为该文件是 committed 。如果它已被修改并添加到暂存区域,则它就是 staged 。如果它在检出后发生了更改,但尚未暂存,那它是 modified 。在 Git Basics 中,您将了解更多关于这些状态的信息,以及如何利用它们或完全跳过 staged 的部分。


接下来步入正题,假如你有两个分支,分别为 masterdev ,您当前工作在 master 上,想将 dev 中 HEAD 处的 main.c 检出到工作区,按照如下命令操作:

首先需要知道 dev 分支 HEAD 处的 commit id ,比如是 a36ac44c5ac1d... ,执行如下命令:

git checkout a36ac44 -- main.c
  • 1

注意,这一步执行完当前工作区与暂存区中的 main.c 都被改掉了,这可能不是您的本意,您可能只想改工作区,暂存区要保持不变,那么再执行下一步:

git reset -- main.c
  • 1

这一步是将当前 master 分支 HEAD 所指向的 main.c 覆盖暂存区的 main.c ,这样暂存区的main.c 就与版本库里的一致了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/936483
推荐阅读
相关标签
  

闽ICP备14008679号