- 投稿日:2019-07-08T12:37:11+09:00
gitでsshkeyを登録する流れ
gitを始める時にひっかかりがちなsshkeyを作る際の流れを紹介します。
(https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000#GitHub%E3%81%B8%E3%81%AESSH%E6%8E%A5%E7%B6%9A%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B)
↑参考にしたサイトです。git --versionできちんと動作するか確認する。
git --versionと入力し、動作確認をします。
git version 2.22.0.windows.1と出ればOKです。git config --listで自分のuser.nameと、user.emailを確認する。
もし登録が完了した場合はこのコマンドで自分のusernameとuseremailを確認できます。
もし登録していない場合はgit config --global user.name ユーザー名 git config --global user.emailメールアドレスと入力して、作成します。
ssh-keygenでカギを作成し、パスフレーズを作成する。
ssh-keygen -t rsa -b 4096 -C 先ほど登録したメールアドレスを入力します。
そうすると、Enter file in which to save the key (/Users/hoge/.ssh/id_rsa):このように出てくるのでEnterキーで進みます。
Enter passphrase (empty for no passphrase): Enter same passphrase again:その後このような文字が出てくるので自分の好きなパスワードを設定します。
この時自分の打った文字は表示されないので注意が必要です。作成したsshkeyを確認する。
$ cat .ssh/id_rsa.pubと入力します。
これでssh-rsaの後に出力されたものが、次のステップに必要になります。git hubにssh keyを登録する。
上の作業で出力されたものをgit hubに登録します。
git hubのホーム画面右上のアイコンをクリックします。
そうすると、下から二つ目にsettingsがあるので、それをクリックします。
次の画面で左の欄にある、SSH and GPG keysをクリックします。
そこで右上にあるNEW SSH keyをクリックし、
Keyのところに先ほどの出力されたものをpasteし、titleをお好きなものに設定すれば完了です。以上です。
間違いや指摘があればお願いします。
- 投稿日:2019-07-08T11:27:42+09:00
CentOS7で最新バージョンのgitをインストール
目的
GitLab CI環境を構築するところで、gitのバージョンが古すぎてdeployが失敗するケースが発生した。
CentOS7で設置されるgitのバージョンは1.8.xなので、2.xに上げないと行けない。
source compileしてインストールすることよりできればyumでインストールしたい。git 2.x系をインストール
色々とググって見たけど、qiitaとか他の日本語のWEBで見つけたやり方では様々な依存性の問題が発生した。
ここのやり方では一発で行けたので、紹介する。
$ sudo yum remove git* $ sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm $ sudo yum-config-manager --disable ius $ sudo yum -y install git2u-all --enablerepo=iusAnsibleで既存のplaybookを修正した。
- name: install development yum packages yum: name={{ item }} state=present with_items: - gcc - gcc-c++ # - git - openssl-devel - readline-devel - unzip - yum-utils # - name: install yum packages in order to install the newest git # yum: name={{ item }} state=present # with_items: # - emacs-filesystem # - libsecret # - pcre - name: install yum repository in order to install the newest git yum: name: 'https://centos7.iuscommunity.org/ius-release.rpm' state: present register: ius_repository - name: disable ius repository shell: yum-config-manager --disable ius when: ius_repository.changed - name: install the newest git yum: name: git2u-all enablerepo: ius # disablerepo: base,epel,extras,updates state: present依存性の問題を解決する為にエラーで指摘されたpackageをインストールして見たけど、切りがない。
次々と他の問題が出てくる。
それでコメントアウトしておいた。最新バージョンのgitを設置する時、他のrepositoryをdisableにしたら、また失敗した。
他のrepositoryから必要なpackageもあるみたいなので、その部分もコメントアウトした。$ git --version git version 2.16.5 $ sudo cat /etc/yum.repos.d/ius.repo [ius] name = IUS for Enterprise Linux 7 - $basearch baseurl = https://repo.ius.io/7/$basearch/ enabled = 0 repo_gpgcheck = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7 [ius-debuginfo] name = IUS for Enterprise Linux 7 - $basearch - Debug baseurl = https://repo.ius.io/7/$basearch/debug/ enabled = 0 repo_gpgcheck = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7 [ius-source] name = IUS for Enterprise Linux 7 - Source baseurl = https://repo.ius.io/7/src/ enabled = 0 repo_gpgcheck = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7これでOK。意外と最新バージョンのgitのインストールって難しいね。
- 投稿日:2019-07-08T09:58:21+09:00
Git攻略ガイド
初心者がコマンド方面でGit攻略するための道標を考えてみた。
見落としそうなものを集めてみた。
説明が少ないかもしれないがキーワードから検索してたどって欲しい。道標
初心者~
- 原典のgit-scmを読む。原典以外の説明はすべて素人が書いた劣化コピーにすぎない。ユーザー名とEmailアドレスを設定することも書いてある。
git help コマンド
を使う。ブラウザにヘルプが立ち上がる。ヘルプを読む。- GUIソフトを使う(SmartGitなど)。
- GUIソフトとコマンドプロンプトを交互に使う。交互に使うと学ぶことが多い。
- テスト用のレポジトリを作るための初期化コマンド(後述)を作る。
- テスト用のレポジトリを作って知らないコマンドを試す。
- レポジトリのフォルダーで毎回
git status
(ステータス表示)を使う。どういうときにどのように表示されるかを理解する。- レポジトリのフォルダーで毎回
git log
(ログ表示)を使う。最近の履歴などを把握する。--all
を付けるとすべてのタグとブランチが表示される(dangling commitは表示されない)。- Bashのalias(後述)を使う。基本の
st
をよく使う。- Gitのalias(後述)を使う。
- 表示コマンドの
git branch
やremote
やls-files
に-vv
を付ける。コマンドを試した結果を表示させないとコマンドの意味を理解できないことがある。- 表示コマンドの
git tag
に-n
を付ける。@~3..@
の意味を知る(HEADの3つ親からHEADまでの略)。- GitHubにレポジトリを作ってプッシュしてみる。
- .gitignoreを使う。
中級者~
git push -f
でなく--force-with-lease
を使う。- GitHub上の優秀なレポジトリを探す。クローンしてGUIソフトで眺めると学べることがある。
- Angular.jsのコミットメッセージのフォーマット(後述)を使う。
- commit.templateにコミットメッセージのフォーマットを設定する。
git commit
は-m "メッセージ"
を使わず使い慣れたテキストエディターを立ち上げてコミットメッセージを入力する。git configのcore.editor
。- Windows使用者はGitコマンドからWinMergeを呼び出して差分を見る。
- HEADやブランチを自在に移動する。
git checkout -f
やgit reset --hard
やgit merge
やgit branch -m
(名前変更)やgit tag
(名前付与)など。上級者~
- コミットメッセージにbodyを付ける。
- テキストの改行コードCRLFとLFを学ぶ。改行コードが異なる人たちがどのように合わせているか。
core.autocrlf
や.gitattributes
。- 【初心者危険】rootだけrebaseできないようになっているがrootからのrebaseを使ってみる。
git rebase --root -i
。- 【初心者危険】gcを使ってdanglingコミットを永久削除してみる。
git reflog expire --expire=now --all; git gc --aggressive --prune=now
。- GitでWordの差分を見てみる。
- GitHubでフォークしてプルリクエストを投げてみる。
Angular.jsのコミットメッセージのフォーマット
原典はここにある。
簡単に日本語訳してみた。<type>(<scope>): <subject> <空行> <body> <空行> <footer>
- revertのとき
revert: fix(Angular): add workaround for Safari / Webdriver problemのように書く。
bodyではThis reverts commit 6b915ad9db29027e0aa70634e08a8a3c5af897b8.のように元に戻されるコミットのSHAを書く。
- Typeは次のどれか
feat: 新機能 fix: バグ修正 docs: ドキュメントのみの変更 style: コードの意味に影響を与えない変更(空白、フォーマット、セミコロンの欠落など) refactor: バグを修正も機能も追加しないコード変更 perf: パフォーマンスを向上させるコード変更 test: 欠けているテストや既存のテストを修正する chore: ビルドプロセスあるいは文書生成などの補助ツールやライブラリーの変更
- Scopeはコミット変更の場所を指定するものなら何でもいい。*は変更が複数のスコープに影響を与える場合に使う。
- Subjectは頭を大文字にしない、末尾に.を付けないなど。
- Bodyは本文。
- フッターはBREAKING CHANGE:(重大な変更)を書いたりこのコミットが閉じるGitHubの問題を参照する場所。
Alias
Bashのalias
alias st='git status' alias l2='git log2'Gitのalias
alias.log2=log --graph --date=iso-local --format="%x09%C(yellow)%h%C(reset) %C(magenta)[%ad]%C(reset)%C(auto)%d%C(reset) %s %C(cyan)@%an%C(reset)"テスト用のレポジトリを作るための初期化コマンド
例1、短い、全タグ
git init echo a0 > a.txt; git add -A; git commit -am "初期化 a0"; git tag a0; echo a1 > a.txt; git add -A; git commit -am "変更 a1"; git tag a1; echo a2 > a.txt; git add -A; git commit -am "変更 a2"; git tag a2; git status
例2、少し長い、単純、全タグ
git init; echo a0 > a.txt; git add -A; git commit -am "初期化 a0"; git tag a0; git config user.name "Linus Torvaldss" git config user.email torvaldss@linux-foundationn.org echo b0 > b.txt; git add -A; git commit -am "初期化 b0"; git tag b0; echo b1 > b.txt; git add -A; git commit -am "変更 b1"; git tag b1; echo b2 > b.txt; git add -A; git commit -am "変更 b2"; git tag b2; git config --unset user.name git config --unset user.email git checkout -b develop a0; echo a1 > a.txt; git add -A; git commit -am "変更 a1"; git tag a1; echo a2 > a.txt; git add -A; git commit -am "変更 a2"; git tag a2; git status
例3、少し長い、複雑、全タグ
git init; echo c0 > c.txt; git add -A; git commit -am "初期化 c0"; git tag c0; echo c1 > c.txt; git add -A; git commit -am "変更 c1"; git tag c1; echo c2 > c.txt; git add -A; git commit -am "変更 c2"; git tag c2; git checkout -b server; echo c3 > c.txt; git add -A; git commit -am "変更 c3"; git tag c3; echo c4 > c.txt; git add -A; git commit -am "変更 c4"; git tag c4; git checkout master; echo c5 > c.txt; git add -A; git commit -am "変更 c5"; git tag c5; echo c6 > c.txt; git add -A; git commit -am "変更 c6"; git tag c6; git checkout -b client c3; echo c8 > c.txt; git add -A; git commit -am "変更 c8"; git tag c8; echo c9 > c.txt; git add -A; git commit -am "変更 c9"; git tag c9; git checkout server; echo c10 > c.txt; git add -A; git commit -am "変更 c10"; git tag c10; git statusコマンドを使ってみないと理解できない。
コマンドの種類もオプションも非常に多いのでヘルプを見る癖をつけよう。Gitコマンドを一言で紹介してみる
add
ステージに上げる。
よく使う。bisect
二分探索して問題箇所を見つける。
blame
誰がどの行を直したか。
branch
言葉で説明できないので体で覚えるのみ。
ブランチ。リモート追跡ブランチ。上流ブランチ。checkout
ブランチを切り替えるかワーキングツリーのファイルを復旧。
言葉で説明できないので下手な直訳で逃げた。cherry-pick
指定コミットを1つあてる。
clone
クローン人間でなくクローンレポジトリ。
commit
言葉で説明できないので体で覚えるのみ。
コミットする。config
Alias(別名)などの設定値。
diff
ファイルの差分。
ステージに上がったら--stagedで。difftool
WinMergeなどの外部の神ツールで差分を見る。
fetch
リモートレポジトリから最新情報を取ってくる。
for-each-ref
クローンしたのにブランチがないときリモートブランチ(refs/remotes)を見れる。
fsck
データベース検査。
log
コミットログの表示。
よく使う。ls-files
-vvでファイルの管理状態か。
merge
言葉で説明できないので体で覚えるのみ。
HEADを移動したりマージしたり。push
リモートレポジトリに倍プッシュだ。
不安な人は-nしてから。rebase
2つの使い方。
-iで対話するかcherry-pickを一気にやるか。reflog
操作履歴か。
remote
リモートリポジトリに関する設定。
reset
ファイルを変更しないでHEADの位置を変える。
--hardならファイル変更。revert
変更を打ち消す。
show
昔のファイルの中身を表示。
stash
git add -A; git commit; git tag stash01; git reset --hard @~1;
と同義か。
使わないので知らない。tag
コミットに名前をつける。
- 投稿日:2019-07-08T07:23:11+09:00
GitHubをMACのターミナルから操作する方法
MACでGitを使用するための準備作業
// 自分がいるディレクトリを確認する pwd // フォルダを作成する mkdir フォルダ名 // ディレクトリのリストを表示してフォルダがつくれているかを確認する ls // つくったフォルダに入る cd フォルダ名 // 自分がいるディレクトリを確認する pwdgitの設定
// Gitを初期化する git init // 今いるディレクトリを確認する ls -la // GitHubで設定したユーザー名とメールアドレスを設定する git config user.name ユーザー名 git config user.name メールアドレス // ユーザー名とメールアドレスの設定ができているかを確認する cat .git/config // ファイルを作成 touch ファイル名 // ファイルにテキストを打つ // テキストが表示されているか確認する cat ファイル名 // ファイルを確認する git status // gitにファイルを追加する git add ファイル名 // ファイルが追加されているか確認する git status // コミットする git commit ファイル名 -m "コミットメッセージ" // コミットされているか確認する git logブランチを作成する
// 自分がmasterにいるか確認する git branch // 新しいブランチを作成する git checkout -b ブランチ名 // ブランチが作成されているか確認する git branch // ブランチの作業をmasterに反映させる(マージする) git marge branch // GitHubをブラウザから開き、『New repositly』をクリックし作成する // 作成後出てくる画面の1つ目のブロックにある『git remote add~』以下をコピーする // コマンドに戻り、GitHubの設定を反映させる git remote add origin 『git remote add~』以下のコピー // git remote -v // ターミナルからpushする git push -u origin master新しいプロジェクト等でGitHubからコードを取得するとき
// GitHubの『clone』or『download』のURLをコピーする // ターミナルでクローンを作成する git clone 『clone』or『download』のURL // フォルダができているか確認する ls // フォルダに移動する cd フォルダ名 // ファイルがあるか確認する ls -laその他よく使うコマンド一覧
// ファイルの削除 rm -rf ファイル名 // ファイル名を変更 mv 今のファイル名 / 変更後のファイル名
- 投稿日:2019-07-08T00:19:36+09:00