Git-diff/branch/GithubLog £神魔★判官ぃ 2021-10-01 01:20 269阅读 0赞 **1.1比较文件的差异** * git diff \[文件名\] 作用:将工作区中的文件与暂存区中的进行比较 * git diff \[本地库中的历史版本\] ·\[文件名\] 作用:将工作区的文件和本地库中的文件记录比较 * 不带文件名比较多个文件 **2.1分支概念** 分支branch,一开始对git初始化的时候,存在一个主干分支master,这是项目的主干分支,往后所有分支都要围绕着master主干分支,对master主干分支进行升级、完善。主分支可以建立多个(feature\_\[项目名\])小分支,在线修复BUG-hot\_fix分支。 好处: 1. 同时并行推进多个功能的开发,提高开发效率,也就是说各个分支项目无需相互等待无顺序。 2. 各个分支之间是相互独立的,如果一个分支开发失败则不影响其他分支的进程,失败的重新开始即可。 master主干分支:Wechat ![在这里插入图片描述][20190811095029475.png] **2.2分支的操作** * 查看所有分支:$git branch -v ![在这里插入图片描述][20190811095149675.png] * 新建分支:$git branch \[分支名\] 星号代表当前所在分支! * ![在这里插入图片描述][20190811095430683.png] * 切换分支:$git checkout \[已有分支名\] 当前星号在hot\_fix分支上 ![在这里插入图片描述][20190811095658875.png] * 合并分支:$git merge \[已修改的分支名\] 注意是要切换到需要接受修改的分支上,再执行merge命令。 * 分支冲突 当两个分支的内容都发生改变提交,git就不能确定使用哪一个 ![在这里插入图片描述][20190811105722779.png] 此时要通过人工来解决冲突,选取最优方案。首先编辑文件,再删除特殊符号。 然后在add如暂存区,commit提交到本地库,注意当使用commit时,后面不能有文件名, 否则出现错误:fatal: cannot do a partial commit during a merge. ![在这里插入图片描述][20190811112721770.png] **3.1. 远程库与本地库** 在github中创建远程库 ![在这里插入图片描述][20190811200515811.png] 远程库的地址就是如图所示:[https://github.com/zhangtao-g/huashan.git][https_github.com_zhangtao-g_huashan.git] * 在Git上查看远程库:git remote -v * 在Git上创建远程库的别名:git remote add \[别名\] \[地址\] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70] * 将本地路master中的文件push到远程库的master中 git push \[地址别名\] \[分支名\] ![在这里插入图片描述][20190811202153328.png] **3.2克隆** 非本地库管理者的开发者开发此项目,要先创建一个工作空间,再从管理者的远程库中克隆项目到此处 $git clone [https://github.com/zhangtao-g/huashan.git][https_github.com_zhangtao-g_huashan.git] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 1] 然后在新建的工作区中就有在Github中的项目文件夹了 ![在这里插入图片描述][20190811215032562.png] 克隆后效果:将完整的远程库下载到本地,创建远程地址别名,初始化本地库。 **3.3pull=fetch&merge** * 克隆后新的开发人员就能协同开发此项目,此开发人员在自己的工作区中打开此项目,进行开发。开发完毕后add/commit进行添加提交,如果此时此开发人员push到项目管理员远程库不会成功,因为项目管理员还没有邀请你共同协作此项目,邀请后,开发人员登陆GitHub账号,后进行 git push origin master。 此时项目管理员远程库的项目中就会有此开发人员的修改。 * 再进入项目管理员的本地库中,项目还是管理员自己写内容,开发人员修改的内容并没有。 * 通过命令:$git fetch \[项目别名\] \[分支名\] 从远程库中抓取下来。可以发现没有开发人做的修改,fetch只是将远程库中的文件下载到本地,并没有更改本地工作区的文件的内容。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 2] * 查看下载的文件的内容,首先切换远程master分支,$git checkout \[远程库地址别名\]/\[远程库分支名\],后可以查看。 * 查看没有问题后再merge,返回本地的master分支, g i t c h e c k o u t m a s t e r , 合 并 git checkout master,合并 gitcheckoutmaster,合并git merge \[远程库地址别名\]/\[远程库分支名\],就能再本地工作区中查看开发人push的内容了! ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 3] 总而言之:pull可以完成上述fetch与merge的所有操作。 $git pull \[远程库地址别名\] \[分支\] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 4] 3.4. 协同开发时冲突的解决 当两个人协同开发时,先后修改项目的同一个地方时,会发生push冲突,后修改提交的开发人员,通过push不能推送到远程库中,推送时会发生以下错误。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 5] ![在这里插入图片描述][20190812171647517.png] 解决方案: * 后提交的开发者先从远程库中下载到本地, $git pull \[远程库地址别名\] \[分支名\] * ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 6] * 然后再打开文件,将特殊标记行删除,然后通过协商,确定文件的最终修改方案,再添加/提交/push就OK了。 * 注意提交的时候,后面不用再加文件名!!!! * ![在这里插入图片描述][2019081219334149.png] * ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 7] * ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 8] * ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 9] 总结: * 如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取。 * 拉取下来如果进入冲突区,按照解决“分支冲突”的办法解决即可。 这个问题是因为远程库与本地库不一致造成的,那么我们把远程库同步到本地库就可以了。 使用指令 git pull --rebase origin master 这条指令的意思是把远程库中的更新合并到本地库中,–rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 10] [20190811095029475.png]: /images/20210923/4cc842a65d604acda2ddb8c68ff9e79f.png [20190811095149675.png]: /images/20210923/2871fa45750441f490129c610a912db8.png [20190811095430683.png]: /images/20210923/541097224a704d338cd2abfbd070df2a.png [20190811095658875.png]: /images/20210923/fe8e51e7c5744fd18c3d3c1eb5e86061.png [20190811105722779.png]: /images/20210923/0c01dc524f9143ac85f71b95911e50de.png [20190811112721770.png]: /images/20210923/5bcde52940d54659af76076be760245e.png [20190811200515811.png]: /images/20210923/098afc095f7d4e2ca728c5f311ac73e5.png [https_github.com_zhangtao-g_huashan.git]: https://github.com/zhangtao-g/huashan.git [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70]: /images/20210923/8380c90a22944c38837b38cac46d6065.png [20190811202153328.png]: /images/20210923/945d9bd88090475ca985693e9360224a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 1]: /images/20210923/a140d97ac5fd4edeafe3ea40725d454d.png [20190811215032562.png]: /images/20210923/2d4aaa3342cf4f2b82238e5783544460.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 2]: /images/20210923/d846b531f1d949d19d88caf54620a981.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 3]: /images/20210923/e0471369286041c8a7eb4f4c195483d3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 4]: /images/20210923/b9c6f1af66ec4674b2b6362597d77801.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 5]: /images/20210923/9eeb35b623fe4e82bfec9e3713dcb059.png [20190812171647517.png]: /images/20210923/48d042cff6d242c4aa9a73d31e2e3fee.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 6]: /images/20210923/a39d991224d241c9a9415c52e1bd9afa.png [2019081219334149.png]: /images/20210923/3d285ebf989c4708aefaa579aa082afb.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 7]: /images/20210923/dfc5d57b1a374c82a8f6d94bedf53854.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 8]: /images/20210923/a454f52ef6024661ae97754ea121b639.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 9]: /images/20210923/8d2e78b18e9e40d685effa81abd2dcc7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTUwNDQ3_size_16_color_FFFFFF_t_70 10]: /images/20210923/e25c5b2f284d4c7c8be3cbe25a6c8019.png
还没有评论,来说两句吧...