放弃本地更改:

  • 未添加到暂存区

    1. git checkout - filename, 如git checkout test
    2. git checkout . 放弃所有
  • 已添加到暂存区 (使用git add后)

    1. git reset HEAD filename, 如git reset HEAD test
    2. git reset HEAD . 放弃所有
  • 已经提交到本地仓库 (使用git commit后)

    1. 回退到上一版本 git reset --hard HEAD^
    2. 回退到任意版本 git reset --hard commitId
  • 放弃本地修改,强制和远程同步, 使用git pull强制覆盖

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

一套工作流:

  1. 先 clone 项目 (假设克隆 master 分支)

    git clone
    
  2. 创建本地分支 (以当前的 master 分支为基础)

    git checkout -b dev
    
  3. 进行修改后

    # 当前在本地dev分支下
    git add .
    git commit
    
  4. 切换至 master 分支

    git checkout master
    
  5. 将 dev 合并至 master 分支

    git pull # 远程可能有更新
    git merge dev
    
  6. 推入 master 分支

    git push
    
  7. 切换至本地 dev 分支并合并 master 分支, 继续开发

切换远程分支:

  1. 查看所有分支

    git branch -a
    
  2. 切换远程分支

    git checkout -b dev origin/dev # 切换至远程dev分支并在本地取命为dev
    

本地分支关联远程分支:

git branch --set-upstream dev origin/dev

查看本地对应的远程仓库地址:

git remote -v