1. 新建远程仓库
1 2 3 4 5 6 7 cd ~/xxxxgit init git add . git commit -m "first commit" git remote add origin https://github.com/shenbo/xxxx.git git push -u origin master
2. 远程仓库操作
检出仓库:git clone https://github.com/shenbo/xxxx.git
拉取仓库:git pull [remoteName] [localBranchName]
推送仓库:git push [remoteName] [localBranchName]
显示日志:git log -1 --stat
# 显示最近一次commit的更改统计概述
3. 放弃本地修改,强制更新 1 2 3 4 5 git fetch --all git reset --hard origin/master git clean -df
3. 暂存本地修改 1 2 3 4 5 6 7 8 9 git stash git stash list git stash apply 0 git stash clear
4. 配置SSH 4.1 生成 ssh key
打开git bash,设置用户名,并生成ssh-key
。
1 2 3 4 5 6 7 8 git config --global user.name "shenbo" git config --global user.email "shenbo@hotmail.com" ssh-keygen -t rsa -b 4096 -C "shenbo@hotmail.com" eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa ls ~/.ssh
现在github推荐使用新的 Ed25519 加密算法https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
1 2 3 4 5 6 7 git config --global user.name "shenbo" git config --global user.email "shenbo@hotmail.com" ssh-keygen -t ed25519 -C "shenbo@hotmail.com" eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519
4.2 将 ssh 公钥添加到远程服务器 如果是连接远程服务器,可使用 ssh-copy-id
命令。
1 2 3 4 ssh-copy-id -i ~.ssh/id_ed25519.pub user@xxx.xxx.xxx.xxx
4.3 将 ssh 公钥添加 github.com
如果连接报错ssh: connect to host github.com port 22: Connection > refused
, 打开/新建~/.ssh/config
,修改内容如下,重新测试。
1 2 3 4 5 6 Host github.com User shenbo@hotmail.com Hostname ssh.github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519 Port 443
5. 永久删除文件(包括历史记录)
ref: https://help.github.com/articles/remove-sensitive-data
1 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' --prune-empty --tag-name-filter cat -- --all
1 2 3 git filter-branch --force --index-filter \ 'git rm --cached -r --ignore-unmatch PATH-TO-YOUR-FLODER-WITH-SENSITIVE-DATA' \--prune-empty --tag-name-filter cat -- --all
5.3 把文件或文件夹添加到.gitignore文件里:
1 2 3 echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignoregit add .gitignore git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"
5.4 然后以强制覆盖的方式推送repo, 命令如下:
1 2 git push origin master --force git push origin master --force --tags
1 2 3 git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now
5.6 另外,可以通过 rev-list 命令来找到仓库记录中的大文件:
1 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"