社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

Git 游戏攻略(上篇)- 基础&高级&整理提交记录

张风捷特烈 • 6 年前 • 649 次点击  
阅读 276

Git 游戏攻略(上篇)- 基础&高级&整理提交记录

一个学习git的网站,本文便是攻略。看一个个对话框也怪费时间的,整理一篇出来,看得清晰点。

一、基础篇:循序渐进地介绍 Git 主要命令

1. Git Commit

如果说一个项目开发过程中所有的提交记录构成一个树,那么commit 命令就是树的一个个节点。首先游戏界面是这样的,第一关要求我们提交两次,也就是创建两个节点。


git commit -m "提交记录,创建节点c2": 执行后就创建了c2节点


git commit -m "提交记录,创建节点c3": 执行后就创建了c3节点

OK ,你成功通过第一副本的第一关卡


2. Git Branch

如果说commit 提交出一个个节点,一直下去,那他就是一柱擎天。树嘛,总是要开枝散叶,branch 就能让它发一个枝


git branch bugFix:这样我们的树就在master中发芽了,但也只是萌发


git checkout bugFix:通过checkout切换到当前枝,然后bugFix枝就可以生长了


虽然关卡,这里就结束了,不过为了更形象,这里在bugFix枝中提交一次看看


3. Git Merge

当一个bug被修复后,一条枝的使命就完成了,这时就可以将它合并到主支上。
该副本过程是新建一个分支,然后将其合并到主支上。


git checkout -b bugFix: 可以直接checkout -b来创建分支并切至


git commit -m "修复bug":当bug修复完毕,就可以将其提交


git checkout master:然后切回主支


git commit -m "bug修复完毕,主线提交":在主支提交后出现c3节点


git merge bugFix: 通过merge命令可以指定分支合并到当前支m主分支会产生c4


4. Git rebase

第二种合并分支的方法是 git rebase。Rebase实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。

git checkout -b bugFix
git commit -m "修复bug"
git checkout master
git commit -m "bug修复完毕,主线提交"
git checkout bugFix
git rebase master
复制代码


二、高级篇

HEAD 总是指向当前分支上最近一次提交记录。
复制代码
1.分离HEAD : 从 bugFix 分支中分离出 HEAD 并让其指向一个提交记录

使用checkout 可以切换到一个节点,此时记录头HEAD指向该节点

git checkout C4: 记录头HEAD指向C4


虽然该副本就此结束,但是我还是忍不住再提交一个记录看看,可见生成了C5并且头下移


2.相对引用^

每个节点都有一个SHA1值与之对应,而我们可以通过该SHA1值回到某个节点,但SHA1太长了,可以使用^上移一步。
该副本需要:切换到 bugFix 的父节点,初始如下:


git checkout bugFix^:切换到 bugFix 的父节点


虽然该副本就此结束,但是我还是忍不住再提交一个记录看看,可见下该头之下生成了C5并且头下移


3.相对引用~

如果要移动多步,用^就比较繁琐,这时可以使用~来指定上移多少步
该副本需要:移动 HEAD,master 和 bugFix 到目标所示的位置。

可见结果中master指到C6,bugFix移到C0,HEAD指向C1


git branch -f master C6:会将 master 分支强制指向C6


git checkout HEAD~1:会将头标上移一个到C1


git branch -f bugFix HEAD~1: 会将 bugFix 分支强制指向头标的上一位,即C0。本关通过。


4.撤销变更
git reset 通过把分支记录回退几个提交记录来实现撤销改动(远程分支是无效)
git revert 为了撤销更改并分享给别人,需要使用 git revert
复制代码

该副本需要:分别撤销 local(本地) 分支和 pushed(远程) 分支上的最近一次提交。 初始如下:


git reset HEAD~1 :local(本地) 分支撤销一步到达C1


git checkout pushed:将分支切到pushed(远程) 分支


git revert HEAD: 此时 C2' 的状态与 C1 是相同的,达到撤销目的

Ok,这样你就会了Git的90%,就像天才是百分之九十九的努力和百分之一的灵感,然而那百分之一却是你最大的门槛....


三、整理提交记录

1.Git cherry-pick
git cherry-pick <提交号>...
如果你想将一些提交复制到当前所在的位置(HEAD)下面的话,记住 cherry-pick 
复制代码

该副本需要: 将三个分支中的提交记录复制到 master 上,下面看起来挺复杂,不过别怕:


git cherry-pick C3 C4 C7: 将 C3 C4 C7复制到,当前所在的位置(master)

怎么样,就这么简单。


2.Git rebase
你知道录提交记录的SHA1值时, 用 cherry-pick 再好不过。
but, 但是如果不清楚你想要的提交记录的哈希值呢? 记住: rebase

交互式 rebase 指的是使用带参数 --interactive 的 rebase 命令, 简写为 -i
复制代码

该副本需要:将C3,C5,C4节点依次拷贝至C1下


git rebase -i overHere:就可以打开一个交互面板。


OK ,讲得也挺多的,之后的知识。下篇见,Bye。以前也写过一篇:杂篇:一首诗认识[- Git -]

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/45330