git版本控制,删除git仓库的某些文件并且之后不再该类型提交,放弃工作区修改,放弃暂存区,回退本地版本库,解决冲突

git rm

git rm
git rm 用于从索引中删除文件或者同时从工作区和索引中删除文件。
具体是哪种操作,看后面跟的操作选项。

git rm 与 git rm --cached 的区别
举例说明如下:
假设如有版本库如下:

在这里插入图片描述
使用 git rm text1.txt 删除 text1.txt之后,索引和本地文件都被删除了,如下图所示:在这里插入图片描述
使用git rm --cached text1.txt 把文件text1.txt从git的索引库中移除,但是对文件text1.txt本身并不进行任何操作,如下图所示。在这里插入图片描述

git rm 与 rm 的区别
git rm: 来删除文件,同时还会将这个删除操作记录下来;

rm: 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除;

提示:即使你已经通过 rm 将某个文件删除掉了,也可以再通过 git rm 命令重新将该文件从 git 的记录中删除掉。

注意:上述操作最后要执行git commit才真正提交到git仓库

删除文件夹用-r

向远程提交删除修改

git commit -m "delete"

此时远程已经删除掉了文件
ignore添加忽略文件,之后就不会提交该文件了

放弃工作区某些文件修改

放弃工作区修改,放弃暂存区
撤销工作区修改
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

撤销暂存区修改

git add到暂存区,想撤回
Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。

回退版本库

git log

  • git log:该命令显示从最近到最远的提交日志。
  • git log - -pretty=oneline:将只会显示提交的commit id号和对应的注释。(这里是两个-,Markdown显示两个-为一个-)
  • git reset –hard commit_id 或则是 git reset –hard HEAD^,使用git reset –hard 进行版本回退之后,在本地查看README.md,里面已经变为版本2对应的内容了。

reset三种模式区别
reset三种模式区别
git reset --hard 和git reset --soft的区别
reset --hard:重置stage区和工作目录:
reset --hard 会在重置 HEAD 和branch的同时,重置stage区和工作目录里的内容。当你在 reset 后面加了 --hard 参数时,你的stage区和工作目录里的内容会被完全重置为和HEAD的新位置相同的内容。换句话说,就是你的没有commit的修改会被全部擦掉。
你的 HEAD 和当前 branch 切到上一条commit 的同时,你工作目录里的新改动和已经add到stage区的新改动也一起全都消失了。

reset --soft:保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区:
reset --soft 会在重置 HEAD 和 branch 时,保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区。
reset 不加参数(mixed):保留工作目录,并清空暂存区,(与上面–soft合并commit节点差不多,只是多了git add添加到暂存区的操作

解决冲突

git stash
git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
比如下面的中间状态,通过git stash命令推送一个新的储藏,当前的工作目录就干净了
git stash
git pull
git stash pop

git Please move or remove them before you can merge

这是因为本地有修改,与云端别人提交的修改冲突,又没有merge.
如果确定使用云端的代码,最方便的解决方法是删除本地修改,可以使用以下命令:
git clean -d -fx “”
d -----删除未被添加到git的路径中的文件
f -----强制运行
x -----删除忽略文件已经对git来说不识别的文件

Updates were rejected because the tip of your current branch is behind

1.使用强制push的方法:

git push -u origin master -f

这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。

2.push前先将远程repository修改pull下来

git pull origin master

git push -u origin master

3.若不想merge远程和本地修改,可以先创建新的分支:

git branch [name]

然后push

git push -u origin [name]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值