常用命令
切换分支
git reset --hard ## 查看操作历史,寻找之前记录的分支 git reflog ## 查找指定行的commit log git log -S "void ss()" /path/file
查看未提交的文件修改
1git show
show not staged
1git diff
查看指定commit存在哪些分支
1git branch -r --contains xxx
查找指定commit后面的commit
1git log --oneline --reverse master..REF | head -n 10
查看被删除的文件相关的commit
12git log --all -- src/mgr/PyModule.cc
查看tag之间差异的commit
1git log v12.2.12..v13.0.2 src/mgr
tag功能
如何找到tag是从哪个分支的哪个commit打出?
子模块
git subtree(第三方, 独立仓库子树合并)
git submodule(独立的子仓库)
.gitmodules修改为mirror地址
git submodule sync
git submodule init
git submodule update
或者 git submodule update --init --recursive
添加git submodule
123git submodule add <url> <path>git diff --cachedgit commit -m "xxx"
submodule的submodule
1git submodule update --init --recursive
理论上这个可以, 那我编译时还触发了git clone的应该是因为代码并不是完全用submodule维持的关系了把?
回滚. git reset --hard即可.
git diff 与vscode对接
git支持通过difftool对接一些外部插件
123456789101112git config --global difftool.code.cmd 'code --wait --diff $LOCAL $REMOTE'git config --global mergetool.code.cmd 'code --wait $MERGED'git config --global -lgit difftool devgit difftool -t code devgit mergetool -t code dev
潜在问题: 好像在difftool这个交互进程退出前, 会在dock上弹出很多个vscode的图标
记录
git的快照流是指什么? (参见 Git 内部原理 来了解更多关于到底 .git 文件夹中包含了哪些文件的信息。) 事实上,如果你的服务器的磁盘坏掉了,你通常可以使用任何一个克隆下来的用户端来重建服务器上的仓库(虽然可能会丢失某些服务器端的挂钩设置,但是所有版本的数据仍在,详见 在服务器上搭建 Git )。
阅读全文…