图解git.pdf

所需积分/C币:30 2017-10-02 19:40:34 672KB PDF
收藏 收藏
举报

图解git,简单、直观、易懂,省去阅读大量文档时间,速速收藏吧
HEAD maint git diff b325c da985 master a47c3 b325C c10b9 da985 ed489 gIt diff cached Stage(Index) git diff maint git diff HEAD git diff Working Directory Commit 提交时,git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。然后把当前分支指向新的提交节点。下图 中,当前分支是 mastor。在运行命令之前, mastor指向cd189,提交后, master指向新的节点fccc并以cd489作为父节 gIt commIt HEAD HEAD maint master master a47C3 b325C C10b9 da985 ed489 foce Stage(Index Working directory 即便当前分支是某次提交的祖父节点,git会同样操作。下图中,在 master分支的祖父节点 maint分支进行一次提交,生成 了1800b。这样, maint分支就不再是 master分支的祖父节点。此时,合并(或者衍合)是必须的。 glt commIt HEAD maint HEAD maint 1800b master a47c3 b325C c10b9 da985 ed489 Stage(Index) Working Directory 如果想更改一次提交,使用 g-t commτ-εmnd。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。 git commit --amend HEAD maint master a47c3 b325C C10b9 da985 ed489 4Ca87 ge(hde×) master HEAD Working Directory 另一个例子是分离AD提交,后文讲。 Checkout checkout命令用于从历史提交(或者暂存区域)中屮拷贝文件到工作日录,也可用于切换分支 当给定某个文件名(或者打开p选项,或者文件名和p选项同时打开)时,git会从指定的提父中拷贝文件到暂存区域和工 作目录。比如, git checkout HEAD^foo.c会将提交节点HAD(即当前提交节点的父节点)中的foa.c复制到工作目录并且加到暂 存区域中。(如果命令中没有指定提交节点,则会从暂存区域中拷贝内容。)注意当前分支不会发生变化 git checkout hEAD" files HEAD maint laster a47c3 b325C c10b9 da985 ed489 Stage(Index) Working director 当不指定文件名,而是给出一个(本地)分支时,那么HAD标识会移动到那个分支(也就是说,我们“切换”到那个分支 了),然后暂存区域和工作目永中的内容会和HAD对应的提交节点一致。新提交节点(下图中的a47c3)中的所有文件都会 被复袆(到暂存区域和工作目录中);只存在」老的提交节点(ed489)中的文件会被删除;不属」上述为者的文件会被忽 咯,不受影响 git checkout maint HEAD HEAD maint master a47c3 b325C C10b9 da985 ed489 Stage(Index) Working Directory 如果既没有指定文件名,也没有指定分支名,而是一个标签、远稈分支、SHA-1值或者是像 master3类似的东西,就得到 个匿名分支,称作 detached HEAD(被分离的HAD标识)。这样可以很方便地在历史版本之间互相切换。比如说你想要编译 1.6.6.1版本的git,你可以运行 git checkout vI.6.6.1(这是一个标签,而非分支名),编译,安装,然后切换回另一个分 支,比如说 git checkout master。然而,当提交操作涉及到“分离的⊕AD”时,其行为会略有不同,详情见在下血。 git checkout master 3 HEAD maint HEAD master a47c3 b325C c10b9 da985 ed489 Stage(Index) Working Directory HEAD标识处于分离状态时的提交操作 当HAD处于分离状态(不依附于仟一分支)时,提交操作可以正常进行,但是不会更新仟何已命名的分支。(你可以认为这 是在更新一个匿名分支。) at commit HEAD maint HEAD beech master a47c3 b325C C10b9 da985 ed489 Stage(Index) Working Directory 旦此后你切换到别的分支,比如说 master,那么这个提交节点(可能)冉也不会被引用到,然后就会被丢弃掉了。注意 这个命令之后就不会有东西引用2eecb git checkout master HEAD HEAD maint beech master a47c3 b325C c10b9 da985 ed489 Stage(Index) Working Directory 但是,如果你想倮存这个状态,可以用命令 git checkout-bnnc来创建一个新的分支。 git checkout -b new HEAD HEAD new × maint master a47c3 b325C C10b9 da985 ed489 ge(hde×) Working directe Reset reset命令把当前分支指向为一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不 动工作目录。 如果不给选项,那么当前分支指向到那个提交。如果用-hard选项,那么工作目录也更新,如果用-s0t选项,那么都不 变 git reset HEad3 HEAD HEAD maint master master a47c3 b325C c10b9 da985 ed489 (if not --soft) (if --hard Stage(Index) Working Directory 如果没有给岀提交点的版本号,那么默认用HAD。这样,分支指向不变,但是索引会回滚到最后一次提交,如果用--har选 项,工作目录也同样。 git reset HEAD maint master a47c3 b325C C10b9 da985 ed489 Stage(Index) (if --hard Working Directory 如果给了文件名(或者-p选项),那么工作效果和带文件名的 checkout差不多,除了索引被更新。 git reset files HEAD maint master a47c3 b325C c10b9 da985 ed489 Stage(Index) Working Directory Merge merge命令把不同分支合并起来。合并前,索引必须和当前提交相同。如果另一个分支是当前提交的祖父节点,那么合并 命令将什么也不做。另一种情况是如果当前提交是另一个分支的祖父节点,就导致fast- forward合并。指向只是简单的移 动,并生成一个新的提交。 glt merge master HEAD HEAD maint maint a47C3 b325C C10b9 da985 ed489 master Stage(Index Working directory 否则就是一次真正的合并。默认把当前提交(ec489如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行 次三方合并。结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。 git merge other HEAD other master HEAD beech 33104 master a47c3 b325C c10b9 da985 ed489 f8bc5 3 way merge← (if no conflicts) okIno CLO Stage(Index) Cherry pick cherry-pick命令"复制"一个提交节点并在当前分支做一次完全一样的新提交。 git cherry-pick 2C33a topIC HEAD HEAD 169a6 2c33a 3ba22 master master a47c3 b325c C10b9 da985 ed489 f142b Stage(Index) Working Directory Reas 衍合是合并命令的另一种选择。合并把两个父分支合并进行一次提交,提交历史不是线性。衍合在当前分支上重演另 个分支的历史,提交历史是线性的。本质上,这是线性化的自动的 cherry=pick

...展开详情
试读 12P 图解git.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    图解git.pdf 30积分/C币 立即下载
    1/12
    图解git.pdf第1页
    图解git.pdf第2页
    图解git.pdf第3页
    图解git.pdf第4页

    试读已结束,剩余8页未读...

    30积分/C币 立即下载 >