git高级使用

此篇是为了我以后回顾而写的,所以写的有点简单,也有点乱,如果想系统的学习,请去这个网站:https://learngitbranching.js.org

此网站常用命令

1
2
3
4
5
6
# 回到关卡选择页面
levels
# 查看答案
show solution
# 重新开始
level advance3

1. rebase

  • 合并分支
    我在bugFix分支来rebase master分支,那么我这个bugFix 分支就是基于master分支的一个新的节点

    1
    2
    3
    4
    # 切换到bugFix分支
    git checkout bugFix
    # 让bugFix分支融合master分支的内容
    git rebase master
  • 合并提交

    1
    2
    # 合并这次与上次提交
    git rebase -i HEAD~2
  • 解决远程仓库fast-forward
    当我们提交代码时,可能别人已经提交过内容到远程仓库了,这时我们提交代码时就会提醒我们fast-forward,让我们先更新下代码再提交,我们可以用rebase很快的解决这个问题。

    1
    2
    3
    4
    # 先拉取最新代码进行rebase
    git pull --rebase origin master
    # 然后再提交
    git push
  • 本地分支与远程分支关联
    将本地master分支与远程master分支关联,这样可以在master分支中直接执行git pull进行拉取代码,不用再指定后面的分支

    1
    git branch --set-upstream-to=origin/master  master

2. merge

我在master分支来merge bugFix分支,那么我这个master分支就是在master分支的基础上再次融合bugFix分支的内容。

1
2
3
4
# 切换到master分支
git checkout master
# 融合bugFix分支的内容
git merge bugFix

3. checkout

  • 移动当前分支
    也可以理解为回滚上一次提交,放弃本次提交的修改,c2是通过git log进行查看的 commit id

    1
    git checkout c2
  • 移动某个分支

    移动提交记录。也可以理解为回滚,回滚到上一次提交,移动分支到某个提交记录处,

    1
    git branch -f bugFix c2

也可以直接通过HEAD^来指向上一个提交记录,或通过HEAD~3 往上移动3级

1
2
git branch -f bugFix HEAD^
git branch -f bugFix HEAD~2

4. reset

回退到上一次提交的版本,

1
2
3
4
# 回到此分支的上一个提交
git reset HEAD^
# 回到master分支的上一个提交
git reset master^

如果是远程也想要回退到上一个版本,可以使用

1
git revert HEAD^

如果想撤销远程分支上的内容需要使用git revert,它会新创建一个提交,而新创建的提交的状态正好等于你上一个版本的状态,假如我们现在的版本是c2,它上一个版本就是c1,那么执行完这个命令之后,就会新创建一个提交 为 c1’,它与c1的内容一致,我们将这它推送到远程端,别人更新之后就可以了

1
git revert HEAD^

5. cherry-pick

将其他提交,抓过来,放到此分支下面, c2c2c7git log中的commit id

1
2
3
4
5
# 切换到master分支
git checkout master
# 将其他分支的提交,拿过来,放到master上,特别注意,这几个记录的顺序问题
git cherry-pick c2 c4 c7
# 结果: HEAD——> c7——> c4——> c2

6. tag

也就是做个锚点,因为分支是很容易被改变,为了防止以后不能返回,所以可以打个tag,做个回滚记录点

1
2
# c1 为提交记录的id
git tag tag名 c1
-------------本文结束感谢您的阅读-------------