2016-04-29 13 views
4

私は自分自身をドットサーバーrepoに設定し、リモートサーバー上でホストし、別のマシンで使用しました。いくつかの点については、個々の設定が必要です。マシン間で環境変数が異なります。gitブランチを持つ異なるマシンのドットファイル管理は合理的ですか?

私はいくつかのコミットに少し個々の変更(1とmasterに基づいて、すべて、私は枝servernotebookdesktopを持っ例えばので、マシンに依存した変化のための余分な枝を持っていいだろう、と思いました)。 問題は、明らかに、個々の変更を上に適用したいのです。ですから、私はmasterを共通の変更に変更し、rebaseローカルdesktopに分岐します。しかし、rebaseを使用して、私はpushをリモートのレポにもうできません。バックアップと同期のために、マシンAのブランチを実際にマシンBで変更したいと思うかもしれません。

すべてのマシンまたはよりよい解決策がありますか? rebaseの場合と同様に、ローカルの変更を上に適用できますが、pushの機能を失うことはできません。 おかげで非常に多くの

+0

を実行して、リモートへの変更をプッシュし、強制する必要があります

単一のファイル内のすべてのマシン依存の変数を格納するオプションもあり、持っているだろう必要に応じてgitフックが値を伝播しますか? –

答えて

-1

またですから、標準のものと一つの共通のファイルを持つことができ、あなたのgitconfig

[include] 
    path = ~/my_std_git_config 

内のファイルを含めることができます。そして、あなたの異なるホスト用のいくつかのgitconfigファイル。

ホスト固有のgitconfigsの1つだけを〜/ .gitconfigにリンクします。 すべてのファイルを1つのブランチにまとめます。

i.E.あなたのリポジトリに:

common_gitconfig 
laptop_gitconfig 
server_gitconfig 

laptop_ *とserver_ *にcommon_gitconfigを含めます。 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>

関連する問題