首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git -由于在线编辑而领先于主人

Git -由于在线编辑而领先于主人
EN

Stack Overflow用户
提问于 2015-03-30 19:07:41
回答 2查看 112关注 0票数 1

我正在使用git作为我的VCS,我正在把我的本地代表推到BitBucket。

我是一个人在这个项目上醒来,但我做了一个错误,我编辑了一个文件(在readme.md上只更改了几行)从BitBucket的网站。

然后,我忘了把更改拉到我的本地代表,我只是不断地添加更多的代码,所以现在我不能推动我的最后一个提交,因为我是一个提交(在线readme.md更改)领先。我担心如果我现在做git pull,我会删除我所有的新代码。

有什么我能做的吗?(我一点也不介意在在线提交过程中进行的所有更改,实际上,只要去掉它就好了。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-30 20:30:42

事实上,摆脱它就太好了

Push有一个--force选项可以这样做,您在master中得到的历史记录不包括提交,所以(a) git需要额外的提示,(b)既然将同步推上了refs,上游的master历史也不会。请注意,提交实际上仍然在您的上游回购,只是主人不再引用它。如果回购中没有其他任何东西提到它,git最终会在那里垃圾收集,但至少在默认情况下不会在30天内收集。

我担心如果我现在做git拉,我会删除我所有的新代码

那是不行的。如果没有(由一个和所有的人推荐的) --rebase选项,pull将执行一个记录的合并,其中两个提示被列为合并提交的父级。对于对任何人来说没有管理意义的事情,通常最好不要去记录合并。

如果您从分支点开始的历史要比另一个分支的历史长得多(在这里,另一个回购分支只有一个发散提交),那么值得考虑的是是否只获取上游提交并选择它们。

代码语言:javascript
复制
git fetch origin
git cherry-pick origin/master      # if you know for sure it's just the one commit
# or
git cherry-pick origin/master@{1}..origin/master    # to get however many new ones

这将在您的历史记录之上应用所选提交中的更改,而不是将您历史中的更改应用于它们之上。结果的内容是相同的,并且您的master直接引用了这一点。

票数 0
EN

Stack Overflow用户

发布于 2015-03-30 19:10:28

保持在线提交和推动本地提交的最简单方法是:

代码语言:javascript
复制
git pull --rebase

这将在更新的origin/master之上重放本地提交。

然后,您将能够正常推动:git push

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29354244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档