当前的分支名
git branch --show-current
origin
上的默认分支名
// git remote show origin | grep 'HEAD branch' | sed 's@ HEAD branch: @@'
git symbolic-ref refs/remotes/origin/HEAD | sed "s@^refs/remotes/origin/@@"
在任意分支上更新默认分支
// git fetch origin master:master
default_branch=$(git symbolic-ref refs/remotes/origin/HEAD | sed "s@^refs/remotes/origin/@@"); git fetch origin $default_branch:$default_branch
清理暂存区和工作区
git reset HEAD -- && git checkout . && git clean -fd
显示当前分支相对默认分支的新增提交
// git log branch-name --not default-branch-name
git log `git branch --show-current` --not `git symbolic-ref refs/remotes/origin/HEAD | sed "s@^refs/remotes/origin/@@"`
通过 diff 文件传递修改
git diff HEAD^ > changes.diff
git diff master...HEAD > changes.diff
git apply changes.diff
将本地提交打包成 patch 文件
diff 文件只包含修改, patch 还包含 author 信息.
可以追加参数改变输出 --stdout
// 打包最新的一个提交
git format-patch HEAD^
// 打包当前分支的所有提交
git format-patch `git merge-base master HEAD`
// 应用 patch 文件 (如果不需要author信息可以使用 `apply`)
git am 0001-Edit-Readme.patch