当前位置: 首页 > 后端技术 > Java

Git的五个常见问题及解决方法

时间:2023-04-01 19:17:28 Java

1.删除远程仓库上被忽略的文件由于种种原因,一些本应被忽略的文件被误提交到远程仓库。那么我们如何删除这些文件呢?以错误提交的.idea目录为例,我们可以通过以下步骤进行处理:1)首先清除暂存区中的.idea文件,执行命令#-r表示删除的文件orfolder--cachedonlycleared暂存区不清除工作区的gitrm-r--cached.idea2).gitignore文件中,添加需要忽略的文件。提交.idea后,.idea相关文件将被删除。gitcommit-m'提交信息'gitpushgitrm和gitrm的区别--cachedgitrm:同时从工作区和暂存区删除文件。即本地文件也被删除。gitrm--cached:从暂存区删除文件。但是本地文件还是存在的,只是不想让这个文件被版本控制。上面的.idea文件在我自己的工作区中显然是不能删除的,只能在暂存区删除,所以我需要添加--cached如图2所示。代码开发一半有新任务了。当您在Barabara中开发某个需求时,有时您只完成了一半。这时候你又接到了一个需求,急需开发,可以先把之前的需求搁置一旁。你不想gitcommit到版本库,也就是说工作区或者暂存区有一些代码你不想提交到版本库。这个时候怎么办?你可以使用gitstash命令来解决这个问题。1)首先将工作区和暂存区的修改存入栈中。#-u表示在工作区中存储新文件。如果不加u,则只会存储工作区中已有文件的修改。gitstashsave-u"需求a只完成了一半。"这样,工作区和临时存放区就干净了。我们还可以查看堆栈中的存储列表。(由于我们只将gitstash存储了一次,所以栈中只有一个stash)$gitstashliststash@{0}:Onmain:需求a只完成了一半,可以查看stash中存储了什么gitstashshow2)然后,可以先在当前dev分支完成需求b。如果已经开发了需求b,则将其提交到存储库。gitadd.gitcommit-m"Requirementbhasbeencompleted"#推送到远程dev分支gitpushorigindev3)最后我们将栈中的stash弹出并应用到当前工作空间gitstashpop继续完成未完成的要求完成的工作。如果需求a也已完成,则将其也提交到存储库。gitadd.gitcommit-m"Requirementaisalsocompleted"#推送到远程dev分支gitpushorigindev就大功告成了。3.gitpullcodeconflict当你提交代码的时候,当你想先拉取代码时,发现$gitpullerror:Yourlocalchangestothefollowingfileswouldbeoverwrittenbymerge:src/main/java/com/open/demo/beans/AppReqParmVO.javaPleasecommityourchangesorstashthembeforeyoumerge.Aborting很明显你在本地修改的代码和别人修改提交的代码有冲突。AppReqParmVO.java文件有告诉你如何解决?1)先将本地代码存入gitstash2)然后拉取远程代码$gitpullUpdating5b82c67..3d844c3Fast-forwardsrc/main/java/com/open/demo/beans/AppReqParmVO.java|2+-1filechanged,1insertion(+),1deletion(-)发现没有报错,可以正常拉取。3)最后释放本地存储的代码$gitstashpopAuto-mergingsrc/main/java/com/open/demo/beans/AppReqParmVO.javaCONFLICT(内容):Mergeconflictinsrc/main/java/com/open/demo/beans/AppReqParmVO.java发布了,这里也告诉你有冲突,然后手动解决冲突,就可以正常提交了。4.合并分支冲突上面的问题是从同一个分支拉取代码导致的冲突,这里是合并两个分支时的冲突。比如现在有两个分店。你在dev修改了一个文件提交成功,master分支也修改了同一个文件提交成功。这时候你把dev合并到master的时候,发现合并不了了。冲突,这种问题在实际开发中是比较常见的。这里冲突发生在dev合并到master1),从dev切到master分支gitcheckoutmaster2),mergedevgitmergedev如果有冲突,会告诉你哪些文件冲突$gitmergedevAuto-mergingsrc/main/java/com/open/demo/beans/AppReqParmVO.javaCONFLICT(内容):src/main/java/com/open/demo/beans/AppReqParmVO.javaAutomatic合并失败中的合并冲突;修复冲突然后提交结果。那么你只要找到当前的冲突文件,解决冲突即可。<<<<<<>>>>>>>Dev修改并重新提交。5.master修改代码,推送给dev。你在master中修改代码,但是需要把修改后的代码push到dev远程分支1),在master上gitadd。gitcommit-m"本次提交说明"2)、切换到dev分支gitcheckoutdev3)、mergemastergitmergemaster4)、push到主仓库gitpush如果dev分支提交的代码需要添加和又犯了声明:公众号本文转载请至文首。声明是去公众号:BackendMetaverse。尊重作者的辛勤劳动成果。同时也可以向我索要文章的markdown原稿和原图。其他情况严禁转载!本文由博客多发平台OpenWrite发布!