Git常见问题

git常见问题

开发

一般的开发流程如下,git clone代码后,在自己的本地分支上开发,避免主分支开发上的混乱

  1. 新建本地分支
    git checkout -b dev

  2. 推送本地分支到远程
    git push origin origin/dev

  3. 切换当前分支到master
    git checkout master

  4. 将dev分支合并到master
    git merge dev

冲突

同步代码前应尽量避免冲突

  1. 备份当前工作区(前提是,没有git commit,可以git add)
    git stash
    或者 加入注释以便以后好找回未提交的代码
    git stash save '正在做冒泡功能,保存一下2016-06-30....'

  2. 更新代码
    git pull

  3. 还原工作区
    git stash pop

撤销

1
2
3
4
术语:
工作区 是你的本地开发环境
缓存区 是你add的本地仓库
引用 是你commit的本地分支(如master)
  1. 改提交说明:
    $ git reset --soft HEAD^
    工作区和暂存区不改变,但是引用向前回退一次。当对最新的提交说明或者提交的更改不满意时,撤销最新的提交以便重新提交。

  2. 改提交文件内容:
    $ git reset --mixed HEAD^
    工作区不改变,但是暂存区会回退到上一次提交之前,引用也会回退一次。

  3. 慎用!!!工作区所有未commit改动永久丢失!!!
    $ git reset --hard HEAD^
    彻底撤销最近的提交。引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态。自上一次以来的提交全部丢失。

  4. 慎用!!!工作区相应的文件未commit改动永久丢失。
    $ git checkout -- filename
    用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。

  5. 慎用!!!工作区相应的文件未push改动永久丢失。
    $ git checkout branch -- filename
    维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。

  6. 查看操作记录
    git relog

  7. 查看提交记录
    git log