<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 公布!