美文网首页Github
git 常用命令

git 常用命令

作者: 洗洗睡吧i | 来源:发表于2019-02-13 19:26 被阅读0次

1. 新建远程仓库

cd ~/xxxx
git 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. 放弃本地修改,强制更新

git fetch --all
git reset --hard origin/master

# 删除 untracked 文件或文件夹,不含.gitignore
git clean -df

4. 配置SSH

  • 打开git bash,设置用户名,并生成ssh-key
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
  • 复制~/.ssh/id_rsa.pub,在 github.com 个人设置页面,点击新建或添加 SSH key,将id_rsa.pub内容复制进去。

  • 测试 git 客户端与 github 是否连接成功。

$ ssh -T git@github.com
  • 如果连接报错ssh: connect to host github.com port 22: Connection > refused, 打开/新建~/.ssh/config,修改内容如下,重新测试。
Host github.com
User shenbo@hotmail.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

5. 永久删除文件(包括历史记录)

ref: https://help.github.com/articles/remove-sensitive-data

  • 5.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
  • 5.2 删除文件夹命令:
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文件里:
echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"
  • 5.4 然后以强制覆盖的方式推送repo, 命令如下:
git push origin master --force --all
git push origin master --force --tags
  • 5.5 清理和回收空间:
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 命令来找到仓库记录中的大文件:
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

相关文章

网友评论

    本文标题:git 常用命令

    本文链接:https://www.haomeiwen.com/subject/tqpljqtx.html