我正在使用与主分支上的一个完全不同的结构,在本地分支的On Rails应用程序上。我正在推荐所有内容,然后将我的更改推送到远程分支。在将来的某个时刻,我想将我的更改集成到master中,但是我想先将它变成master,所以我不会支持它,只需要提交n。如果我正在做
git pull origin master
进入我的分支然后推送它,我会从之前的提交中丢失任何内容,还是那些保留在主分支之上?从理论上讲,我应该能够合并我的分支,因为我只会领先于大师,但我不完全确定git是如何工作的
答案 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重写任何其他潜在的协作历史记录。