git的入门使用笔记

122 阅读2分钟

图形化学习网站:learngitbranching.js.org/

Git命令小结:

  • $ git rebase main (bugFix)
    • 将bugFix支与main分叉的所有commits都移动到main之后
    • bugFix可以省略,默认为当前所在分支
    • 移动后bugFix会自动成为当前所在分支
    • $ git rebase -i HEAD~4 (bugFix)类似于cherry-pick
      • 但是不需要知道你所需要摘取的各commit节点的hash值
      • 并且可以在vim中重新排序,编辑
  • $ git branch -f main HEAD~3
    • 强制移动main分支到HEAD~3
    • 当前所在的分支可以不是main,即可以移动其他分支
    • 移动后当前所在的分支不变
  • $ git reset 和 git reverse
    • $ git reset HEAD~1
      • 移动当前所在节点为HEAD~1,当前的commit丢失(变灰),好像从没commit过一样
      • 当然通过log还是可以看到“丢失”的那个commit的hash
      • reset后面的参数HEAD~1表示移动到哪去
      • $ git reset —hard origin/main 可以处理main被policy限制,需要用户创建pull request并创建别的分支才能merge时,如果用户又不知道情况,已经在本地尝试push到main分支,就会被远程remote拒绝并陷入锁死的情况,此时需要将本地的main分支与远程orign/main重新同步并创建新分支feature来进行push
    • $ git revert HEAD
      • 生成一个新commit,新commit和当前commit之间的delta内容,将是当前commit和其父commit节点间所提交修改的反操作
      • 不适用于remote协作,只作用于本机本地分支
      • revert后面的参数HEAD则表示要回退哪一个commit
  • $ git commit —-amend
    • 修改刚刚的commit,新commit同样指向原父commit节点
    • 经常被用于修改typo或者commit信息填写错误等
  • $ git tag v1 (C1)
    • C1是一个commit哈希,如果没写,默认是当前HEAD所在的那个commit位置
  • $ git describe (<ref>)
    • 和git tag连用,可用于很长时间未接触项目后重新获取项目中特定位置的定位情况
    • <tag>_<numCommits>_g<hash>是输出格式
  • $ git pull 等价于 $ git fetch; git merge origin/main,假设当前所在main分支
  • $ git pull —rebase 等价于 $ git fetch; git rebase origin/main,假设当前所在main分支
  • $ git checkout -b feature (C2)
    • 此处C2为某一个commit的哈希,参数不给出时为创建新分支到HEAD当前位置
  • 改变本地对应origin/main远程分支的分支为其他分支的两个方法:
    • $ git checkout -b foo origin/main
    • $ git branch -u origin/main (foo),如果当前分支为foo时,可以省略
  • $ git fetch origin :bar
    • 可以创建本地分支bar
  • $ git push origin :foo
    • 可以删除远程分支foo
    • $ git pull origin main 取决于你当前所在的分支,比如当前所在foo分支,那么就相当于在foo分支上拉取远程main所有的新commit,而不会修改本地的main分支,所以你可以在多个不同分支上git pull origin main以达到更新各个分支的目的:
      • $ git fetch origin main
      • $ git merge main
    • $ git pull origin main:bar 则做的更多:
      • $ git branch bar 创建本地新分支bar
      • $ git fetch origin main:bar 将main对应的远程分支的commits更新到本地分支bar
      • $ git merge bar 合并当前所在分支和bar分支

其他git学习资料: