- 投稿日:2019-03-05T21:08:06+09:00
herokuでページを更新をする。
事件発生
herokuで作成したアプリに静的ファイルを以下のコマンドでアップロードする。
$ git push heroku masterそしてファイルを更新して再度同じコマンドでアップロードする。
$ git push heroku master Everything up-to-dateここで事件が発生。
”””全てアップロードしましたよ”””と表示されているのに確実にアップされていない。解決方法
プッシュする前に以下のコマンドを叩く。
git commit -am "コメント"そして先ほどのコマンドをもう一度叩く。
$ git push heroku master今度はEverything up-to-dateではなくremote: 〜がいっぱい出でくる。
これでページは更新されました。
- 投稿日:2019-03-05T17:29:14+09:00
macOSのSourcetreeでDevice not configured
会社のmacでSourcetreeを使用していて、先日自宅用のmacにSourcetreeを入れたのだが会社のmacからgit mergeできなくなった。
fatal: could not read Password for 'https://USERNAME@bitbucket.org': Device not configured原因を調べてみたらどうやらキーチェーンが悪さをしているらしい
https://community.atlassian.com/t5/Sourcetree-questions/Device-not-configured-error/qaq-p/767223なので.git/configに手を加える
[remote "origin"] url = https://USERNAME:PASSWORD@bitbucket.org/USERNAME/REMOTE.git fetch = +refs/heads/*:refs/remotes/origin/*PASSWORDにパスワードを追加すればいいらしい
commit or mergeしようとするとキーチェーンのダイアログが出てくるのでmacのパスワードをいれて常に許可で直った
- 投稿日:2019-03-05T17:22:13+09:00
既に git の tracking 対象になっているディレクトリやファイルをcommitのあとから .gitignore 対象にする
方法
.gitignoreへgit管理上無視したいファイルやディレクトリを指定。
echo '対象にしたいディレクトリやファイルのpath' >> .gitignoreファイルやディレクトリをgit管理対象から除外する
$ git rm --cached ファイル名 # 指定ファイルをgit管理対象から削除 $ git rm -r --cached ディレクトリ名/ # 指定ディレクトリをgit管理対象から除外
--cached
オプションをつけると、対象ファイル/ディレクトリ を残したまま、gitの管理対象から除外。
--cached
オプションをなしだと、対象ファイル/ディレクトリ を削除した上、gitの管理対象からも除外。参考:
具体例
前提:カレントディレクトリで、rails new してcommit 済み
/.gitignore+ /test/$ git rm -r --cached . => rm '.gitignore' rm '.ruby-version' rm 'Gemfile' rm 'Gemfile.lock' rm 'README.md' rm 'Rakefile' rm 'app/assets/config/manifest.js' rm 'app/assets/images/.keep' rm 'app/assets/javascripts/application.js' rm 'app/assets/javascripts/cable.js' rm 'app/assets/javascripts/channels/.keep' rm 'app/assets/stylesheets/application.css' rm 'app/channels/application_cable/channel.rb' rm 'app/channels/application_cable/connection.rb' rm 'app/controllers/application_controller.rb' rm 'app/controllers/concerns/.keep' rm 'app/helpers/application_helper.rb' rm 'app/jobs/application_job.rb' rm 'app/mailers/application_mailer.rb' rm 'app/models/application_record.rb' rm 'app/models/concerns/.keep' rm 'app/views/layouts/application.html.erb' rm 'app/views/layouts/mailer.html.erb' rm 'app/views/layouts/mailer.text.erb' rm 'bin/bundle' rm 'bin/rails' rm 'bin/rake' rm 'bin/setup' rm 'bin/spring' rm 'bin/update' rm 'bin/yarn' rm 'config.ru' rm 'config/application.rb' rm 'config/boot.rb' rm 'config/cable.yml' rm 'config/credentials.yml.enc' rm 'config/database.yml' rm 'config/environment.rb' rm 'config/environments/development.rb' rm 'config/environments/production.rb' rm 'config/environments/test.rb' rm 'config/initializers/application_controller_renderer.rb' rm 'config/initializers/assets.rb' rm 'config/initializers/backtrace_silencers.rb' rm 'config/initializers/content_security_policy.rb' rm 'config/initializers/cookies_serializer.rb' rm 'config/initializers/filter_parameter_logging.rb' rm 'config/initializers/inflections.rb' rm 'config/initializers/mime_types.rb' rm 'config/initializers/wrap_parameters.rb' rm 'config/locales/en.yml' rm 'config/puma.rb' rm 'config/routes.rb' rm 'config/spring.rb' rm 'config/storage.yml' rm 'db/seeds.rb' rm 'lib/assets/.keep' rm 'lib/tasks/.keep' rm 'log/.keep' rm 'package.json' rm 'public/404.html' rm 'public/422.html' rm 'public/500.html' rm 'public/apple-touch-icon-precomposed.png' rm 'public/apple-touch-icon.png' rm 'public/favicon.ico' rm 'public/robots.txt' rm 'storage/.keep' rm 'test/application_system_test_case.rb' rm 'test/controllers/.keep' rm 'test/fixtures/.keep' rm 'test/fixtures/files/.keep' rm 'test/helpers/.keep' rm 'test/integration/.keep' rm 'test/mailers/.keep' rm 'test/models/.keep' rm 'test/system/.keep' rm 'tmp/.keep' rm 'vendor/.keep'$ git status => Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: .gitignore deleted: .ruby-version deleted: Gemfile deleted: Gemfile.lock deleted: README.md deleted: Rakefile deleted: app/assets/config/manifest.js deleted: app/assets/images/.keep deleted: app/assets/javascripts/application.js deleted: app/assets/javascripts/cable.js deleted: app/assets/javascripts/channels/.keep deleted: app/assets/stylesheets/application.css deleted: app/channels/application_cable/channel.rb deleted: app/channels/application_cable/connection.rb deleted: app/controllers/application_controller.rb deleted: app/controllers/concerns/.keep deleted: app/helpers/application_helper.rb deleted: app/jobs/application_job.rb deleted: app/mailers/application_mailer.rb deleted: app/models/application_record.rb deleted: app/models/concerns/.keep deleted: app/views/layouts/application.html.erb deleted: app/views/layouts/mailer.html.erb deleted: app/views/layouts/mailer.text.erb deleted: bin/bundle deleted: bin/rails deleted: bin/rake deleted: bin/setup deleted: bin/spring deleted: bin/update deleted: bin/yarn deleted: config.ru deleted: config/application.rb deleted: config/boot.rb deleted: config/cable.yml deleted: config/credentials.yml.enc deleted: config/database.yml deleted: config/environment.rb deleted: config/environments/development.rb deleted: config/environments/production.rb deleted: config/environments/test.rb deleted: config/initializers/application_controller_renderer.rb deleted: config/initializers/assets.rb deleted: config/initializers/backtrace_silencers.rb deleted: config/initializers/content_security_policy.rb deleted: config/initializers/cookies_serializer.rb deleted: config/initializers/filter_parameter_logging.rb deleted: config/initializers/inflections.rb deleted: config/initializers/mime_types.rb deleted: config/initializers/wrap_parameters.rb deleted: config/locales/en.yml deleted: config/puma.rb deleted: config/routes.rb deleted: config/spring.rb deleted: config/storage.yml deleted: db/seeds.rb deleted: lib/assets/.keep deleted: lib/tasks/.keep deleted: log/.keep deleted: package.json deleted: public/404.html deleted: public/422.html deleted: public/500.html deleted: public/apple-touch-icon-precomposed.png deleted: public/apple-touch-icon.png deleted: public/favicon.ico deleted: public/robots.txt deleted: storage/.keep deleted: test/application_system_test_case.rb deleted: test/controllers/.keep deleted: test/fixtures/.keep deleted: test/fixtures/files/.keep deleted: test/helpers/.keep deleted: test/integration/.keep deleted: test/mailers/.keep deleted: test/models/.keep deleted: test/system/.keep deleted: test/test_helper.rb deleted: tmp/.keep deleted: vendor/.keep$ git add . $ git status => Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: .gitignore deleted: test/application_system_test_case.rb deleted: test/controllers/.keep deleted: test/fixtures/.keep deleted: test/fixtures/files/.keep deleted: test/helpers/.keep deleted: test/integration/.keep deleted: test/mailers/.keep deleted: test/models/.keep deleted: test/system/.keep deleted: test/test_helper.rb$ git commit -m "~~~" # remote repository 作成 $ git remote add origin git@~~.git $ git push origin branch_name今回
.gitignore
で指定した testディレクトリ 配下のファイル群がリモートリポジトリで削除扱いになっている◎
- 投稿日:2019-03-05T14:44:56+09:00
Gitのログで削除されたファイルリストを出力する方法
猛烈にハラヘッタ。疲れた。ストレスが原因だな。
git log
で削除したファイルだけを表示することができる。git log --diff-filter=D --summary結果はこんな感じ
`commit 0000000000000000000000000000000000000000 Author: admin <admin@example.com> Date: Mon Mar 4 10:00:00 2019 +0900 deleted unko files delete mode 100644 hoge/Makefile delete mode 100644 hoge/Dockerfile commit 1111111111111111111111111111111111111111 Author: admin <admin@example.com> Date: Thu Jun 14 11:11:11 2018 +0900 deleted cargo files delete mode 100644 hoge/Cargo.toml delete mode 100644 hoge/Cargo.lock主に私が使うケースは、システムの大改修をした時に、いらんやろと思いまとめて消したファイルがやっぱ必要だったみたいな時に重宝している。
https://stackoverflow.com/questions/6017987/how-can-i-list-all-the-deleted-files-in-a-git-repository
- 投稿日:2019-03-05T09:57:48+09:00
git status -s でちょっと幸せになれる
概要
どうもこんにちは。既視感のあるタイトルです。(以前に似たようなタイトルの記事を書いたせいですね。)
今日は久しぶりの Git 系の記事いってみます。タイトルのとおりお題は
git status
についてです。 Git を使ったことのある方々にはお馴染みのコマンドかと思います。
git status
って?軽く説明します。釈迦に説法と思われた方は読み飛ばしてください^^;
公式ドキュメントでは以下のように説明されています。Displays paths that have differences between the index file and the current HEAD commit, paths that have differences between the working tree and the index file, and paths in the working tree that are not tracked by Git(and are not ignored by gitignore).
上記を踏まえて簡単にまとめますと 下記3点を表示するコマンドが
git status
と言えます。
git add
されているけどまだgit commit
されていないファイルの一覧- 編集・変更・削除されているが、まだ
git add
されていないファイルの一覧- Git管理されていない、かつ
.gitignore
で管理除外対象にもされていないものの一覧実際のプロンプト表示はこのようになります。
こんなかんじです。git status
の概要はだいたいつかめたかと思います。
-s
オプションについてさてタイトルの件に戻ってきました。
-s
は--short
のエイリアスです。short ということでその名のとおり短い書式で表示してくれるオプションです。先ほどのキャプチャと同じ状況で今度は-s
を付けてみます。すると以下のように表示されます。
うお、みじかっ!
バカな、短すぎて説明用のテキスト画像を挿入する隙間もなかったぜ…
ざっくり補足します。
表示 説明 M_ git add
されているけどまだgit commit
されていないファイルの一覧_M 編集・変更・削除されているが、まだ git add
されていないファイルの一覧?? Git管理されていない、かつ .gitignore
で管理除外対象にもされていないものの一覧ということですね。
変更ファイルが多い作業になってくると git status の出力結果も地味に長くなるので、そんなときにはこのオプションを使うとちょっと作業が楽になるかもしれません。特に VScode で開発している方は、統合ターミナルの限られた表示領域でgit status
したときにこそこのオプションが真の力を発揮できると思います。ぜひおためしください。ちなみにショートフォーマット時の詳しい書式は下記に載ってますので興味のある方はご覧ください。
おまけ
他にもいろいろオプションがあります。気になったものをいくつかおまけ的につまんでみます。
-b
(--branch
)
現在のブランチ情報を表示するオプションです。なんですが、-s
等の簡易表示オプションと一緒に使わないと何もおきません。まてあわてるなこれは孔明の罠だ(死語ということで
-s
オプションと併用して-sb
と指定してます。ちなみに公式には記載がちゃんとありました。罠とか言ってごめんなさい。
Show the branch and tracking info even in short-format.
とにかく
-s
と-b
は常時セットで使うとよさげなのでおすすめします。ブランチ名あっても邪魔にはなりませんしね。
--porcelain
公式によると Porcelain = 磁器って書いてあります。読んでみましたが、正直よくわかりませんでした\(^o^)/
まあ実際使ってみればわかるでしょう、ということでコマンド打ってみました。
あれ、-s
オプション実行時と書式は同じですね。色が消えましたが。すみませんが用途はいまひとつわかりませんでした。-s
でええやん。というのが正直な感想です。
-v
git diff
の結果も一緒に表示してくれるオプションです。あまり使うことはなさそうですが、覚えておくと何かの際に役立つこともあるかもしれません。(あるとは言ってない)
-z
聞きなれないオプションです。とりあえず公式ドキュメントをみてみます。
Terminate entries with NUL, instead of LF. This implies the --porcelain=v1 output format if no other format is given.
改行コード(LF)の代わりに NUL でエントリを終了します、って書いてあるようです。改行が全部なくなるってことでしょうか。コマンドを打って確認してみます。
ほんとに改行全部なくなりました。
極限に短い git status 表記を目指すのであれば-z
オプションを使えば最短になりますね。あと、-b
と-z
はもちろん併用可能なので、git status -bz
で夢のB'zオプションが実現できます。すみません、ふざけすぎました。これもどういう使い道があるんでしょうかね?ご存知の方いらっしゃいましたらぜひご一報ください。
おわりに
git status -s(b)
が地味に便利なので知らなかった人はつかってみてくださいって記事を書こうとしただけのはずだったんですが、気がついたらおまけのほうが長くなってました(ありがちではまた。
- 投稿日:2019-03-05T09:15:32+09:00
【Git】トピックブランチからトピックブランチ
はじめに
実装工程が過渡期に入っているプロジェクトがあり、
プルリクのマージが追い付かないらしいです。そこで、トピックブランチからトピックブランチ(featureブランチからfeatureブランチ)って作っていいのかな?って相談されたのですが、
「やめた方がよい」と回答しました。developにマージするときに競合が発生すると思ったから。
でも、手軽に実験できる環境があったので試しにやってみました。
やること
- developブランチからトピックブランチ(feature/AAA)を作成する。
- トピックブランチ(feature/AAA)からトピックブランチ(feature/BBB)を作成する。
- トピックブランチ(feature/AAA)からdevelopブランチにプルリク投げてマージする。
- トピックブランチ(feature/BBB)からdevelopブランチにプルリク投げてマージする。
予想
競合が発生して「4.」 のプルリクが投げれない。
結果
普通にプルリク投げれてマージも出来た。
gitすごい。
feature/BBB 作った後に feature/AAA をいじいじした場合は、
feature/AAA から feature/BBB にプルした方がいいとは思う。(試してはいません)以上
- 投稿日:2019-03-05T08:08:26+09:00
【不思議生活①】2019 / 01 / 08 から、ありとあらゆるものをGitHubで管理する生活の始まり
- 世に溢れる素晴らしきサービスやツールを、信念を持って、開発者の意図とは異なる使用を続ける生活を記述する記事第一弾。
- 「私って変わってるかな。普通だと思うけど」という、世間では距離を置かれる凡人思考を、きらびやかに発揮させる、凡人の熟練者。
- 今日は、2019 / 01 / 08から、生活が一変したことを書こう。
2019 / 01 / 08について
- GitHubの大英断の日。
- 内容として、「
プライベートリポジトリ作成が無制限に行えるようになった。
」- 従来は、「プライベートリポジトリは一つしか作成できなかった」
- つまり、開発者のみならず、Gitで様々な文書を管理したい人達にとって、地殻変動の日。
結論
- GitHub上で、大中小の大量の個人開発プロジェクトを、大量管理。
- 「読書感想・献立レシピ・家計簿・推しアイドル分析・日記」等の、全ての日常生活書類を、GitHubで管理。
- 自分の好きなようにページを改造。
経緯
- 「作成プロジェクトを公開できるGitHubは、転職用としても管理用としてもやはりいいな。」
- 「でも非公開にしたい、稚拙と秘匿を兼ね備えた作成物もたくさんあるけど、非公開版は無料だと、1つしか作成できないしな。」
- 「しかも、Gitの理解もまだ到底及んでいないから、勉強がてらどんどん作成していきたいな。」
- こうした時、突如下記のニュースが降ってきて、初めて「神の存在を盲信する宗教」への参加を本気で考える。
- 「でも、実は機能制限があったりするのではないか。」
- こうした偏向思考のおかげで、素晴らしきGitHubを疑ってしまう。
- しかし、読んでみると全く同様に無制限で、きちんと非公開リポジトリが作成し放題らしい。
- これが「日常のGitHub管理生活」につながる。
実践
GitHub上で、大中小の大量の個人開発プロジェクトを、大量管理。
- 趣味で個人開発をしている私にとって、個人基準の段階が3つある。
- 大 : フレームワークやデータベースを用いた、本格的Webアプリ
- 中 : 趣味で行っているBOT作成やスクレイピング。
- 小 : 新言語や技術の学習メモや、サンプルアプリ
- それらの公開するまでにはいかないプロジェクト達を、全てprivateリポジトリとして、GitHubに集約。
- それぞれの課題(Issue)や進捗状況(Push)が把握できるように、しっかりと記述。
「読書感想・献立レシピ・家計簿・推しアイドル分析・日記」等の、全ての日常生活書類を、GitHubで管理。
下記の理由で、技術関連以外で作成したものも、非公開リポジトリで管理したいと思う。
- 「読書の内容や感想に関して、著作権の絡みなしに、綺麗に整理したいため。」
- 「家計簿やレシピ管理を、アプリ作成やツール使用をせず、履歴も日時も自動的に管理したいため。」
- 「好きなアイドルに関しての考察やテレビ番組出演時の感想などをまとめた書類を管理して、より良いオタク生活を満喫したいため。」
- 「毎日の日記作成において、Qiitaへの執筆力向上と人生懐古を図りたいため。」
そこで、それぞれ各Privateリポジトリを作成。
下記、例。
- 読書管理 : book-management
- アイドル管理 : idol-managemnt
- 日記 : MyDiary
自分の好きなようにページをカスタマイズ。
業務でGitを使用している私にとって、下記の点がどうしても気になる。
- 「きちんと整理されたコミットメッセージ・履歴が、逆にかたい」
- 「Git練習のために、どんどん様々なコマンドをうちたいのに、チャットと連携しているため、むやみにできない。」
- 「README(手順書)の視覚性や分かりやすさ向上のため、ほんの少しおふざけをしたい。」
そこで、これらの個人的わがままの理由を達成するため、privateリポジトリを活用し、自分好みに改造。
使用ツール・参考サイトは下記。
※実際の改造ページは、稀に見る羞恥心を持っているため、お伏せ。結果
- 個人開発や学習の質が向上した。
- 学習メモも含めた、大中小の作成物を管理対象にしているため、「課題管理」「学習記録」が大幅にはかどる。
- また、分かりやすいIssue(課題)や変更メッセージの作成を心がけるようになる。
Gitの知識や理解力が更に向上した。
- 「学習用リポジトリ」を作成して、そこでありとあらゆるGitコマンドをうちまくった。
- そのことにより、更なる知識や理解力の向上に役立つ。
高質的な生活になった。
- 日常や趣味等の全ての生活を文書化(メモ)して、管理することで、「読書の仕方」「アイドル分析の質」「毎日の献立のアイデア」の質がどんどん高くなっていった。
- 技術者でありながら、「効率的な生活」が私には腑に落ちなかったぶん、「
高質的な生活
」を手に入れることができた。高揚気分で、開発や文書作成に臨めるよになった。
- 「ページ」「コミット履歴」「README(手順書)」等を自分好みにカスタマイズしたため、常に楽しく作業に臨める。
- 飽きても、その都度変更すれば良いので、常に「学習始めたての高揚気分」で取り組める。
まとめ
- 今回は、不思議生活ということで、「現代において更に加速する管理社会に耐性をつけるため」という壮大な目的は微塵もなく、「気取り屋・実験」という単純明快な目的を掲げながら、記事を書く。
- 「この非公開フォルダが公開されたら、人生が幕を閉じる」という、天文学をはるかに凌ぐ割合で有り得ない思考を、幸せそうに思考中。
- この生活で、「高質的・バージョン管理学習・資料作成術」が同時に学べることができていることに、感謝しながら今日も材料探しにいくとしよう。
参考
- https://techacademy.jp/magazine/6235
→GitHubのアカウント登録手順からリポジトリ作成手順です。