git学习地址
https://learngitbranching.js.org/?locale=zh_CN
HEAD一开始指向当前分支的头部
git 换行问题
git config --global core.autocrlf false
1.commit
git commit -m "this is a demo comment"
提交代码改动到本地仓库
git commit --amend 追加提交
git commit 是最新的
2.branch
git branch bugFix
git checkout bugFix
相当于 git checkout -b bugFix
3.merge(合并,非线性)
使用场景:
在一个新分支上添加一个新功能,然后把它合并到老分区
在main分区合并bugfix之后,它的parent指向一个节点,该节点指向bugfix和main的历史parent
featch只是简单地下载
git checkout -b bugFix
git commmit -m "fixBug"
git checkout main
git commit -m "update main"
git merge bugFix
4.rebase(将当前分支rebase到目标分支,线性可用)
git rebase destBranch
使用场景:
将当前分支的更改,线性应用到指定分区上
git checkout -b bugFix
git commit -m "fixBug"
git checkout main
git commit -m "update main"
git chekout fixBug
git rebase main
rebase不会保留分支点,而merger会,reabse是线性结构,而merge是树形结构,本地可以用rebase,远程应该用merge
线性的rebase
git pull --rebase
5.head
head是默认指向分支,你如果git checkout xxx ,它将指向xxx
6.相对引用
name^num: 选择第n个父节点
name~num : num为后退的步数
git branch -f xxx yyy 让xxx分支指向yyy
这两个不一样!
7.重置
远程 git revert(指向一个新的副本)
本地 git reset
8.自由提交(不能指定父)
git cheery-pick 指定的记录1, 指定的记录2
9.git rebase -i
打开一个窗口
可拖动排序
点击omit可省略
比如 git rebase -i HEAD~4
git tag
tag就是在版本发布的时候用,比如
git tag version destination
git describe
git describe dest
计算上一个tag到dest的距离