git 坑

299 阅读3分钟

【git add忽略某个文件】 先添加所有文件,再排除某个文件

git add -u
git reset -- static/js/dashboard.js

【删除远程文件】 对于一个已经在远程仓库中存在的文件,本地ignore文件加上该文件上传之后是不会删除成功的

添加文件到远程仓库

1.在根目录下新建一个text文件,文件里添加内容

测试ignore

2.将工作区全部文件添加到缓冲区

git add .

3.将缓冲区文件添加到本地仓库

git commit -m "将测试文件上传到远程仓库”

4.将本地仓库内容上传到远程仓库

git push

查看远程仓库,测试文件已经上传成功

ignore文件添加文件名

1.在ignore文件中添加忽略文件

nohup.out
opbin/log
runtime
vendor
composer.lock
/report
.idea
.DS_Store
bart

2.提交到缓冲区

git add .

解释:这个时候缓冲区是存在bart文件的,ignore文件只会阻止这次将bart文件加到缓冲区,但是缓冲区之前已经有bart文件,并不会删除

3.缓冲区提交到本地仓库

git commit -m "ignore 添加bart"

4.本地仓库上传到远程仓库

git push

远程仓库还是会有bart文件

解决方法

1.先把缓冲区清理干净,里面的文件全都删除掉

git rm -r --cached .

可以看到删除文件中包含bart文件,也就是此时缓冲区已经没有bart文件

2.把所有文件添加到缓冲区

git add .

这里工作区有bart文件,但是ignore文件阻止了bart文件添加到缓冲区,缓冲区没有bart文件

3.缓冲区添加到本地仓库

git commit -m "清理缓冲区后上传文件"

4.本地仓库文件上传

git push

这个时候远程仓库就没有bart文件了

上面操作适用于在本地工作区不想删除文件,只是不想上传到远程仓库,如果想要从工作区就删除这个文件,可以直接本地删除,然后提交到缓冲区,一路上传即可

附注:

或者从第一步就直接把文件从缓冲区删除掉

git rm --cached bart/internal/dao/repository/mongodb/技术文档.md

然后commit ,push即可

【合并到master分支有冲突】

提示

The source branch is 45 commits behind the target branch

说明当前分支从master分出来后,有人在master分支提交了新的代码

解决方法:

//本地切换到master分支
git checkout master
//git pull 远程最新代码到本地
git pull
//再切换到自己分支
git checkout dev
//合并master分支
git merge master
//这个时候会有冲突,git  diff查看哪里有冲突,IDE也会标红有冲突的地方
git diff

【本地和远程分支分散】

远程和本地的父commit是一样的,但是两个commit是不在一条线上的,可能是有人merge到了远程,本地同时也commit了导致的,这个时候需要rebase 把远程的最新commit合并 image.png

解决:

git pull --rebase

本地 git log --oneline 就会看到远程的commit已经合并进来了