- 投稿日:2021-03-14T22:49:31+09:00
GitにおけるRails Tutorialになかった注意点!(in チーム開発の学び)
はじめに
これは実務と同じ方式で行うチーム開発体験学習で、
GitHubを利用する際、現役の先輩エンジニアにご指摘いただいた内容です。
それまで私は全く考えてこなかったことですが、セキュリティを考えると当然のことです。目次
gitに記録してはいけないもの
端的に言うと下記2つのファイル
・ config/credential.yml.enc
・ config/master.keyこれらをgitに記録してしまい、
あまつさえGitHubにプッシュしてしまいました。
やっちまったなあ!もし実務でやったらセキュリティインシデント
こちらをご覧ください
つまり、秘密情報を管理する仕組みとその鍵を自分は公衆の面前に晒してしまったわけですね。
これが仕事だったらもう大変なことです。ネットに放流した鍵はもう安全ではない。対策方法は?
GitHubに一度上げてしまったことを完全に戻すのは以下の方法を取らないといけないみたいです。
しかし、これも結局は悪用する人が先にセンシティブファイルを発見したら終わりなわけで…
こんなことにならないよう、普段から大事なファイルはgitignoreに書き込んでおきましょう!
- 投稿日:2021-03-14T22:38:44+09:00
【Git】納品用差分ファイルzip化 windows
【誤】
git archive ブランチ名 `git diff --name-only from-commitID to-commitID --diff-filter=ACMR` -o archive.zip上記だとなぜかバッククウォートを使うと以下エラーが起こる
error: unknown option `name-only'
なので代わりに()を使用したら動作した
【正】git archive ブランチ名 (git diff --name-only from-commitID to-commitID --diff-filter=ACMR) -o archive.zip
- 投稿日:2021-03-14T22:14:24+09:00
git エイリアス設定
git エイリアス 何を設定したか確認
git config --global --list | grep ^alias\.
"com" = "commit -m"
git config --global alias.com "commit -m"
"st" = "status"
git config --global alias.st status
"br" = "branch"
git config --global alias.br branch
"mg" = "merge --no-ff (取り込みたいブランチ名)"
git config --global alias.mg "merge --no-ff"
- 投稿日:2021-03-14T22:14:24+09:00
【Git】エイリアス設定
git エイリアス 何を設定したか確認
git config --global --list | grep ^alias\.
"com" = "commit -m"
git config --global alias.com "commit -m"
"st" = "status"
git config --global alias.st status
"br" = "branch"
git config --global alias.br branch
"mg" = "merge --no-ff (取り込みたいブランチ名)"
git config --global alias.mg "merge --no-ff"
- 投稿日:2021-03-14T18:40:46+09:00
Mac で git rebase master を自動でやるバッチ(.commnad)
チーム開発をしていると、何度も何度も使う git rebase master を自動でやるバッチ(.command)を作成したので紹介します。
応用篇では現在の作業ブランチをバックアップするバッチも紹介しますので、ご興味のある方は是非読んで下さい。不慣れな bash なので、あまり良いコマンドではないかもしれませんが、ご指摘あればコメントお願いします。改善、改善。
手順
- .command ファイル作成
- 実行権限を付与
- .gitignore(任意)
- .command 実行
git_rebase_master.command ファイル作成
git_rebase_master.command
以下のコマンドファイルをテキストエディタなどにコピペして作成してください。git_rebase_master.command#!/bin/bash # ex) [clone]/util_command/[FILE_NAME].command # [Notice] At first, execute chmod command manually if needed # ex) $ chmod u+x [FILE_NAME].command # Move dir MY_DIRNAME=$(dirname $0) COMMAND="cd $MY_DIRNAME" echo " $ $COMMAND"; $COMMAND COMMAND="cd .." echo " $ $COMMAND"; $COMMAND # Check CURRENT_BRANCH COMMAND="git symbolic-ref --short HEAD" echo " $ $COMMAND" CURRENT_BRANCH=$($COMMAND) echo " ---------- [CURRENT_BRANCH] = [$CURRENT_BRANCH] ----------" if [ -z "$CURRENT_BRANCH" ]; then echo " ---------- [ERROR] Failed to get CURRENT_BRANCH ----------"; exit elif [ "${CURRENT_BRANCH}" = "master" ]; then echo " ---------- [WARNING] CURRENT_BRANCH is master ----------" fi # Git command COMMAND="git remote update" echo " $ $COMMAND"; $COMMAND COMMAND="git checkout master" echo " $ $COMMAND"; $COMMAND COMMAND="git pull" echo " $ $COMMAND"; $COMMAND COMMAND="git checkout $CURRENT_BRANCH" echo " $ $COMMAND"; $COMMAND COMMAND="git rebase master" echo " $ $COMMAND"; $COMMAND echo " ---------- [Success] Rebase completed ----------".commandファイルの配置場所
ex) [clone]/util_command/[FILE_NAME].command
今回のサンプルでは .git と同じディレクトリに util_command フォルダを作成して、そのフォルダ直下に .command ファイルを配置してます。
※フォルダ名は何でも構いません。拡張子 .command
拡張子 .command でファイル保存すると、MacOSのダイアログが出るので[use .command]を選択してください。実行権限を付与
.command ファイルがあるディレクトリに移動
ターミナルで "cd "の後に .command ファイルがあるフォルダをドロップすれば、パスが自動入力されます。$ chmod u+x [FILE_NAME].command
ターミナルから上記コマンドを実行して、.commandファイルに実行権限をつけてください。
Macでバッチファイル(.command)を作る.gitignore(任意)
無視リスト(.gitignore)に .command ファイルを追加
util_command ディレクトリごと Git のグローバル無視リストに追加しておけば、気兼ねなくプロジェクトフォルダ内から使えます。
SourceTreeならGUIでぱぱっと設定出来ます。
「以下を全て無視:」からディレクトリごと無視リストに追加するのが一番楽です。手動で設定するなら以下のサイトを参考にしてください。
Git でグローバルな .gitignore を作成する.command 実行
あとは.commandファイルをダブルクリックするだけで実行されます。
.command 実行時に「開発元が未確認のため開けません」とアラートが表示される時の対処法
control押しながらクリック、開くを選択するのが一番楽です。
mac > xxxは、開発元が未確認のため開けません。> control押しながらクリック、開くを選択
アプリケーション起動時に「開発元が未確認のため開けません」とアラートが表示されます一度許可(開く)をするとアラートは表示されないので、それ以降はダブルクリックで実行できます。
備考
人によっては環境により実行出来ないケースなどがあるかもしれませんが、あとは自己責任でお願いします。(ちょっと弱気)応用篇
git_branch_backup.command
現在の作業ブランチのバックアップをとっておくバッチです。(個人的にはこれが一番よく使っています)
checkoutはしてないので、作業ブランチはそのままです。上記と同じ手順で git_branch_backup.command ファイルを作成してください。
git_branch_backup.command#!/bin/bash # ex) [clone]/util_command/[FILE_NAME].command # [Notice] At first, execute chmod command manually if needed # ex) $ chmod u+x [FILE_NAME].command # Move dir MY_DIRNAME=$(dirname $0) COMMAND="cd $MY_DIRNAME" echo " $ $COMMAND"; $COMMAND COMMAND="cd .." echo " $ $COMMAND"; $COMMAND # Check CURRENT_BRANCH COMMAND="git symbolic-ref --short HEAD" echo " $ $COMMAND" CURRENT_BRANCH=$($COMMAND) echo " ---------- [CURRENT_BRANCH] = [$CURRENT_BRANCH] ----------" if [ -z "$CURRENT_BRANCH" ]; then echo " ---------- [ERROR] Failed to get CURRENT_BRANCH ----------"; exit elif [ "${CURRENT_BRANCH}" = "master" ]; then echo " ---------- [WARNING] CURRENT_BRANCH is master ----------"; exit fi # Backup current branch BACKUP_BRANCH_NAME=$CURRENT_BRANCH"_Back/"$(date +"%Y_%m%d_%H%M%S") echo " ---------- [BACKUP_BRANCH_NAME] = [$BACKUP_BRANCH_NAME] ----------" COMMAND="git branch $BACKUP_BRANCH_NAME" echo " $ $COMMAND"; $COMMAND echo " ---------- [Success] Backup current branch ----------"バックアップ用のブランチ名
バックアップ用のブランチ名は以下になります。
[CURRENT_BRANCH_NAME]_Back/YYYY_MMDD_hhmmss
日時表示のフォーマットのサンプルブランチ名に"/"
バックアップ用のブランチ名に / を付けておくと、SourceTreeではグルーピング出来るので人によっては便利です。
年月を入れる[注意]SourceTreeへの反映遅れ
SourceTreeを使っている場合、すぐに反映されない時がありますが、SourceTreeの表示を切り替えると反映されます。
「現在のブランチ」と「すべてのブランチ」を切り替えるなどおわりに
ここまで出来れば、あとは他にもいろいろ応用ができると思いますので、可能性は無限大です。
何度も繰り返し使う cherry-pick 集を用意しておくととても便利ですので、みなさまも良いバッチがあれば公開してください。Mac で Git コマンドを自動でやるバッチ(.command)の情報が少なかった(自分でうまく見つけられなかった)ので、今回記事にしてみました。
ちなみに zsh 環境では試してないので、正常に動作するかは分かりません。
zsh 環境で試して、正常に動作する方がいらしたら、コメント下さいませ。:汗:
- 投稿日:2021-03-14T18:13:31+09:00
【備忘録】Git ・ GitHubの基礎
Git・GitHubとは
わかりやすかった写真で説明すると
・Git→開発環境(ローカル環境)で
「ここを編集・追加・削除したよ~」とわかりやすくメッセージを残すために用いる・GitHub→みんな見れるとこ。作品がいっぱいある美術館的な感じ。
主な流れ
1.個人のファイルの変更
↓(git add)
2.ステージングエリア(控室)
↓(git commit)
3.ローカルリポジトリに登録OK
↓(git push)
4.リモートリポジトリ(GitHub)に登録新規プロジェクトでの細かな流れ
git init ~これを編集するよ!~
名前の登録をして
cdコマンドで編集したいファイルへ移動してgit initとすることでgitの隠しファイルが作られる
~githubにあげる準備するよ!~
git add ファイル名 git commitとここまでするとなんか別のエディターに切り替わる。
///ここに変更した内容の記載/// # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch main # Your branch is up to date with 'origin/main'. # # Changes to be committed: # modified: first.txt #そして閉じる。
~githubにpushするよ!~
・GitHubでレポジトリを作成
or push an existing repository from the command lineをコピペすることにより登録
そしてpushコマンドでどんどん更新することができるようになる。その他コマンド
- 【git status】・・・状況の確認(よく使う)
- 【git log】・・・変更履歴の確認
- 【git log --oneline】・・・1行で変更履歴の確認
- 【git diff】・・・ステージとの差分。add,commitする前に確認する
基礎的なLinuxコマンド
【cdコマンド】
ディレクトリを移動。【lsコマンド】
ディレクトリの内容を表示します。
ls -a コマンドで、隠しファイルを含めたディレクトリ全内容を表示します。【mkdirコマンド】
ディレクトリを新規作成。【rmコマンド】
ファイルを削除。【cpコマンド】
ファイルをコピー。【mvコマンド】
ファイルの移動とファイル名の変更。
- 投稿日:2021-03-14T14:08:34+09:00
Git のブランチ と ソーシャルコーディング
- 投稿日:2021-03-14T09:26:56+09:00
git init の "unknown error occurred while reading the configuration files"への対処方法
git init でまさかのエラー
git init
でこんなエラーが出た。(xxx) xxx$ git init warning: unable to access '/Users/xxx/.gitconfig': Is a directory warning: unable to access '/Users/xxx/.gitconfig': Is a directory fatal: unknown error occurred while reading the configuration filesちなみに環境は
macOS Big Sur 11.2.2
macbookPro16 M1じゃないやつ。Anacondaでpython3.8の環境を作ってPythonアプリを作っていました。
対処方法
さて、エラーメッセージに従ってルートディレクトリを見ると、
.gitconfig
がある。これを削除してみる。
(xxx) xxx$ rm .gitconfig rm: .gitconfig: is a directoryどうやらディレクトリとして認識されている。
(xxx) xxx$ rm -r .gitconfig rm: .gitconfig: is a directoryこれで削除出来た。
対象のディレクトリに移動して、
(st0) xxx$ git init Initialized empty Git repository in /Users/xxx/.git/出来た!
個人的備忘録です。