Tomcatを再起動せずに設定ファイルを読み込ませる

Tomcatを再起動するのって他の開発者がいると気を使いますね。

アプリが複数のっているとなおさらです。

そういう時に設定ファイルを変更して再読み込みさせたい、でもTomcat再起動させたくない。

 

こういう時はweb.xmlのタイムスタンプを更新します。

 

touch web.xml

 

これで再読み込みされます。server.xmlのautoDeploy=trueが前提ですが。

Tomcatにおけるwarファイル名の「##」はバージョン番号を区別するためのセパレータ

xxx##1.0.0.warみたいなwarファイル名を見かけますが、##にはセパレータとしての意味があります。

 

xxx・・・アプリケーション名

##・・・アプリ名とバージョン番号のセパレータ

1.0.0・・・アプリのバージョン番号

 

これらのファイルはTomcatのwebappsディレクトリに配置し、デプロイします。

デフォルトのコンテキストパスはアプリケーション名だけになりますが、バージョン管理のために使用される##の後ろの部分は無視されます。

xxx##1.0.0.warの場合、http://localhost:8080/xxxでアクセスできます。

git rebaseを理解するためにgit mergeを理解しておく

git mergeのイメージをTortoise Gitのログ画面からイメージする。

 

mainブランチからhogeブランチを生やして何か変更加える。※コンフリクトが発生しないように

 

mainブランチでも何か変更を加える。※コンフリクトが発生しないように

 

その時のイメージ。

 

 

この状態からhogeブランチをmainブランチにmergeする。

 

git merge hoge

 

これすると、以下のようにhogeブランチがmergeされる。

 

 

これがmerge。

 

ちなみにこのmergeを取り消すには「git reset --hard origin/main」で取り消せます。

 

ローカルなんでresetで取り消す。

 

 

では戻ったところでrebaseコマンドしてみる。これは日本語で言うと「付け替え」といった感じ。

ブランチをhogeにする。「hoge」が赤くなります。

 

git checkout hoge

 

 

この状態で、rebaseコマンド実行。

 

git rebase main

 

 

hogeブランチがmainの先頭に付け替えられています。

 

この状態でhogeを強制的にpushする。(-fオプション)

 

git push -f origin hoge

 

そうするとログが以下のようになる。コミット履歴がきれいに1本になった。

 

 

ああ、ムズイ。

gitの領域の表記ゆれが酷い

Gitには領域がありますが表記ゆれが酷いです。だからsvnからgitへの移行でつまづいたり覚えにくいんだろうと思います。

 

作業ディレクトリ・・・作業ディレクトリ、ワーキングディレクトリ、ワーキングフォルダ、ワーキングツリー、作業フォルダ

 

ステージングエリア・・・ステージング領域、インデックス、一時領域、キャッシュ

 

ローカルリポジトリ・・・ローカルリポジトリ一択。

 

リモートリポジトリ・・・これはリモートリポジトリ一択。

 

その他領域以外でも、リバート、リベース、リセット、リストア、チェックアウト、スイッチ、マージ、ハード、ソフト色々コマンドやオプション合って逆に面倒。

 

 

git pullでコンフリクト解消が難しい場合はgit merge --abort

git pullすると、git fetchしてgit mergeしています。

 

この際にコンフリクトが発生することがあります。

1ファイルくらいなら解消すればよいですが、コンフリクトが多すぎたりするといったん中止したい場合があります。

 

そういう場合は、git merge -- abortコマンドを実行します。

 

git pull(git fetchしてgit merge)した時のコンフリクトです。

 

この状態でgit merge --abortコマンドを実行します。

 

一旦git mergeコマンドが取り消されます。

 

 

git pullすると「Your local changes to the following files would be overwritten by merge」エラーが出たのでcommitして回避する

git pullすると「Your local changes to the following files would be overwritten by merge」エラーが出たのでcommitして回避してみます。

 

git add .

git commit -m "message"

 

これで再度git pullします。ここで、コンフリクトする場合としない場合があります。

 

1.コンフリクトしなかった場合は、これでgit pull完了です。

 

2.コンフリクトした場合、コンフリクトを解決します。

 

コンフリクトを解決したら、git pull完了です。

 

コンフリクトの修正をaddしてcommitすれば、リモートにpushまでできます。

git add .

git commit -m "conflict-message"

 

 

 

 

git revertでリモートにpushしたコミットを取り消す

「git revert コミットハッシュ」コマンドで履歴を残しつつ、リモートにpushしてしまったコミットを取り消すことができます。

 

git logコマンドやTortoise Gitなどでコミットハッシュを調べます。

 

こちらのコミットを以下のようにコミットハッシュを指定して取り消します。

 

git revert a0f60d645fa3ee10be18a9d5b3cd151d4938b2e8

 

これでRevertされます。ログはこんな感じです。

 

 

これで、git push origin mainでリモートプッシュしてあげたら安全にコミット内容を取り消すことができます。

 

git push origin mainコマンド実行後のログです。