2016-05-23 152 views
0

我有点混淆了以前曾与svn工作过的git。Git rebasing分支

我从主枝拉,创建了我的特性分支,在它的工作,并将致力于在本地我的变化,被推到远程,然后再提交我的分支詹金斯并通过了所有测试。

同时主枝已经改变,所以我已签出的发展,拉动了最新更改,然后重订我的分支对发展的最新副本。

因此,这意味着我的单元测试和集成测试撞上了我的代码的最新副本,而不是发展的最新副本。

我想我现在可以将chanegs再次推送到我的远程分支,给它最新的开发变化,然后重新运行我的测试,但git状态表示没有任何提交,并且我的工作目录很干净。

为什么我的分公司不承认有变化发展,我可能要推到重新运行我的测试反对?

+0

“我认为我现在能够在chanegs再次推到我的远程分支给它发展的最新变化,然后重新运行我的测试,但它说没有什么承诺,而我的工作目录是干净的。 “ - 这听起来很可疑。要推送更改,请使用'git push'。没有什么要提交的消息来自'git commit'。看来你使用了错误的命令。 –

+0

那么我跑git状态,看看是否包含更改 – berimbolo

+0

你需要设置你的分支来跟踪你正在推送的远程分支'git status'来打印你的本地分支和远程分支。这样做的一种方式是运行'git push -u -f',这会同时推送您的更改并为您设置远程跟踪。 –

回答

2

rebase完全重写您的更改,将以前的提交替换为新提交。所以你没有什么新的提交(因为你的旧提交已经改变),但是你应该能够再次将它们推送到你的CI系统。

请注意,您可能需要强制推动使用git push --force以取代你的分支已经被推那里。不要在功能分支之外这么做,而只是想让您的CI与之相违背,否则会给其他团队成员带来问题。

+0

为什么分支上的git状态显示已经添加到现在在我的分支中的变化? – berimbolo

+0

'git status'显示最新的头部,临时区域和工作目录之间的差异,实际上差不多与'svn status'一样。它不会向您显示任何已经提交给您的分支的信息。 –

+0

好的,谢谢,所以我想现在我唯一的问题是我是否需要再次推动我的分支并重新运行jenkins测试以防止最新的代码? – berimbolo