git 怎么拉去分支代码_Git图文示例(指针漂流记)

c64fd996ed46b522acfe5f15c3bacdce.png

博客原文

什么是git?请移步维基百科。访问不了?请移步百度百科。记得回来!!!

Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!

Git 希望提交记录尽可能地轻量,因此在每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。

Git 还保存了提交的历史记录。这也是为什么大多数提交记录的上面都有父节点的原因 —— 我会在图示中用箭头来表示这种关系。

总结:所谓提交新版本和创建分支合并分支就是指针移来移去。纵观git这么多操作其实也无非就是“指针漂流记”。

当然我指的仅仅是使用。底层什么有向无环图。。。这么牛逼怎么实现的???算了,能用就行。

提交

 # 将修改提交到暂存区 git add # 清空暂存区 git reset # 提交暂存区内容 git commit # 小修改,不新增commit id git commit --amend # 查看提交日志 git log # 查看命令日志 git reflog # 查看状态 git status

新建分支

注意,建分支后还需要checkout移动到新分支上才能对新分支操作。

 git branch mybranch git checkout mybranch # 上述可合为一句 git checkout -b mybranch

所谓的提交树如图所示,自己抽象一下

两种合并分支方式

 git merge mybranch
 git rebase mybranch # 区别就是rebase的继承关系更线性易读 建议使用rebase # 这时候提交树还在,实际还是并行

提交树上前后移动

当前提交等操作,操作的实际上是HEAD指针指向的提交记录。默认HEAD指向分支。可以使HEAD分离。可以使用git show HEAD查看当前HEAD指向。

 # 移动HEAD指针 git checkout '提交记录哈希' # 给予HEAD或分支的相对位置 ^上一个 ^^上第二个 ^2第二个父元素 ~2上第二个 # 这些操作符还可以链式调用 git checkout HEAD^ git checkout HEAD~2 # 移动分支指针,也可使用相对位置 git branch -f master HEAD^

撤销

 # 删除当前提交 HEAD回退 回退本地时使用 git reset # HEAD前进 前进到的新commit和要撤回后的一样 修改远程时使用 git revert

复制整理提交内容

 # 复制 git cherry-pick C2 C4 # 整理 可使用相对 git rebase -i HEAD~4

如图所示,将C2 C4 从side分支放到当前分支。

下述命令可实现以下需求:只将bugFix合并到主分支。而不合并过程中的debug和控制台打印。(只取部分提交记录)

 # 整理提交记录,只留下bugFix git rebase -i HEAD~3 git checkout master git merge bugFix

标签

 # 给c1记录起一个标签名v1 c1可省略默认当前HEAD # 标签相当于锚点的作用,可用作关键节点标记。 # 分支可能会移动 但tag不会 git tag v1 c1 # 输出离c1最近的tag,省略默认为HEAD git describe c1

远程相关

日常操作就是由 fetch、rebase/merge 和 push 组成的工作流。

 # 将远程仓库克隆到本地,本地相当于远程仓库一个分支,自动进入HEAD分离 git clone # 从远程仓库下载本地缺失 更新远程仓库分支指针(可以理解为单纯下载操作) git fetch git fetch origin foo # git fetch和git merge的合并,就是拉去远程代码并合并 git pull git pull --rebase # 将本地代码发布到远程,更新本地o/master指针 # 先合并远程最新代码才能分享你的代码 git push git push origin master:newBranch 将本地master 推送到远程的newBranch上 # 将本地的foo分支与远程分支关联,默认不处理是master git remote add origin git@server-name:path/repo-name.git git checkout -b foo o/master git branch -u o/master foo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值