Git提交然后从master中拉入分支。放松一切?

时间:2016-10-16 10:18:46

标签: ruby-on-rails git

我正在使用与主分支上的一个完全不同的结构,在本地分支的On Rails应用程序上。我正在推荐所有内容,然后将我的更改推送到远程分支。在将来的某个时刻,我想将我的更改集成到master中,但是我想先将它变成master,所以我不会支持它,只需要提交n。如果我正在做

git pull origin master

进入我的分支然后推送它,我会从之前的提交中丢失任何内容,还是那些保留在主分支之上?从理论上讲,我应该能够合并我的分支,因为我只会领先于大师,但我不完全确定git是如何工作的

3 个答案:

答案 0 :(得分:0)

当您执行PULL时,您不会丢失数据,但是您将遇到需要修复的合并问题。

虽然从技术上讲你可以不拉(带--force标志),但你不应该这样做,因为它会丢弃其他人的工作。首先拉动他们的变化,解决冲突,然后才能推动。

一些建议,尽量使你的工作单位小,就像不要花太多时间远离主人,特别是如果主人经常更新。原因是你将很难合并。

答案 1 :(得分:0)

永远不要在主分支上做大量工作。你真正在主分支上工作的唯一一次是当你合并时,或者你是一个项目中唯一的程序员(即使那时它是有问题的)。

处理功能或处理您希望在单独分支上工作的错误时。

例如,当我从产品跟踪器中提出问题时,我会根据问题的名称创建一个主题分支:

git checkout -b 136-fix-something-important

如果在主题分支上的工作需要很长时间,您可以通过将更改拉入主分支并将主题分支rebasing从主分支中移除来跟上远程数据。

git status # make sure you have a clean slate otherwise stash or commit
git checkout master
git pull
git checkout 136-fix-something-important
git rebase master 

如果没有冲突或者您必须解决冲突,这将快进136-fix-something-important。但是,在大型合并之后的早期,最好先处理好冲突。

当您完成主题分支中的功能时,您要么合并它(如果您是维护者),要么发送拉取请求(如果您是贡献者)。

那我现在该怎么办?

将您的工作移至单独的分支。并从origin / master重置本地主分支:

git branch mybranchname
git reset --hard origin/master
git checkout mybranchname

你可以在mybranchname离开主人。

git rebase master

答案 2 :(得分:0)

其他答案没有错,但推送到远程分支,从远程主服务器拉到本地主服务器,然后本地将主服务器合并到您的本地功能分支中是最干净的。

然后,您的更改不会丢失,合并冲突可以轻松解决,并且您不会使用rebase重写任何其他潜在的协作历史记录。