<img src="http://www.image.jincou.com/9d8c6147fd11459bb598833a27576030" width="600" height="354">
一、删除近程仓库上被疏忽的文件
因为种种原因,一些本应该被疏忽的文件被咱们误操作提交到了近程仓库了。那么咱们该怎么删除这些文件呢?
以误提交了.idea目录为例,咱们能够通过上面的步骤解决:
1)咱们首先应该革除暂存区的.idea文件,执行命令
# -r代表删除的是文件或者文件夹 --cached 只革除暂存区不革除工作区的git rm -r --cached .idea
2)在 .gitignore 文件,增加须要疏忽的文件。
.idea
之后在提交,就会删除.idea相干文件
git commit -m '提交信息'git push
git rm 与 git rm --cached 的区别
git rm
: 同时从工作区和暂存区删除文件。即本地的文件也被删除了。
git rm --cached
: 从暂存区删除文件。然而本地文件还存在,只是不心愿这个文件被版本控制。
下面的 .idea文件 显然我本人工作区是不能删除的,只能删除暂存区,所以须要加上 --cached
如图
<img src="http://www.image.jincou.com/b6ad296935d249148411c6e123971e50" width="400" height="438">
二、代码开发一半,有新工作了
当你正在巴拉巴拉开发某个需要的时候,你只实现了一半。这时,你又接到了另外一个需要,急需进行开发,之前那个需要能够先放一放。你又不想把它 git commit 提交到版本库,也就是说工作区或者暂存区中有一些你并不想提交到版本库的代码。
这个时候又该怎么办呢?
你就能够应用 git stash
命令来解决这个问题。
1) 首先,将工作区和暂存区中的批改,存储到堆栈。
# -u 示意还要存储工作区中新增的文件,如果不加u只会存储工作区中曾经存在的文件的批改git stash save -u "需要 a 只实现了一半"
这样,工作区和暂存区就都洁净了。
咱们也能够查看堆栈中的 stash 列表。(因为咱们只 git stash 存储了一次,故堆栈中只有一个 stash)
$ git stash liststash@{0}: On main: 需要 a 只实现了一半
也能够查看,stash中存了哪些内容
git stash show
2) 而后,就能够在以后的 dev 分支中,优先实现需要 b
如果需要 b 已开发实现,就将其提交到版本库。
git add .git commit -m "需要 b 已实现"# 推送到近程的 dev 分支git push origin dev
3) 最初,咱们将堆栈中的 stash 弹出,利用到以后的工作区
git stash pop
持续实现需要 a 中未实现的工作。如果需要 a 也实现了,也将其提交到版本库。
git add .git commit -m "需要 a 也实现"# 推送到近程的 dev 分支git push origin dev
这就功败垂成。
三、git pull代码抵触
当你提交代码的时候,想先 pull一下代码时你发现
$ git pullerror: Your local changes to the following files would be overwritten by merge: src/main/java/com/open/demo/beans/AppReqParmVO.javaPlease commit your changes or stash them before you merge.Aborting
很显著你本地批改的代码与别人批改提交的有抵触了。文件都通知你了 AppReqParmVO.java
如何解决?
1)先把本地代码存储起来
git stash
2)而后再去pull近程代码
$ git pullUpdating 5b82c67..3d844c3Fast-forward src/main/java/com/open/demo/beans/AppReqParmVO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
发现曾经不报错了,可能失常 pull下来。
3)最初再把本地存储的代码释放出来
$ git stash popAuto-merging src/main/java/com/open/demo/beans/AppReqParmVO.javaCONFLICT (content): Merge conflict in src/main/java/com/open/demo/beans/AppReqParmVO.java
释放出来,这里也通知你有抵触,而后手动解决下抵触,就能够失常提交了。
四、合并分支产生的抵触
下面的问题是同一分支,拉取代码引起的抵触,而这里是在两个分支进行合并的时候,呈现了抵触。
比方当初有两个分支,你在dev批改了一个文件后提交胜利,而master分支也改了同一个文件也提交胜利了,这个时候当你将dev合并到master的时候,你发现合并不了,呈现抵触了,这种问题理论开发中也挺常见的。
这里在dev合并到master发生冲突
1)、从dev切到master分支
git checkout master
2)、合并dev
git merge dev
如果有抵触那么就会通知你哪些文件抵触
$ git merge devAuto-merging src/main/java/com/open/demo/beans/AppReqParmVO.javaCONFLICT (content): Merge conflict in src/main/java/com/open/demo/beans/AppReqParmVO.javaAutomatic merge failed; fix conflicts and then commit the result.
那你只需找到以后抵触文件,解决抵触即可。
<<<<<<< HEAD private final long serialVersionUID = -1206184202179044275L;======= private long serialVersionUID = -1206184202179044275L;>>>>>>> dev
批改完从新提交就能够了。
五、master批改代码,推送到dev
你在master批改代码,却须要把批改后代码推送到dev近程分支上
1)、在master上
git add . git commit -m "本次提交阐明"
2)、切换到dev分支
git checkout dev
3)、合并master
git merge master
4)、推送到主仓库
git push
如果dev分支提交代码 须要从新 add 和 commit。
申明: 公众号如需转载该篇文章,那麻烦在文章的头部 申明是转至公众号: 后端元宇宙。尊重作者辛苦劳动果实嘛。同时也能够问自己要该文章markdown原稿和原图片。其它状况一律禁止转载哦!
本文由博客一文多发平台 OpenWrite 公布!