Git的常用命令

查看分支

  • 所有远程分支

      git branch -r
    
  • 所有分支

      git branch -a
    

拉取远程分支并创建本地分支

  • 方法一: git checkout -b 本地分支名x origin/远程分支名x

  • 方法二: git fetch origin 远程分支名x:本地分支名x

    两种方式的不同点在于第二种方法,创建分支之后不会自动切换到新创建的分支

同步本地与远程origin中的分支列表

  • 命令1: git remote prune origin

  • 命令2: git gc --prune=now

Stash的处理

  • 查看列表: git stash list

  • 添加改动到stash git stash save -a "messeag"

  • 恢复改动

    • 恢复到最近一次保存 git stash pop

    • 恢复到某一次stash git stash pop stash@{id}或者git stash apply stash@{id}

  • 删除stash: git stash drop <stash@{id}>, 如果不加stash的id,则默认删除最新的

  • 清空stash: git stash clear

    注:使用git stash pop意味着应用stash并删除,使用git stash apply stash@{id}意味着应用之后依旧保留相应的stash

分支管理

  • 合并以分支diff的形式BRANCH_NAME到当前分支:git merge --squash BRANCH_NAME

  • 同步分支信息: git fetch origin

  • 检出分支并跟踪远程分支: git branch —track origin/release/v.0.0.1

  • 列出所有分支: git branch -a

  • 列出所有远程分支: git branch -r

  • 删除分支: git branch -d BRANCH_NAME

  • 交互式提交: git rebase -i commit_id

  • 提交: git commit -m "JIRA# - comment"

  • 推送: git push

彻底删除git文件

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch path/to/your/file' HEAD
git push origin master --force
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

在Github上fork的项目如何与主干项目保持同步

  • 到fork的项目主页

  • 点击pull request

  • 标记比较fork分支

  • 在第一个选择框里选择想要把代码合并进去的分支, 也叫base分支

  • 在第二个选择框里选择想要同步的代码的来源分支, 也叫head分支

如果我要将user/repository最新的代码同步到我fork的版本jihgao/repository1上,那么base分支应该选择jihgao/repository1, head分支选择user/repository;反之,交换分支的位置变为将本地的修改同步到主干项目上去。