Git的平常使用

Git学习总结html

       最近由于在使用Git的过程当中老是会遇到须要合并分支或者解决冲突的状况,并且使用可视化工具的时候老是会有些不直观。因此花了一些时间研究了一下Git的使用。git

       详细的问题请上Git的官网看文档吧https://git-scm.com/book/zh/v2,真心写的很棒。我这里只是记录一下我的对Git的感觉以及本身一些经常使用命令github

       首先须要了解的是Git中的三个工做区域(Git仓库、工做目录、暂存区域)。工具

     a) Git仓库。咱们须要区分的是远程仓库和本地仓库。他们通常都是不一样的。咱们经常使用了git pull、git push、git fetch其实都是在远程仓库和本地仓库之间进行同步。学习

      git pull至关于git fetch和git merge的和。测试

     b) 工做目录。这里其实就是指你进行了修改可是尚未git add的文件。fetch

     c) 暂存区域。他的意思实际上是当你下一次提交(git commit)的时候会提交暂存区域内的修改到本地仓库。经过git add将修改添加到暂存区域中来。spa

 

  如今再来针对单个文件,文件有三种状态。已修改(modified)、已暂存(staged)、提交(commited)。分别对应上述的操做。还有已跟踪和未跟踪,这个关系不大。htm

 

       接下来进入正题。Git之因此很快流行起来的缘由,很大程度上是由于它可以很方便的合并分支。若是对Git中的分支开发工做流不清楚的,强烈建议去看一下https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E6%B5%81。这里假设你已经建立了与远程仓库分支对应的跟踪分支。开发

                           

          合并分支:例如我要将A分支合并到B分支看成

              1. 切换到B分支下。git checkout B

              2. 更新当前分支。git fetch。有时候会须要加上<name> <branch>

              3. 若是有冲突的话合并冲突(这个以后在讲)。git merge

              4. 合并分支。git merge A。

              5. 若是有冲突的话再解决冲突。

 

  冲突其实能够稍微的分为两种。一种是Git能够自动帮咱们搞定的冲突,好比说虽然是在同一个文件,可是不是在同一个位置的修改。还有一种是须要咱们本身判断解决的冲突。

                         第一种:

                                   咱们在git merge的以后,会碰到出现给文件命名的状况。以前 一直不理解,其实这里是说这个解决的冲突重新commit的说明。

                         第二种:

      •    1.   git status 查看未合并的冲突文件
    •       2.  进入文件,你会看到
        •     <<<<<<< HEAD:index.html
        •     <div id="footer">contact : email.support@github.com</div>
        •     =======
        •     <div id="footer">
        •      please contact us at support@github.com
        •     </div>
        •     >>>>>>> iss53:index.html
        • 你能够从新编辑这一段成为你想要的样子。HEAD指的是你当前的分支。
      •     3. 使用git add将冲突标记未已解决。
      •     4. git commit。提交到本地仓库。

          Note:git add的时候并不会去判断你到底有没有去解决,也就是说哪怕你什么都没干,直接git add 也是能够的,若是你不想被同事打的话。

 

2018/07/03:

   补上团队协做的部分。

   其实内容在git的官方文档里面都有。

   通常来讲咱们协做的话能够简单的分为两种模式。

     一是:做为开发者对dev分支都有写权限,当你完成工做以后直接解决冲突推送到远程仓库。这种方式感受比较适合参与人数比较少的项目,或者说没有那么多代码管理的项目,每一个人对本身的代码负责。

     二是:dev分支是被保护的,除了管理员以外其余人只有读的权限(通常开源项目也是这个样子)。这个时候若是你要参与开发,贡献本身的代码,你须要先fork项目到本身的仓库。这个时候你能够将你的代码推送到本身的远端仓库,而后发出一个pull request请求管理员来拉你的分支。若是能够自动合并的话是能够在网页上合并。

   不过通常的流程是管理员pull到本地,测试、审视以后再递交到远端仓库。这种方式可能比较适合对产品有较高要求,团队比较完善的公司。

相关文章
相关标签/搜索