git 操作
全局配置
## 全局配置 在 .gitconfig
[http "https://github.com"]
proxy = http://127.0.0.1:7890
[safe]
directory = /opt/homebrew
directory = /opt/homebrew/Library/Taps/homebrew/homebrew-core/
directory = /opt/homebrew/Library/Taps/homebrew/homebrew-cask/
directory = /opt/homebrew/Library/Taps/homebrew/homebrew-services/
[core]
editor = code --wait
[user]
name = xx
email = xx@gmail.com
[pull]
ff = only
常用操作
git pull
他相当于 git fetch + (git merge 或 git rebase; 取决于策略)
// 有这几种策略:
hint: git config pull.rebase false # merge 一般这个是默认的
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
// 这个命令可以设置全局pull默认 策略 一般用这个
git config --global pull.ff only
然后另外可以在每次执行 pull 命令时添加 --rebase、--no-rebase,-no-ff, --ff-only 参数覆盖缺省设置。
关于-no-ff与 fast forward:
这个主要是 merge的时候的模式, fast forward: 快速合并 不会有多余提交; -no-ff: 有多余提交;
git merge
git rebase
多个commit合并为一个
// (4cb600e为需要合并的多个commit的前一个commit)
git rebase -i 4cb600e
保持线性(解决掉merge 时多出来的一个commit)
在本地 feature分支上,运行git rebase origin/develop , 此时会强制重排列, 即便本地的分支提交时间在前,也会安排在后面; 优先以origin/develop 先排列一次 再追加本地内容;
// 他会自动先fetch 再rebase; git merge origin/dev 也是,不需要手动fetch
git rebase origin/dev
// 或者 (这个也能解决 fatal: Not possible to fast-forward, aborting 问题)
git pull origin --rebase
rebase风险:
这个命令 在本地 feature分支上,运行git rebase origin/develop; 的前提是 feature没有被别人使用,因为会丢失commit,如上图b 丢失了,增加了b’
扩展阅读
https://juejin.cn/post/7035512330662182920#heading-0
Tags: