Git实操小课堂(三)

简介: Git实操小课堂(三)

rebase变基/衍合


10.jpg


作业:实现如下操作


11.jpg

git rebase -i HEAD~4
复制代码


再来一题:


12.jpg

// 首先将master移动到C4分支
$ git branch -f master C4
// 由bugFix切换到master上
$ git checkout master
//复制
$ git rebase -i HEAD~3
复制代码


二思后新的解题思路:


git rebase bugFix master
git rebase -i HEAD~3
复制代码


again:(不允许使用 cherry-pick)


13.jpg

//首先将master移动到C3上
$ git branch -f master C3
//检出master
$ git checkout master
$ git rebase -i HEAD~2
$ git rebase -i HEAD~1
$ git rebase -i HEAD~2
复制代码


另一种解题思路:


$ git rebase -i HEAD~2
$ git rebase -i HEAD~1
$ git rebase -i HEAD~2
$ git rebase caption master
复制代码


此外着重需要注意下述命令:


git rebase o/master side1
相当于
git checkout side1
git rebase o/master
复制代码


假设 HEAD 在 foo 分支节点上(foo*标识),如果想要将 master 移动到 foo 所在的节点上,并且检出,则可以通过一条命令来实现。


git rebase foo master
复制代码

tag


分支很容易被人为移动,并且当有新的提交时,它也会移动。分支很容易被改变,大部分分支还只是临时的,并且还一直在变。Tag 可以永远指向某个提交记录的标识呢,比如软件发布新的大版本,或者是修正一些重要的 Bug 或是增加了某些新特性。


它们并不会随着新的提交而移动。你也不能检出到某个标签上面进行修改提交,它就像是提交树上的一个锚点,标识了某个特定的位置。


14.jpg

$ git checkout master
$ git cherry-pick C2
$ git branch -f master C1
$ git cherry-pick C2 C3
复制代码


Describe


由于标签在代码库中起着“锚点”的作用,Git 还为此专门设计了一个命令用来描述离你最近的锚点(也就是标签),它就是 git describe


Git Describe 能帮你在提交历史中移动了多次以后找到方向;当你用 git bisect(一个查找产生 Bug 的提交记录的指令)找到某个提交记录时,或者是当你坐在你那刚刚度假回来的同事的电脑前时, 可能会用到这个命令。


clone


git clone
复制代码

git clone 命令在真实的环境下的作用是在本地创建一个远程仓库的拷贝(比如从 github.com)。


15.jpg


如果你看到一个名为 o/master 的分支,那么这个分支就叫 master,远程仓库的名称就是 o


大多数的开发人员会将它们主要的远程仓库命名为 origin,并不是 o。这是因为当你用 git clone 某个仓库时,Git 已经帮你把远程仓库的名称设置为 origin

不过 origin 对于我们的 UI 来说太长了,因此不得不使用简写 o :) 但是要记住, 当你使用真正的 Git 时, 你的远程仓库默认为 origin!


16.jpg


思路:在 master 分支上做一次提交;然后检出 o/master,再做一提交。这有助于你理解远程分支的不同,他们的更新只是反映了远程的状态。


$ git commit
$ git checkout o/master
$ git commit
复制代码


克隆一个远程仓库(用 git clone),再在刚创建的远程仓库中模拟一些修改,然后在你自己的本地分支上做一些提交,再拉取远程仓库的变更。


17.jpg

git clone
//假设成员做两次修改
git fakeTeamwork 2
//本地提交,生成 C4
git commit
//更新
git pull
复制代码


log


git log
复制代码


查看之前提交的 git 历史。


merge与rebase区别


18.jpg

19.jpg


优点:


  • Rebase 使你的提交树变得很干净, 所有的提交都在一条线上


缺点:


  • Rebase 修改了提交树的历史


比如, 提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的,但实际上是在 C3 之前。

推荐阅读:git rebase 使用详解


组合拳


que1:

20.jpg


思路提示:


  • 这里共有三个特性分支 —— side1side2side3
  • 我需要将这三分支按顺序推送到远程仓库
  • 因为远程仓库已经被更新过了,所以我们还要把那些工作合并过来
$ git fetch
$ git rebase o/master side1
$ git rebase side1 side2
$ git rebase side2 side3
$ git rebase side3 master
$ git push
复制代码


que2:


21.jpg


标准答案:


$ git checkout master
// git pull 相当于 git fetch + git merge
$ git pull
$ git merge side1
$ git merge side2
$ git merge side3
$ git push
复制代码


que3:


当你克隆时, Git 会为远程仓库中的每个分支在本地仓库中创建一个远程分支(比如 o/master)。然后再创建一个跟踪远程仓库中活动分支的本地分支,默认情况下这个本地分支会被命名为 master


  • pull 操作时, 提交记录会被先下载到 o/master 上,之后再合并到本地的 master 分支。隐含的合并目标由这个关联确定的。


  • push 操作时, 我们把工作从 master 推到远程仓库中的 master 分支(同时会更新远程分支 o/master) 。这个推送的目的地也是由这种关联确定的!


拉取远程分支并创建本地分支


git checkout -b foo o/master
复制代码


使用该方式会在本地新建分支 foo,并自动切换到该本地分支 foo。采用此种方法建立的本地分支会和远程分支 o/master 建立映射关系。


另一种设置远程追踪分支的方法就是使用:git branch -u 命令,执行:


git branch -u o/master foo
复制代码


这样 foo 就会跟踪 o/master 了。如果当前就在 foo 分支上, 还可以省略 foo:


git branch -u o/master
复制代码


查看如下案例:


22.jpg

23.jpg


作业:


24.jpg

$ git checkout -b side o/master
$ git commit
$ git pull --rebase
$ git push
复制代码


查看远程仓库地址


到达指定项目目录下,该目录下包含.git 文件夹。然后打开 git,输入以下命令:


git remote -v
复制代码

25.jpg


查看/修改用户名和邮箱地址


查看用户名和邮箱地址:


$ git config user.name
$ git config user.email
复制代码

修改用户名和邮箱地址:


$ git config --global user.name "username"
$ git config --global user.email "email"


目录
相关文章
|
1月前
|
开发工具 git
git实操gitee
本文介绍了使用Git进行实际操作的步骤,包括连接远程Gitee仓库、拉取项目、修改项目后提交以及将更改推送到Gitee的命令和过程。
44 3
git实操gitee
|
6月前
|
jenkins Java 持续交付
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(上)
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)
|
开发工具 git Windows
Git分支新建与合并案例实操(结合IDEA讲解)
Git分支新建与合并案例实操(结合IDEA讲解)
297 0
|
6月前
|
jenkins 持续交付 开发工具
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(下)
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)
|
存储 IDE Java
基于IDEA 工程项目的git实操(一)
基于IDEA 工程项目的git实操
259 2
基于IDEA 工程项目的git实操(一)
|
存储 开发工具 数据安全/隐私保护
基于IDEA 工程项目的git实操(二)
基于IDEA 工程项目的git实操
233 1
基于IDEA 工程项目的git实操(二)
|
存储 分布式计算 算法
Git01下载安装+与SVN的区别+实操
Git01下载安装+与SVN的区别+实操
Git01下载安装+与SVN的区别+实操
|
开发工具 git
Git实操小课堂(二)
Git实操小课堂(二)
157 0
Git实操小课堂(二)
|
开发工具 git
Git实操小课堂(一)
Git实操小课堂(一)
145 0
Git实操小课堂(一)
|
4天前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
20 1
[Git]入门及其常用命令