20190708のGitに関する記事は5件です。

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をお好きなものに設定すれば完了です。

以上です。
間違いや指摘があればお願いします。

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

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=ius

Ansibleで既存の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のインストールって難しいね。

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

Git攻略ガイド

初心者がコマンド方面でGit攻略するための道標を考えてみた。
見落としそうなものを集めてみた。
説明が少ないかもしれないがキーワードから検索してたどって欲しい。

道標

初心者~

  • 原典のgit-scmを読む。原典以外の説明はすべて素人が書いた劣化コピーにすぎない。ユーザー名とEmailアドレスを設定することも書いてある。
  • git help コマンドを使う。ブラウザにヘルプが立ち上がる。ヘルプを読む。
  • GUIソフトを使う(SmartGitなど)。
  • GUIソフトとコマンドプロンプトを交互に使う。交互に使うと学ぶことが多い。
  • テスト用のレポジトリを作るための初期化コマンド(後述)を作る。
  • テスト用のレポジトリを作って知らないコマンドを試す。
  • レポジトリのフォルダーで毎回git status(ステータス表示)を使う。どういうときにどのように表示されるかを理解する。
  • レポジトリのフォルダーで毎回git log(ログ表示)を使う。最近の履歴などを把握する。--allを付けるとすべてのタグとブランチが表示される(dangling commitは表示されない)。
  • Bashのalias(後述)を使う。基本のstをよく使う。
  • Gitのalias(後述)を使う。
  • 表示コマンドのgit branchremotels-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 -fgit reset --hardgit mergegit 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

図 3-31. トピックブランチからさらにトピックブランチを作成した歴史 1

コマンドを使ってみないと理解できない。
コマンドの種類もオプションも非常に多いのでヘルプを見る癖をつけよう。

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

コミットに名前をつける。

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

GitHubをMACのターミナルから操作する方法

MACでGitを使用するための準備作業

// 自分がいるディレクトリを確認する
pwd


// フォルダを作成する
mkdir フォルダ名


// ディレクトリのリストを表示してフォルダがつくれているかを確認する
ls


// つくったフォルダに入る
cd フォルダ名


// 自分がいるディレクトリを確認する
pwd

gitの設定

// 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 今のファイル名 / 変更後のファイル名
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gitサーバー初期設定

1.Gitサーバーにて

  1. gitディレクトリ作成
    • フォルダ名.git
  2. bare repositry 設定で初期化
    • git init --bare

2.ローカルにて

  1. local repositry設置
    • mkdir [folder]
  2. local repositryでinit
    • git init
  3. リモートリポジトリ設定

    • コマンド例 -> git remote add [alias] [user]@[host]:[dir path]
  4. first push

    • readmeファイル等を作ってpush
    • エラー時には、サーバー側の権限、sshを確認

3.Gitサーバーにて

  1. logコマンドで確認
    • git log
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む