安全的强推 push —froce-with-lease
推荐使用更安全的 force push 命令:
|
|
该版本可以确保,不会覆盖其他人的提交。如果有尚未 fetch 的远程提交,该命令会提示并中止执行。
定位某个 commit 合入的版本
git name-rev <commit-id>
查看本地尚未 push 的提交
git cherry -v
指定要比较的远程分支:
git cherry -v origin/somebranch
merge & rebase
执行
git checkout --ours path
(以及git checkout --theirs path
)命令时,要格外注意,这里的 ours 和 theirs 容易搞混:在做 merge 时:
- *ours* 指当前的分支 - *theirs* 指要合入的目标分支
在做 rebase 时:
- *ours* 指 rebase 参数所指定的分支 - *theirs* 指当前在做 rebase 的分支
原因解释:因为 rebase 是通过一系列的 cherry-pick 来实现的,是把当前分支的 commit cherry-pick 到指定分支。因此,在 cherry-pick 的过程中,指定的分支被视为 ours,而被 rebase 的当前分支被视为 theirs 。
Tags
push tags: git push --tags
rename tag:
|
|
Git 代理配置
.gitconfig
配置:
|
|
.gitconfig
文件可放在家目录下(影响当前用户),亦可放在单个 git 仓库下(仅影响当前仓库)。
也可以采用如下命令来设置代理:
|
|
参考这篇文档,虽然名字叫 http
.proxy
,但其实也支持 https。
另外,如果希望域名也通过代理来解析的话,则应该将 socks5
替换为 socks5h
。
Git through ssh
|
|
git filter-branch
// TODO