放弃本地更改:
-
未添加到暂存区
git checkout - filename, 如git checkout testgit checkout .放弃所有
-
已添加到暂存区 (使用
git add后)git reset HEAD filename, 如git reset HEAD testgit reset HEAD .放弃所有
-
已经提交到本地仓库 (使用
git commit后)- 回退到上一版本
git reset --hard HEAD^ - 回退到任意版本
git reset --hard commitId
- 回退到上一版本
-
放弃本地修改,强制和远程同步, 使用
git pull强制覆盖git fetch --all git reset --hard origin/master git pull
一套工作流:
-
先 clone 项目 (假设克隆 master 分支)
git clone -
创建本地分支 (以当前的 master 分支为基础)
git checkout -b dev -
进行修改后
# 当前在本地dev分支下 git add . git commit -
切换至 master 分支
git checkout master -
将 dev 合并至 master 分支
git pull # 远程可能有更新 git merge dev -
推入 master 分支
git push -
切换至本地 dev 分支并合并 master 分支, 继续开发
切换远程分支:
-
查看所有分支
git branch -a -
切换远程分支
git checkout -b dev origin/dev # 切换至远程dev分支并在本地取命为dev
本地分支关联远程分支:
git branch --set-upstream dev origin/dev
git remote set-url origin_dev https://github.com/xxx/project.git # 设置origin_dev关联的远程地址
查看本地对应的远程仓库地址:
git remote -v
设置别名
git config --global alias.ca '!git add . && git commit -a -s -m'
这样输入git ca将等效于git add .+git commit -a -s -m
