learn learngitbranching

学习learngitbranching的一些记录。都是关于git分支的操作。我整理的目录和原网站不同,主要是因为这个笔记是作为备忘录。

重要概念

  1. 注意要区分分支操作HEAD操作的不同。

分支操作

  1. git checkout -b new_branch新建并跳转到分支new_branch
  2. 注意合并是分支操作,有git mergegit rebase
  3. git merge是非线形合并,保留了提交历史,如果x1继承于x0,命令x0 merge x1只是把x0移动到了x1,不必做其他修改。如下所示,由C2直接指向了C4:
    merge1
  4. git rebase可以创造更线性的提交历史,是将次分支合并到主分支上。注意这个操作结束后两个分支的指向位置是不同的,还需要让master指向最新的位置。注意⚠️:次分支此时也指向了主分支,之前的那个次分支是否还存在?不确定。
  5. 分支操作,让分支指向另一个提交
    git branch -f master HEAD~3

HEAD操作

  1. git checkout用来进行HEAD跳转,HEAD既可以指向分支当前位置,也可以指向某个提交记录。
  2. 相对引用:使用^向上移动 1 个提交记录;使用~<num>向上移动多个提交记录,如git checkout HEAD~3

撤销操作

  1. 撤销更改有两种方式:git resetgit revert
  2. git reset向上移动分支,使原来指向的提交记录就跟从来没有提交过一样。注意⚠️:在reset后, 其实所做的变更还在,但是处于未加入暂存区状态。reset1
  3. 但是如果要撤销远程的就只能使用git revert。注意⚠️:git revert x就是指撤销记录x的修改,而不是让它新的指向和x相同。

修改记录

  1. git cherry-pick hbsun_some_hash将提交(hbsun_some_hash)复制到当前所在的位置(HEAD)下面,可以一次添加多个。应该常见于分支操作。
  2. 交互式操作:git rebase -i HEAD~4

说明操作

  1. git tag用来打标签
  2. git describe用来描述离当前HEAD最近的标签。
  3. 操作符^后面跟数字用来区分父节点,应用于有多个父节点时的情况。

远程操作

  1. 注意本地仓库中有一个master,同时也记录了远程的master:origin/master,它们是不同的概念,但是可以对应起来,有时在本地的指向可能并不一致。其他分支同理。
  2. git fetch 并不会改变你本地仓库的状态。它不会更新你的 master 分支,也不会修改你磁盘上的文件。为单纯的下载操作。注意和git pull区分。
  3. git fetch;git merge origin/mastergit fetch;git rebase origin/master不是完全一样,但是都不如直接git pull方便。git pull就是 fetchmerge 的简写,类似的 git pull --rebase 就是 fetchrebase 的简写!pull命令包含了merge
  4. 提交完pr后(一定是新建了其他分支来提pr),最好重置一下master分支和远程保持一致,否则下次pull时可能和其他人的修改有冲突。
  5. git checkout -b totallyNotMaster o/master: 创建一个名为 totallyNotMaster 的分支,它跟踪远程分支 o/master。或者,git branch -u o/master foo:本地foo 就会跟踪远程o/master 了。
  6. 本地分支跟踪远程分支,而HEAD不会跟踪远程分支。注意区分概念。
  7. 删除远程分支:push 空 到远程仓库。
    git push origin :foo
  8. git pull 远程分支前,要切换到真正对应的本地分支;否则,都会将远程仓库merge到本地当前HEAD指的位置:git pull origin master即使本地当前分支为other_banch,也会将远程master merge进other_banch里,即使使用source:destination,也会最后merge到本地当前HEAD指的位置。

常用操作

  1. 添加远程仓库: `git remote add origin https://github.com/hbsun2113/***.git
  2. `

本文标题:learn learngitbranching

文章作者:Alfred

发布时间:2020年04月14日 - 20:04

最后更新:2020年05月02日 - 21:05

原始链接:http://blog.hbsun.top/2020/04/14/learn-learngitbranching/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。