我正在使用bitbucket并且使用git的rebase功能遇到了问题。简而言之,我需要重新应用每次改变时已应用的更改。我已使用以下步骤重新创建了该问题。它是一个简化版本但结果是一样的。
contributors.txt
,提交和推送。现在master
有一个master
文件。该文件的内容是
contributors.txt
Developer A
创建branch-a
。master
创建branch-b
。master
中,因此看起来像。
branch-a
Developer A
Developer A2
中附加贡献者文件,所以看起来像
branch-b
Developer A
Developer B
branch-a
。branch-b
与branch-a
合并。master
并执行branch-b
git rebase master
Developer A
Developer A2
Developer B
添加已修复的冲突并运行git add
。一切顺利。git rebase --continue
,因为现在本地和远程branch-b
已经分歧,他们需要合并。 (需要在拉动之前设置上游)branch-b
具有来自master的更改,可以推送到远程。branch-b
推送到远程。使用branch-b
。一切顺利。git push origin branch-b
中创建一个新文件并提交。branch-b
git checkout master
(掌握是最新的,因为它自上次拉动后没有改变,即步骤9)git pull
git checkout branch-b
git rebase master
时,git要求开发人员B再次解决相同的冲突。为什么会这样?是否应该知道已经应用的更改并且不要求再次应用?我想我可以使用merge而不是rebase来克服这个问题。但似乎我错误地使用了rebase。请让我知道我做错了什么
答案 0 :(得分:2)
在步骤13之后,您应该可以执行branch-b
。这会将已发布的版本推送到您的遥控器a = c("people/NN + is/VB",
"no/AJ + one/NC + can/VA",
"certain/AJ + man/NN + is/VB",
"every/AJ + one/NC + is/VB")
library(stringr)
word_N <- str_match(a, "([a-zA-Z]+)/[N][a-zA-Z]*\\s*\\+\\s*is/VB")[,2]
word_N[!is.na(word_N)]
#[1] "people" "man" "one"
,并且由于它已经在主服务器上重新定位,因此您应该能够毫无问题地与主服务器合并。
上一个方法的问题是,在master之上进行rebase之后,你只需要将merge to commit添加到origin / branch-b,而这个提交尚未在master上重新设置,因此它仍然存在分歧。如果你进行强制推送,那么它只是用你的重新分支替换远程分支。