# git命令 配置ssh ```bash ssh-keygen -t rsa -b 4096 -C "****@****.****" ``` 添加远程仓库 ```bash git remote add origin git@github.com:seamong/gitbook git push -u origin master ``` 本地创建远程分支 ```bash git push origin <本地分支>:<远程分支> ``` 本地删除远程分支 ```bash git push origin :<远程分支> ``` 本地分支绑定远程分支 ```bash git branch --set-upstream-to=origin/<远程分支> <本地分支> ``` 创建本地分支 ```bash git checkout -b <本地分支> ``` 删除本地分支 ```bash git branch -D <本地分支> ``` 添加远程仓库 ```bash git remote add origin https://github.com/**/**.git git push -u origin master ``` 回退一次版本(强制) ``` git reset --hard HEAD^ ``` 提交代码出现错误时,解决办法 ```bash git add . # 订单以及地址样式修改 git commit -m "" //[test 4dffb5e] index git push origin test ``` 强制更新 ```bash git pull -f origin test //该命令 无视本地文件修改.直接将远程仓库的代码覆盖本地文件 ``` #### 删除历史记录中文件 [原文](https://harttle.land/2016/03/22/purge-large-files-in-gitrepo.html)
寻找大文件的ID ```bash git rev-list --objects --all\ | grep "$(git verify-pack -v .git/objects/pack/*.idx\ | sort -k 3 -n | tail -5 | awk '{print$1}')" ``` ```bash $ git rev-list --objects --all\ | grep "$(git verify-pack -v .git/objects/pack/*.idx\ | sort -k 3 -n | tail -5 | awk '{print$1}')" f846f156d16f74243b67e3dabec58a3128744352 4a1546e732b2e2a352b7bf220c1a22ad859abf89 f72d04efe6d0b41b067f9fbbc62455f28d3670d2 49bdf300ddf57d1946bc9c6570d94a38ac9d6a50 9c073d4177af5d2e43ada41f92efb18d9462a536 ``` 文件名与ID映射 ```bash $ git rev-list --objects --all c252878ac09a3979a80520b82a71dc2dae4529f9 7bc7d05c6097063f531580ba4c32921464a6c456 _drafts dcce26ed53fbb869dc7d5b71742d2f9e523bfe42 _layouts 414186c794a0d58695abb75c548bdbfec1de2763 _layouts/default.html 1934eeffe3d242375510dff28cffa6de6b3de367 _layouts/post.html 5f14647875f2177a6d37b8bfbcdb4629af595b64 _posts 6cdbb293d453ced07e6a07e0aa6e580e6a5538f4 _posts/2013-10-12-2.md ``` 得到文件名列表 ```bash $ git rev-list --objects --all\ | grep "$(git verify-pack -v .git/objects/pack/*.idx\ | sort -k 3 -n | tail -5 | awk '{print$1}')" f846f156d16f74243b67e3dabec58a3128744352 assets/img/recent-badge.psd 4a1546e732b2e2a352b7bf220c1a22ad859abf89 assets/img/album/me/IMG_0276.JPG f72d04efe6d0b41b067f9fbbc62455f28d3670d2 assets/img/album/me/IMG_0389.JPG 49bdf300ddf57d1946bc9c6570d94a38ac9d6a50 assets/img/album/me/IMG_0813.JPG 9c073d4177af5d2e43ada41f92efb18d9462a536 assets/img/album/me/IMG_0891.JPG ``` 删除所有大文件 ```bash git filter-branch -f --prune-empty --index-filter\ "git rm -rf --cached --ignore-unmatch `[需要删除的文件的相对路径+文件名]`"\ --tag-name-filter cat -- --all ``` 同步远程仓库 ```bash git push origin --force --all ``` #### or 删除指定文件 ```bash # 语法 git filter-branch --force --index-filter\ 'git rm -rf --cached --ignore-unmatch [需要删除的文件的相对路径+文件名]'\ --prune-empty --tag-name-filter cat -- --all # 实例 git filter-branch --force --index-filter\ 'git rm -rf --cached --ignore-unmatch seaver/input.txt'\ --prune-empty --tag-name-filter cat -- --all ``` 同步远程仓库 ```bash git push origin master --force\ && rm -rf .git/refs/original/\ && git reflog expire --expire=now --all\ && git gc --prune=now ```