美文网首页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