Git(25)すでにEclipseのGit Flowで管理しているリポジトリの.gitignoreを変更する

2017-03-26

旧ブログ

t f B! P L
linuxBean14.04(149)LibreOfficeマクロ開発環境の構築:その1でGitHubの.gitignoreをPythonのものを選択しましたが*.moと*.soも含まれていたのでそれをやめて、これらのファイルをリポジトリに追加できるようにします。

前の関連記事:Git(24)EclipseでGit Flowを使う:その2


ローカルリポジトリのfeatureブランチの.gitignoreを変更する


どこから手をつけたらよいのかわからないのでとりあえずfeatureブランチから変更します。

PyDevのPyDev Package Explorerからは.gitignoreファイルはみえないので、Gitパースペクティブに切り替えます。


Git Repogitoriesビューのリポジトリの下にあるWorking Treeの中に.gitignoreを見つけることができました。
# C extensions
# *.so
# Translations
# *.mo
*.soと*.moをコメントアウトしました。


これで変更したファイルに.gitignoreとともにmoファイルも含まれました。

もうこのままこのfeatureブランチを終わらせてしまうことにしました。

featureブランチの変更を他のブランチに反映させる


Finish Featureしたあとdevelopブランチを確認すると.gitignoreの変更も反映されていました。

とりあえずdevelopブランチをリモートリポジトリにプッシュしました。

Git Repositoriesでdevelopブランチがチェックアウトした状態でリポジトリを選択して右クリック→Push to Upstream。

これでGitHubのdevelopブランチにmoファイルも含まれました。

masterブランチには直接developブランチをマージすることにしました。

まずmasterブランチをチェックアウトします。

developブランチを選択して右クリック→Merge。

これでローカルリポジトリのmasterブランチを変更できたので、これをGitHubにプッシュしました。

これで全ブランチの.gitignoreの置き換えが完了しました。

以前やったときはうまくいかなかったので、この記事を書き始めましたが、ちゃんと手順を踏んでやったら何の問題もなくできてしまいました。

以前やったときはきっとまだGit Flowのブランチの流れがわかっていなかったのだと思います。


2017.7.22追記

.gitignoreがブランチで異なるとうまくいかないらしい


なぜかpycファイルがコミットインデックスに載ってくるようになったので、**.pycを.gitignoreファイルの先頭に追加しました。

これでpycファイルがコミットされる問題は解決しました。

ところがそのうちすべてのブランチがチェックアウトできないという問題が発生しました。

Conflictしていると言われるのですがGit(29)EclipseのMerge Toolでコンフリクトを修正するでのようにSynchronize with Workspaceを選択しても変更点はないと言われてしまってどこがConflictしているのかがわかりません。
(2017.7.25追記。Eclipseのプロジェクトのフォルダより上の階層のファイルである.gitignoreとかREADME.mdがコンフリクトしているときはSynchronizeビューで表示されないことがわかりました。)


リモートリポジトリをプルしてみるとDIRTY_WORKTREE .gitignoreというのがでてきました。

そこで.gitignoreファイルが原因とあたりがついたので.gitignoreファイルを見てみるとコンフリクトした部分が表示されていました。

で、これを修正してインデックスに加えてコミットしたのですが、問題は解決しませんでした。

git - Failed, DIRTY_WORKTREE in eclipse, how to solve it? - Stack Overflow

これを読むとコンフリクトしているファイルを削除するしかないようでしたので、修正前の状態であったリモートの.gitignoreファイルを削除しようとした。

しかし、そのブランチのリモートはすでに修正済みのものでした。

修正前のものはそのフィーチャーブランチではなくマスターブランチのものでしたのでその .gitignoreファイルを削除しました。

それでプルするとマージできて、他のブランチがチェックアウトできない問題も解決しました。

あれこれいじった結果解決したものなので、手順は正確でない可能性があります。

また同じ問題に遭遇したらもう少し明確に手順を確認してみようと思います。

参考にしたサイト


git - Failed, DIRTY_WORKTREE in eclipse, how to solve it? - Stack Overflow
DIRTY_WORKTREEがでてきたのでコンフリクトしたファイルを削除したら解決しました。

次の関連記事:Git(26)EclipseのGit Flowの運用方法

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ