git使用
总结一下自己遇到的各种场景git的使用,不间断更新。
基本使用
clone
使用git clone
命令将远程仓库拷贝一份到本地
- 下载他人的代码:
git clone git@github.com:torvalds/linux.git
,此时不能向这个仓库提交修改,相当于只读,在本地使用or测试学习。可以通过git pull
强制同步远程仓库的更新。 - 如果不关心这个仓库的历史,可以加上
--depth=x
,只下载最后x个版本。 - 下载自己的仓库,此时应该在本地的git中配置好了相关信息并且将SSH公钥上传至github。这时可以对这个仓库进行更新操作。
pull,push,fetch
git push
将本地commit同步到远程。--all
push all branch-f
强制推送,当远程分支与本地分支冲突时。(例如:在本地回滚了已经在远程仓库中的commit)
git pull
从远程拉取更新,直接刷新到工作区。git fetch
从远程拉取更新到origin/下,自己rebase or merge。
整理commit
压缩commit
https://blog.youkuaiyun.com/weixin_51290195/article/details/124619004
TODO
rebase
多人协作时,定期rebase。
TODO
将push-remote与fetch-remote分离
https://stackoverflow.com/questions/31747072/will-remote-url-for-fetch-and-push-be-different
场景:
- 在给开源仓库做贡献时,本地push到自己的fork仓库中,但是fetch同步源仓库的更新。
- 做Lab,想push到自己的github仓库中,同时fetch拉取源仓库的更新。
此时,可以设置个人仓库为push远程地址,而设置主仓库为fetch远程地址:
user@ubuntu:~/Labs/xv6-labs-2023$ git remote -v
origin git://g.csail.mit.edu/xv6-labs-2023 (fetch)
origin git://g.csail.mit.edu/xv6-labs-2023 (push)
user@ubuntu:~/Labs/xv6-labs-2023$ git remote set-url --add --push origin git@github.com:USERNAME/xv6-labs-2023.git
user@ubuntu:~/Labs/xv6-labs-2023$ git remote -v
origin git://g.csail.mit.edu/xv6-labs-2023 (fetch)
origin git@github.com:USERNAME/xv6-labs-2023.git (push)
可视化
log
git log --graph --pretty=oneline --abbrev-commit
在终端中查看当前分支情况,
git log --graph --pretty=oneline --abbrev-commit --all
在终端中查看所有分支情况。
插件
vscode插件不是免费的。
Jetb系自带,但是软件本身不是免费的。