刘嵩的小站 神様は乗り越えられる試練しか与えない。

Git 使用经验积累

2017-07-31

github怎么提交回退旧版本代码并更改后的文件到主分支上。

提交后回退

如果提交一个版本,并且push到了github上,但是发现错了,想退回来。这个时候使用git reset 在修改之后在提交的时候会提示有,需要git pull来更新到最新的版本然后合并,但是问题是,这么做就没有办法改正了,因为就又回到了刚才错误的版本了。

这个时候有一个办法,这样解决:

假设只有你一个人拥有 master branch 的更改权限。

那么当执行 git reset --hard 之后,历史纪录是不能跟远程的记录直接合并的。因此才会有这个报错。

举个例子,远程是 A -> B -> C -> D,你 git reset --hard 之后是 A -> B。这时候除非远程那边抹掉 C 和 D,否则是不能合并的。

因此,这时候,你应该使用 git push origin master --force 来强行覆盖远程记录。

请不要根据提示使用 git pull。否则,你的本地又会变成 A -> B -> C -> D。因为 git pull 相当于 git fetch + git merge

这种方法的思路就是,把本地的旧版本的修改直接push到远端,强行把远端的文件覆盖。

还有一种方法是使用git revert:

G1 - G2 - G3 - B1 - B2 - B3
           \    \    \    \-- HEAD
           \    \    \------- HEAD~1
           \    \------------ HEAD~2
           \----------------- HEAD~3

一般命令是这样的:

git revert HEAD~x..HEAD

这里面,HEAD~x,就表示要回到的版本。其实他的意思的是,把从HEAD~x到HEAD的这几个更改返回去(不包含开始,包含结束)。注意,两个HEAD中间是两个英文句点。

想在git目录中屏蔽一些东西可以使用.gitignore文件

但是有的时候真的添加了这个文件,仍然不生效,这个时候就需要清空缓存然后重新添加,具体地:

git rm -r –cached .

之后在添加,提交,推送到github上面。

当git提示ssh-key too open 的时候,不能连接代码仓库的时候,只需要把.ssh里的文件权限改成700就行了,应该是文件在拷贝的时候权限变动了


相似文章

上一篇 北京逛吃计划

内容导航