2016-05-23 208 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