关于github中local与remote不能同步的问题

今天遇到local的修改没有commit就直接同步remote,结果local修改完毕commit后再publish,提示出错。原因是,存在remote的commit与local的commit的head不同,看了网上的答案,最后,我将remote的head建立一个分支,再合并到本地的head中,再提交,结果成功。
提示:合并前,一定要把本地的修改commit一次!

强制推送:

git push git@github.com:username/XXX.git +master


git push origin +master

这个有大大的副作用,因为是强制推送。如果存在local与remote文件冲突,则local修改将强制覆盖remote修改。
推荐使用rebase,若有pull/push冲突将会提示你对比代码再手动修改!

如果是本地的其它分支推送到master,则可以使用:

$ git push origin test:master // 提交本地test分支作为远程的master分支
$ git push origin test:test // 提交本地test分支作为远程的test分支

注意,删除远程分支也是使用相同的命令,例如:如果:左边的分支为空,那么将删除:右边的远程的分支。
$ git push origin :test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

一次痛苦的折腾:
remote的master混乱,决定将其删除,再由本地上传一份合格的分支
#从remote fetch指定分支内容,本地没有develop,fetch会帮忙建立
git fetch origin master:develop
#切换到develop新分支
git checkout develop
#硬删除下载后的最新一个commit
git reset --hard HEAD^
#向前推一个commit后,又提示本地还有没有commit的内容,因为这些更改没有用,因此不再记录这些修改
git checkout -- .
git reset --hard
#!important 清理仓库,-fd,清理没有被git跟踪(没有特别指定add或配置文件指定不track)的文件和目录!小心使用!!!
git clean -f -d
#衍合temp,解决冲突(这里有一大串冲突内容)
git rebase develop temp
#指针快进
git checkout develop
git merge temp
#好了,现在develop是最新的分支,远程的master已经混乱了,我要把它删除掉,但在这之前先在remote 建立一个develop
git push origin -f develop:develop
#问题出现(其实之前的步骤多多少少出现了问题),可以连接到github,也可以解压和上传,消耗一大把时间过后,
#提示:the remote end hung up unexpectedly。在stachoverflow查询过后发觉是ssh的问题(因为我两部电脑共用一个帐号),
#经过一翻无效折腾,决定重新生成一个新的ssh key,参考https://github.com/settings/ssh页面,
#提示:powershell提示输入的密码是不会用*代替的,也不会有任何屏幕显示,尽管放心输入,它会记录你两次的输入是否相同
#再次push(最好使用先pull再push),这样的快进提交可以保证多人合作的提交不会覆盖,(相反,使用-f则为强制覆盖远程),
#HEAD指代本分支
git push origin -f HEAD:develop
#在github上将develop设了默认分支,然后删除master
git push origin :master
#将本地改好的master上传
git push origin -f master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值