跳转到内容
aswind7
GitHub
Blog

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

1

git rebase

多个commit合并为一个

// (4cb600e为需要合并的多个commit的前一个commit)
git rebase -i 4cb600e 

保持线性(解决掉merge 时多出来的一个commit)

在本地 feature分支上,运行git rebase origin/develop , 此时会强制重排列, 即便本地的分支提交时间在前,也会安排在后面; 优先以origin/develop 先排列一次 再追加本地内容; 1

// 他会自动先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: