Git特殊使用场景命令

删除已推到远程分支的提交

git log复制需要回滚的commit_id,把HEAD指向这个commit_id并强制推送

1
2
git reset --hard [commit_id]
git push origin HEAD --force

交互式命令

1
echo "输入要回滚的commit id" && read id && git reset --hard $id && git push origin HEAD --force

强制更新

抛弃当前所有的变更并更新

1
2
3
git fetch --all
git reset --hard origin/[分支名称]
git pull

交互式命令

1
echo "输入要更新的分支(default: master)" && read input && branch=${input:=master} && echo 从"$branch"拉取更新 && git fetch --all && git reset --hard origin/"$branch" && git pull

克隆到非空文件夹

1
2
3
4
git clone --no-checkout [git_url] tmp
mv tmp/.git .
rmdir tmp
git reset --hard HEAD

交互式命令

克隆并覆盖当前文件夹

1
echo "输入要克隆的URL" && read url && echo 克隆"$url"到当前文件夹 && git clone --no-checkout $url tmp && mv tmp/.git . && rmdir tmp && git reset --hard HEAD

更改全局用户名和邮箱

全局用户名

1
git config --global user.name "[用户名]"

全局邮箱

1
git config --global user.email "[邮箱地址]"

给Github设置SSH代理

来源:https://gist.github.com/chuyik/02d0d37a49edc162546441092efae6a1

修改或创建config

1
vi ~/.ssh/config

设置Github走1080端口

1
2
3
4
5
6
7
8
9
10
11
// macOS
Host github.com
HostName github.com
# Socks5
ProxyCommand nc -x 127.0.0.1:1080 %h %p

// Windows
Host github.com
HostName github.com
# Socks5
ProxyCommand connect -S 127.0.0.1:1080 %h %p