ブランチの切り方、マージ
リモートリポジトリの作成に成功したので、ブランチを切ってマージする練習をする。
- masterブランチから分岐(test-branch)ブランチを作成
GitHubブラウザ上からできるけれど、コマンドラインから作成する練習。
git --versionでGitのバージョンが2.23未満なら下記のコマンドを実行してブランチを切る。
詳細は後述する。(ちなみにgitのバージョンアップは、sudo apt install gitでできる。)
git checkout -b test-branch
このコマンドは下記のコマンドのショートカット版
git branch test-branch #test-branchの作成
git checkout test-branch #test-branchへの切り替え
git branch -a #ブランチの一覧確認
Gitのバージョンが2.23以上の場合、checkoutも使えるがswitchとrestoreコマンドに役割が分けられているのでそちらを使うようにする。
» git switchとrestoreの役割と機能について - Qiita https://qiita.com/yukibear/items/4f88a5c0e4b1801ee952
WSLのUbuntuはLTS版なので、今の環境だとGitのバージョンは2.17.1。
なのでこれらのコマンドが使えなかった。 - test-branchにいることを確認して、なんらかの変更を加える。
- test-branchをリモートリポジトリにpush
git push origin test-branch - ついでにタグもつけてpushしちゃう
git tag -a タグ名 -m"tag test"
git push origin タグ名 - masterブランチに移動
git checkout master - test-branchをマージする
git marge test-branch
以上で終わり。今回はコンフリクトの練習はしてない。
マージしたあとに、git branch -d test-branchで分岐したブランチを削除できるけど、
ブランチ戦略の話になってくるのでこれは今後勉強する。たぶん。
プライベート(リモート)リポジトリへPushするようにした手順メモ
プライベートリポジトリへpushできなかった。
Gitの設定(SSH鍵の作成と登録)ができてなかったから。
SHH鍵についてのざっくりとした理解は下記の通り
・サーバ側で公開鍵、ユーザ側で秘密鍵を持つ。
・複数人で1つのリモートリポジトリを共有する場合は、公開鍵を相手に渡すこと。秘密鍵は渡さない。
・今回だと公開鍵を持つサーバ側=リモートリポジトリ
・秘密鍵を持つユーザ=ローカルリポジトリ
SSH鍵の作成と登録の手順は下記の通り
- まず既存のSSH鍵がないか確認
» Checking for existing SSH keys - GitHub Help https://help.github.com/en/github/authenticating-to-github/checking-for-existing-ssh-keys - そのあとSSHキーを作成するのだけど、公式サイトの作成方法は採用せずbashから下記のコマンドで作成。
ssh-keygen -t ed25519
※ed25519は鍵の種類。通常はRSAだがこれよりも強度が上でかつ処理も早いのでed25519を用いることにする。 - パスフレーズを登録。
※パスフレーズは鍵が盗まれてしまったときのために、鍵自体もパスワードで保護するイメージ。 - /home/asymptoter/.sshディレクトリにid_ed25519.pubという名前で鍵が作成される。
- この作成した鍵の中身をコピーし、GitHubに登録。ここでだいぶ苦労した。
この手順は下記の公式サイトを参考にしたが、Mac用だったことにあとから気づいた。もしかしたら丸々不要な手順だったのでは感がある。
» Adding a new SSH key to your GitHub account - GitHub Help https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account
この手順だとWinでSSHキーをクリップボードにコピーできず大変だった。
下記の手順でコピーできた。
・ローカルマシンに適当な名前.txtでファイル作る。(ここでは公開SSH.txtとし、デスクトップに作成した)
・下記のコマンドを実行
cat ~/.ssh/id_ed25519.pub > /mnt/c/Users/ユーザ名/Desktop/公開SSH.txt
※Linuxを普段使っている人からしたら常識的かもしれないが、パス名がWSL特有なので注意が必要。Windows上のCドライブは/mnt/c/にある。
以上でSSH鍵の作成と登録は終わり。
次にプライベートリポジトリにpushする準備を行う。
- GitHubブラウザ上でプライベートリポジトリを作成する。ここではGitTrainingというリポジトリを作成した。
- この作成したリポジトリをローカルリポジトリにcloneする。するとcloneを実行したディレクトリにリモートリポジトリと同じ名前のディレクトリが作られる。
- HTTPSからSSHへのリモートURLの切り替えを行う。ローカルディレクトリごとにリモートURLの設定ができる。今回はGitTrainingディレクトリで設定を行う。
» Changing a remote's URL - GitHub Help https://help.github.com/en/github/using-git/changing-a-remotes-url#switching-remote-urls-from-https-to-ssh - ここから先の手順は記憶があやふや・・・
GitTrainingディレクトリに移動して、「test.txt」を作成して、addして、commitして、pushする。
touch test.txt
git add test.txt
git commit - m"テストコミット"
git push origin master - ブラウザから「test.txt」が確認できればOKだったはず
参考にしました。
» Windows Subsystem for Linux (WSL)を使いやすく設定する - Qiita https://qiita.com/python_walker/items/41894c952ee06b018994
コミット時のコメント入力でvimが起動するように設定
コミットするとき、
git commit -m "コメント"
でいつもコメントを書いていたけどうっかり -mをつけるのを忘れた。
そしたらエディタっぽいのが起動したので
「あ、エディタが自動起動してコメント入力求められたんだな~」
と思ってvimの要領で initial commitとコメントを入力。
けど、おかしい。Escでノーマルモードにできず、:wqで終了できない・・・
つよつよから「節子、それvimやない。nanoや」とのご指摘を頂きました。
EDITOR環境変数にvim 設定しておかないと自動でnanoが起動するらしい。
nanoというエディタの存在は知ってたけど初めて見た。これがnanoなの~
vimで起動して欲しいのでEDITOR環境変数にvimをセット。
無事にコミットできました。
git備忘録
gitの勉強しようと思い立ってUNIXコマンドの練習、vimの練習を経てようやっとたどり着いた・・・。
gitには大きく3つのエリアがある。
・作業ディレクトリ
・ステージング
・リポジトリ(ローカルとリモート)
最初は作業ディレクトリにファイルがあり、addでファイルをステージングに、commitでリポジトリにファイルを移動する。
//gitの設定一覧確認
git config -l
//ログのオプション
git log --oneline:コメントをシンプルに見たいとき
git log -p:変更された部分の確認
git log --stat:どのファイルが何ヶ所変わったか
//作業ディレクトリにある変更を加えたファイルを変更前に戻す
git checkout -- ファイル名
※-- のあとに半角スペース入れるの忘れないように!
//作業ディレクトリでファイルのどこが変更されたか確認する
git diff
//ステージングでファイルのどこが変更されたか確認する
git diff --cached
//git addの便利な使い方
git add .:今のディレクトリにあるファイルを全部ステージングにあげる
//ファイルの削除
一度gitにあげたファイルは必ずgitから削除するステップを忘れないように
git rm 削除するファイル名
//gitにあげないファイルの指定
作業ディレクトリに下記のディレクトリを作成して編集
vim .gitignore
バージョン管理の必要がないlogファイルなどを追加
※gitignoreと同じ階層のディレクトリにあるファイルのみが指定できる
*.log
:wq
//lsのオプション
ls -la:隠しファイルも表示
//直前のコミットの変更
ちょっとした変更をし、コメントの更新も特に必要ない時
git commit --amend
//1個前のバージョンに戻す
git reset --hard HEAD:作業ディレクトリもステージングも戻す
//2個前のバージョンに戻す
git reset --hard HEAD^
//ほかのバージョンに戻す
git reset --hard 戻したいバージョンのcommitID
※commitIDはgit logで確認する。
//前回resetしてしまったHEADに戻す(1個だけ戻せる)
git reset --hard ORIG_HEAD
//ブランチ(=分岐、枝分かれ)
git branch hoge:hogeというブランチを作成
git branch:ブランチの一覧(*のついているブランチが今いる場所)
git checkout hoge:hogeブランチに移動
git checkout -b hogehoge:hogehogeブランチを作成して移動
git branch -d hoge:hogeブランチの削除
//マージ
ファイルをマージしたいブランチに移動して実行
git merge hoge
//タグ
git tag v1.0:直近のコミットにタグをつける
git tag v0.9 タグをつけたいcommitID:直近より前のコミットにタグをつける
git tag:タグの一覧確認
git tag -d v0.9:タグの削除
//エイリヤス
gitの命令に短縮名をつける方法
git config --global alias.co checkout:checkoutの短縮名をcoにする
git config -l:エイリヤスの確認
//共同作業するために
mkdir 共有リポジトリ名.git:共有リポジトリを作成。基本的に.gitとする
git init --bare:共有リポジトリに移動して実行
※bareをつけると管理ファイルだけが管理され、ファイルのコミットなどはされないと設定される。
git remote add origin ~/共有リポジトリ名.git:プッシュするリポジトリのあるディレクトリに移動して実行
git remote rm origin:共有リポジトリの削除
git push origin master:共有リポジトリoriginに向かってmasterの内容をプッシュする
git clone ~/共有リポジトリ名.git/ 新しいリポジトリ名:共有リポジトリの中身を新しいリポジトリに入れる
git pull origin master:共有リポジトリの内容をマージ
vimコマンド備忘録
//よく使うやつ
i:インサートモード
:q:vim終了
:w:上書き保存
:wq:保存して終了
:q!:保存せず終了
//移動系のコマンド
gg:先頭へ
G:終わりへ
ctrl+f / ctrl+b:画面単位の移動
w/b :単語単位の移動
^:行頭
$:行末
f+文字:検索したい文字に移動
%:括弧閉じに対応する括弧に移動
//ビジュアルモードについて
v:文字単位
V:行単位
ctrl+v:単語単位
gg V G:全選択
//カット(削除)、コピー、貼り付け
x:1文字カット
dd:1行カット
n+dd:n行カット
p:貼り付け
yy:1行コピー
n+yy:n行コピー
//検索
/単語:単語を検索
n:下方向の検索
N:上方向に検索
*:カーソルを当てている単語を検索(完全一致)
#:カーソルを当てている単語を下方向に検索(完全一致)
//置換
:sでコマンドモードにして実行する
:s/state/State/g:カーソルがある行にあるstateをStateに置換
/gを付けない:最初の1つだけ置換
:%s/state/State/g:ファイルにあるstateを全部Stateに置換
/gc:1つずつ置換をするか確認
//操作の取消
u:もとに戻す
ctrl+r:進む
//ウィンドウの分割
:sp:上下にウィンドウを分割
ctrl+w+w:ウィンドウを移動
:e ファイル名:移動先のウィンドウでファイル名を開く
:vs:左右にウィンドウを分割
:close:ウィンドウをクローズ
//タブ
:tabnew:タブ形式で開く
:tabe ファイル名:ファイル名をタブで開く
gt:次のタブへ移動
:tabclose:タブのクローズ
vim -p ファイル名:vimの起動時からファイル名をタブで開く
:tabdo %s/html/HTML:すべてのタブでhtmlをHTMLに置換
//直前の操作の繰り返し
.:直前の操作を繰り返す
//インデントを揃える
=:1行単位でインデントを揃える
gg+V+G+=:全選択してすべてのインデントを揃える
//補完機能
ctrl+n:変数補完候補を出す
//短形選択と編集の組み合わせ
ctr+v+Iで範囲選択をしたあと、1行目を編集すると選択した範囲がすべて1行目と同じ入力パターンで置換される
//テキストオブジェクト
cit:カーソルがある部分の単語を変更
//便利な設定
:set number:行番号の表示
:set nonumber:表番号の非表示
:syntax on:コードの色付け
:syntax off:コードの色付け解除
:set tabstop=4:タブの文字数を4文字にセット
:set ignorecase:小文字大文字関係なく文字検索してくれる
:set noignorecase:上記コマンドの解除
Linux標準教科書
こんなのを教えてもらった。
» Linux標準教科書
http://www.smallake.kr/wp-content/uploads/2015/08/linuxtext_ver2.0.0.pdf
3章〜8章は試しながら読む、9章は飛ばして10,11章を流し読みをしたい。
wslのbashからファイルの中を編集するには?
3のbashから操作する方法が分からず・・・
2は touch ~で作成した。←そもそもこの作り方でいいのか??
やってみよう:初めてのコミット
下記の手順に従うことによって、GitHub上に変更をコミットすることが出来ます。
- ブランチをチェックアウトしましょう:
git checkout my-slide_posts/0000-01-02-triskaider.md
という名前の新しいファイルを作成しましょう。- ファイルに下記の内容を追記しましょう:
--- layout: slide title: "2枚目のスライドにようこそ!" --- 何かを書く。 戻るには戻るボタンを使いましょう!
追記。touchでファイル作成するのは合ってた。
エディタ開いて編集すればよいらしい。
vim ファイル名
でvim(エディタ)を開いて、iで挿入モードにして、3の内容を追記。
追記出来たらEscを押下、:wで上書き保存、:qで編集終了
参考にしました。
» Vim初心者に捧ぐ実践的入門 - Qiita https://qiita.com/okamos/items/c97970ab34ff55ff3167