git版本工具

git作为当今比较流行的版本管理工具,对于我们每个开发人员来说都是必须懂的一个科目git之所以令人费解,主要是因为它比svn等传统的版本管理工具多引入了一个暂存区Stage 的概念

  1. 工作区
  2. 暂存区(Stage)
  3. 本地仓库
  4. 远程仓库
    他们每次进入一个区成功后会产生一种状态,在加上最初始的一种状态,总共有5中状态

    状态

  5. 未修改(origin)
  6. 已修改(modified)
  7. 已暂存(staged)–git add .
  8. 已提交(commited)–git commit -m “”
  9. 已推送(pushed)

    查看更改的内容git diff

  • 当我们修改的文件还没提交到暂存区的时候(还没执行git add .),我们可以通过git diff 文件名查看文件前后添加了那些内容,这是查看工作区和暂存区的差异
  • 当我们修改的文件已经提交到暂存区的时候(还没执行git commit .),我们需要通过git diff --cashed查看文件前后添加了那些内容,这个是查看暂存区和本地仓库的差异
  • 当我们将修改的文件提交到本地服务器的时候(还没执行git push),我们需要通过git diff master origin/master查看差异,这是本地仓库和远程仓库之间的比较

    git的4个阶段的撤销更改

  • 在工作区修改了东西还没有执行git add .,这时候我们的修改还没有提交到暂存区,可以通过git checkout .git reset --hard进行撤销操作
  • 如果已经执行了git add .,未执行git commit,那么这时候可以通过git resetgit checkout .git reset --hard进行撤销操作
  • 如果已经执行了git commit,未执行git push,那么需要执行git reset --hard origin/master,意思就是本地仓库被污染了,那么我就从远程仓库把老的代码取回来
  • 如果执行git push,那么需要通过执行git reset --hard HEAD^,在强制push到远程仓库就好了git push -f

    查看日志

    有时候提交代码的commit的信息丢失,需要找到commit的SHA,然后创建一个指定他的分支,因为.git/log文件会每次都记录提交的信息,我们可以通过git relog来查看提交的日志信息,如果想要更详细的日志信息,那可以通过执行git log -g,确定好丢失好的commit后,就可以在这个commit上创建一个新分支将其回复过来,git branch newBranch ab1afef后面这一串字符是日志记录中的hash值,我们只要取得前面几个字符就可以了,如果过在.git/log找不到丢失的commit信息后,那可以通过执行git fsck --full该命令会检查仓库的完整性,会显示所有未被其他对象引用的所有对象git fsck --full

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器