git

作者: cf6bfeab5260 | 来源:发表于2019-04-10 09:56 被阅读0次

    原理简诉

    直接上图


    2429e4d2661e60027537aea0077f6e40.png

    这个图很清楚地表明了git提交的整个过程:

    1. 开发者在工作区(本机)编辑代码,通过add命令提交到了暂存区(本机)。
    2. 通过commit命令提交到了版本库(本地)。
    3. 通过push命令提交到了远程仓库(远程)。

    那这里本地的三个区对应了git三个术语:
    工作区 - Working Copy
    暂存区 - Index(stage area)
    本地版本库 - HEAD

    常见操作

    • 从远程仓库拉代码:git clone 仓库代码URL
    • 查看状态:git status
    • 查看日志:git log
    • 添加修改到暂存区:git add
    • 添加修改到本地版本库:git commit
    • 添加修改到远程仓库: git push
    • 比较差异:git diff(工作区 vs 暂存区)、git diff head(工作区 vs 版本库)、git diff --cached (暂存区 vs 版本库)
    • 重置(已经commit了):git reset,这个命令的本质是把HEAD重新指向一个指定的commit。那Working Copy和Index有什么影响呢? 这个由后面跟的参数决定:
      1. git reset --mixed:这个是默认参数。会把Index也重置到和HEAD一样,但Working Copy保持不变。也就是说你执行这个命令后,就可以把你回滚的部分,重新修改然后 add --> commit。
      2. git reset --soft: Index和Working Copy都不会变。也就是只是把你的commit操作回滚了。add操作没有回滚。
      3. git reset --hard:Index和Working Copy都会跟着变化。这个操作需要特别慎重,因为它会丢掉你回滚的代码,只有当你非常确定中间提交的那部分代码没用了的时候才用得到。
    • 重置(已经add但是没有commit):git checkout 文件名
    • 重置(已经push了): 通过git log找到需要回滚到的版本号,通过git reset –-soft 版本号 将本地commit回滚回去。 通过 git push 分支名 –-force 强制提交当前版本到远程仓库。
    • 切换分支:git checkout 分支名

    相关文章

      网友评论

          本文标题:git

          本文链接:https://www.haomeiwen.com/subject/arugiqtx.html