20210314のGitに関する記事は8件です。

GitにおけるRails Tutorialになかった注意点!(in チーム開発の学び)

はじめに

これは実務と同じ方式で行うチーム開発体験学習で、
GitHubを利用する際、現役の先輩エンジニアにご指摘いただいた内容です。
それまで私は全く考えてこなかったことですが、セキュリティを考えると当然のことです。

目次

  1. gitに記録してはいけないもの
  2. もし実務でやったらセキュリティインシデント(アカンやつ)
  3. 次からは気をつけよう。ネットに放流した鍵はもう安全ではない。

gitに記録してはいけないもの

端的に言うと下記2つのファイル

・ config/credential.yml.enc
・ config/master.key

これらをgitに記録してしまい、
あまつさえGitHubにプッシュしてしまいました。
やっちまったなあ!

もし実務でやったらセキュリティインシデント

こちらをご覧ください

つまり、秘密情報を管理する仕組みとその鍵を自分は公衆の面前に晒してしまったわけですね。
これが仕事だったらもう大変なことです。

ネットに放流した鍵はもう安全ではない。対策方法は?

GitHubに一度上げてしまったことを完全に戻すのは以下の方法を取らないといけないみたいです。

しかし、これも結局は悪用する人が先にセンシティブファイルを発見したら終わりなわけで…
こんなことにならないよう、普段から大事なファイルはgitignoreに書き込んでおきましょう!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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"

参考:https://dev.classmethod.jp/articles/git-config-alias-19/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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"

参考:https://dev.classmethod.jp/articles/git-config-alias-19/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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 環境で試して、正常に動作する方がいらしたら、コメント下さいませ。:汗:

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【備忘録】Git ・ GitHubの基礎

Git・GitHubとは

わかりやすかった写真で説明すると
・Git→開発環境(ローカル環境)で
「ここを編集・追加・削除したよ~」とわかりやすくメッセージを残すために用いる

・GitHub→みんな見れるとこ。作品がいっぱいある美術館的な感じ。

FireShot Capture 094 - 【GitHub超初心者入門】この前初めてGitHubを使い始めたエンジニア見習いが書くGitHubの使い方と実践~とりあえず一緒に動かして_ - qiita.com.png

主な流れ

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コマンド】
ファイルの移動とファイル名の変更。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git のブランチ と ソーシャルコーディング

勉強の記録

  • Git のブランチ と ソーシャルコーディング 3/14
  • 今回は2回分です。

勉強した内容

  • ブランチ
  • マージ
  • プルリクエスト

何をベースに勉強してるか

内容の詳細

  • 作業するページを複数作ることで、失敗しても大丈夫にする。
  • それによって複数人で同時に作業する事が可能。
  • だからこそCoC、マナーや尊重が大事!

わかったことについて

  • ゲームっておそらくこういう感じで作ってるんだろうなって想像できた。
  • みんなで本やノートを作ってる感じかな? もし同じページを作ってもすぐにわかる!

むずかしかったよ

  • 特になし

次回やる予定のこと

  • 次回から本格的に授業が始まる…!?
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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/

出来た!

個人的備忘録です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む