2016-04-29 28 views
4

我爲自己設置了一個dotfiles repo,託管在遠程服務器上並用於不同的機器上。對於一些我想要有單獨配置的東西,例如機器之間的環境變量不同。dotit管理不同的機器與git分支合理嗎?

我想,這將是不錯的機器相依變化額外的分支,所以,比如我有樹枝servernotebookdesktop,所有基於master很少單獨改變(1至幾個提交)。 現在的問題是,我希望將這些單獨的更改應用於頂層,顯然。所以我會改變master的常見變化和rebase本地desktop分支。但使用rebase,我不能push到遠程回購了。顯然,我希望這可以作爲備份和同步,而且也可能會發生,我想在機器B上實際工作時更改機器A的分支。

維護單個分支每臺機器還是有更好的解決方案? 我如何能夠應用本地更改頂部,如rebase,但不失去push的能力? 非常感謝

+0

難道是一個選項,所有的機器相關的變量保存在一個文件中,並有一個git鉤子在必要時傳播這些值? –

回答

-1

您也可以在您的gitconfig

[include] 
    path = ~/my_std_git_config 

文件,這樣你可以有標準的東西一個共同文件。併爲您的不同主機的幾個gitconfig文件。

然後只將其中一個特定於主機的git配置鏈接到〜/ .gitconfig。 將所有文件保存在一個分支中。

i.E.在您的存儲庫中:

common_gitconfig 
laptop_gitconfig 
server_gitconfig 

將common_gitconfig包含到laptop_ *和server_ *中。 將您的laptop_gitconfig鏈接到筆記本電腦上的〜/ .gitconfig。在你的服務器鏈接server_gitconfig上。

1

您的多個分支機構的方法聽起來很合理,並且是機器特定腳本(工作/個人)遇到的一些問題的解決方案。

您所描述的問題是,您在執行git rebase後無法推送更改。

您無法推送的原因是因爲git rebase重寫了歷史記錄。它會刪除你的分支進行提交,與主同步並重新應用在上面的提交:

enter image description here

爲什麼不合並,而不是重訂?

通過合併(git merge master),您不會重寫歷史記錄,也不會遇到推送到遠程的問題。

我建議你閱讀this文章,它解釋了合併和重新裝配之間的區別。

如果你真的需要/想重訂,你就必須強制把你改變你的遠程運行git push --force <remote_name> <branch_name>