20201009のGitに関する記事は7件です。

逆引きよく使うGitコマンド

よく使うGitコマンドを使いたい状況別にまとめてみました。
Gitの仕組みの話とかはまた別の記事で書こうかなって思っています。


GitHubでリポジトリ作ったからローカルに落としたい

git clone https://github.com/XXXX/XXXXXX

リモートにあるリポジトリを、ローカル環境に落としてくることをクローンと呼びます。
https://~ はクローンしたいリポジトリのURLを指定してください。

ローカルのリポジトリの状態を最新に更新したい

git fetch origin XXX
git merge origin/XXX

または

git pull origin XXX

※ XXXはブランチ名です。
リモートリポジトリから情報を取得するのはフェッチと呼びます。
このへん奥が深いので別で記事にします。。

ソースを書き換えたからGitに保存させたい

git add path/to/file.txt
git commit -m "コミットメッセージだよ"

保存=コミットと覚えて問題ないと思います。
コミットってスナップショットを取るんだっけ?

自分のコミットをリモートに送信したい

git push origin XXX

リモートリポジトリへ情報を送信するのはプッシュと呼びます。
【push⇔pull】で対の関係みたいなイメージが強い気がするけど、【push⇔fetch】だと思うんだよなぁ。なんでもいいけど。

ブランチを切り替えたい

git checkout XXX

チェックアウトは、ブランチの切り替え以外にも様々な用途で活躍します。
オプションも様々なので、これまた別で解説します。

ローカルリポジトリの状態を確認したい

git status

筆者が作業を始めるときは、必ずこのコマンドから。
ローカルでどのファイルが変更されたか、新規追加や削除されたファイルを含め一覧表示してくれます。

コミットの履歴を見たい

git log

普通にログ表示させると見づらいので、用途に応じてオプションをつけて、表示内容を整形してあげましょう。

ファイルの差分を見る

git diff path/to/file.txt

新しくブランチを作りたい

git checkout -b XXX YYY

※ XXXは新しく作るブランチ名。YYYは分岐元のブランチ名。
チェックアウトさん早くも2度目の登場。


Git操作の基本として必要かなというものをいくつか並べてみました。
ほかにもあれば追記していく予定です。あと詳細を解説した記事のリンクとかも。。。

※resetとかのGitをブッ壊せる魔力を持つコマンドは載せていません。責任が取れませんものでm(__)m

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

gitのプロキシ設定

社内でgitを使おうとしたら繋がらない。
fatal: repository '[リポジトリのURL]' not foundと出てしまう。
あれ、おかしい。
URLはあってるし、インターネット設定からプロキシはちゃんと設定しているからネットにはちゃんと繋がっているのに。

と思ったら、gitにもプロキシを設定しないといけないんですね。

設定と解除の仕方

テレワークをすることも多いのでgitのプロキシの設定と解除をそれなりの頻度で行います。
そのため自分用メモを残します。

gitのプロキシ設定

git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy https://proxy.example.com:8080

gitのプロキシ解除

git config --global --unset http.proxy 
git config --global --unset https.proxy 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【git】リモートリポジトリの設定方法

本記事の内容

開発を開始した後からリモートリポジトリを設定する方法。
私自身AngularやReactなどを利用することが多いため、こうした方法が必要。

リモートリポジトリの確認

以下のコマンドで設定しているリモートリポジトリを確認することができる。
リモートリポジトリが設定されていなければ実行しても何も表示されない。

$ git remote -v

リモートリポジトリの設定

以下のコマンドでリモートリポジトリを設定する。

$ git remote add リポジトリ名 リポジトリのURL

以下に実行例を示す。
なお、実行例はリポジトリ名がexampleで、Azure Reposを利用した場合のURL。
URLは利用しているコード管理ツールにより変更し、リポジトリ名はご自身で作成したものに変更すること。

$ git remote add example https://hoge@dev.azure.com/hoge/huga/_git/huga

設定したリモートリポジトリの指定したブランチにpushする

前の手順で設定したリモートリポジトリにpushする。
以下のコマンドを実行。

$ git push -u リポジトリ名 ブランチ名

以下に実行例を示す。
なお、実行例はリポジトリ名がexample、ブランチ名がfeature/prodの場合のもの。

$ git push -u example feature/prod
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git メモ

Gitに関する個人用メモ。

全体の流れ

作業領域(ワーキングツリー)
 ↓
ステージング領域(インデックス)
 ↓
ローカルリポジトリ
 ↓
リモートリポジトリ(GitHub等)

作業領域→ステージング領域

$ git add <ファイル名>

指定したファイルをステージング領域に追加。

$ git add .

変更されたファイルや新規作成されたファイルを、一括でステージング領域に追加。

$ git rm <ファイル名>

ファイルの削除をステージング領域に記録。

ステージング領域→ローカルリポジトリ

$ git commit

ステージング領域のファイルを、ローカルリポジトリに登録(コミット)する。コマンド実行後にコメントの入力を求められる。

$ git commit -m "コメント"

コミットとコメント入力を同時に行う。

ローカルリポジトリ→リモートリポジトリ

  1. リモートリポジトリ(GitHub等)のURL取得
  2. ローカルリポジトリからプッシュ

の流れで行う。

リモートリポジトリのURL取得

$ git remote add origin <リポジトリのURL>

originは任意の文字で良い。URLをoriginに格納するイメージ。

ローカルリポジトリからプッシュ

$ git push origin master

masterは、リモートリポジトリのブランチ名を表す。
origin(=リポジトリURL)/master(=ブランチ名) にファイルを格納するイメージ。

リモートリポジトリ→ローカル にファイルを持ってくる

  1. ローカルリポジトリが存在していない場合
  2. ローカルリポジトリが既に存在する場合

でやり方が異なる。

ローカルリポジトリが存在していない場合

$ git clone <URL>

これにより、ローカルリポジトリが作成される。
URLの後にディレクトリ名を指定すると、指定した名前で作成される。

ローカルリポジトリが既に存在する場合

$ git remote add origin <URL>
$ git pull origin master

こちらは、他の人が更新したファイル等、必要なものだけ持ってくるイメージ。
(因みに、空のディレクトリを作成後に$ git initして、その後に上のコマンドを実行すると$ git cloneと同じ結果になる。)

今の状態を確認する

$ git status

Branch

Branchの作成

$ git checkout -b <ブランチ名>

この場合、ブランチ作成と同時に移動する。
単に作成する場合は下記。

$ git branch <ブランチ名>

Branchの一覧表示

$ git branch

Branchの移動

$ git checkout <ブランチ名>

Branchの削除

$ git branch -d <ブランチ名>

Branchのマージ

$ git merge <ブランチ名>

commitの履歴を見る(ローカルリポジトリ)

$ git log

基本形

$ git log --oneline

一行で表示する

$ git log -n 3

数を指定して表示(新しい順)

$ git log -p

差分を表示する

$ git log -p <ファイル名>

ファイルの差分を表示する

差分の確認

作業領域とステージング領域の差分

$ git diff

ステージング領域とローカルリポジトリの差分

$ git diff HEAD

リモートリポジトリの確認、変更

リモートリポジトリの名前とURLを表示

$ git remote -v

リモートリポジトリのURLを変更

$ git remote set-url origin <URL>

Gitの管理対象からの除外

  • まだGitの管理対象ではない場合
  • 既にGitの管理対象となっている場合
  • 既にGitの管理対象となっており、ファイルの物理削除も行う場合

で、少々手順が異なる。

まだGitの管理対象ではない場合

.gitignoreファイルを作成し、対象外にしたいファイルやディレクトリを記載する。

既にGitの管理対象となっている場合

.gitignoreファイルへの記入+以下のコマンドを実施

$ git rm --cached <ファイル名>

-rオプションを付けるとディレクトリを対象にできる。

既にGitの管理対象となっており、ファイルの物理削除も行う場合

$ git rm <ファイル名>

この場合ファイル自体が無くなるので、.gitignoreファイルへの記載は不要。
また、-rオプションを付けるとディレクトリを対象にできる。

変更の取り消し

この方の説明が非常に分かり易い。
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe

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

「暗記」ダメ!!!! 絶対!!!!それって本当ですか?

暗記ってダメなの?

学習をしていく中で1度は耳にする

「暗記」はダメ

といった論調があると思います

最初に結論を言っておくと私はこの記事で
暗記を全面的に否定するのではなく、拾ってくる情報リソースの多くで頻出している「単語」や「概念」を意図的に暗記したほうが(集中的に学習する)後の学習効率、開発効率が上がる。と伝えたいです。

想定読者

・自分が初学者と思っている方
・暗記してる事に自覚がある方
・PHP初学者

私の背景

半年前の私は

・HTMLって何
・PHP何それ弱そう
・プログラミング=ホームページを作る事でしょ?

といったようにプログラミングに関してほとんど無知の状態でした。
今では半年間毎日8時間の学習を継続しているので、流石にその状況からは抜け出せたのですが、当時は全くの初学者でした。

学習方法に関しては効率は置いといて挫折しない自信はあったので独学を選択し、主にネットでPHPの教材を購入して学習を行っていました。

少し話がそれますが、この半年でオンラインなどの交流会で10人前後の方にスクールを卒業されての感想を伺ったのですが、その方々の満足度は大変高い印象でした。
ただし、接頭辞的な感じで「挫折しない為には」といった言い回しをされる方が多い印象でした笑

私が半年間独学をしてきた経験と周りの卒業された方の意見を合わせて考えると時間効率を求めるならスクールは大いにありだと思います。
スクールを通う段階としてはプロゲートで5つくらいの言語を一通りやってみてからでいいのかな〜といった印象です。
お金に余裕があって少しでも一人でやる自信がないと思っている方は即決でスクールに通う事を選択した方が絶対にいいです(別にスクールの回し者ではありません笑。なんならエンジニアyoutuerみたいに一回くらい企業案件やってみたいです。この動画はテックアカ、、、、?)

さて本題に戻ります。

私はスクールには通いませんでしたがネットで教材を購入しそれを独学しました。その教材の中には「暗記してください」などとは書かれて言いませんでしたが、重要ポイントとして取り上げられているTipsはたくさんありました。今教材を見返してもその部分(その周辺の知識)を学習初期の段階で、暗記しておけば後の開発効率はよくなるだろうなー。というのが私の意見です。
(ただし、最初からそこだけを集中して学習するよりかは、一般的な書籍や、Udemyなどの動画講義を一通り終えた後に重要部分を集中的に学ぶ感じが良いかと思います。)

要するに何が言いたいかと言うと

単語レベルの理解はもちろん、多くの人が共通して主立って「重要」と言っている事は四の五の言わず暗記した方が後の開発効率がスムーズになる。

と言うのが私の意見です。

そんなの当たり前だろ。。記事にすることじゃないよね。。と思われるかもしれませんが

プログラミング初学者の方で
・「暗記」をひとまとめにして「悪」と捉えている
・「暗記」って本当にダメなのか疑心暗鬼になっている

方は少なくないと思い、この記事を書きました。

少なからず私は学習初期の段階で様々な情報に触れて
「暗記は効率悪いんだ」と一括りに悪いイメージをもっていました。

暗記しなくてもいい事

こんな事を偉そうに言っていますが基本、暗記する事は圧倒的に効率が悪いと思います。
そこで、具体的に効率が悪くなる項目を大きく3つに分けて解説していきたいと思います。

※前提として忘れないで頂きたいのはこれは学習して半年程度且つ実務未経験者の意見です?また、PHPやLaravel以外の言語に関しては詳しくないのでご了承ください。笑

1. コードの書き方を暗記する
  私が考えるに暗記してはいけないと情報発信されている方の本質的部分はここだと思います。
  ここは私が細かく言うまでもないですが、効率が悪く、キリがないですよね。笑
  これをやってしまっている方がいたら今すぐにその習慣を辞めて、コードを書いて覚えましょう!
  無心で書き続けていればいつの間にか覚えます。必ずです。

2. 開発環境の構築の仕方
  これはキリがないとか効率が悪いとか言うより初学者のうちにここを重点的に覚えようとすると、挫折率が上がってしまうかと思います。
  サーバーやネットワークの知識が必要となってくるので初学者の段階は
 「そう言うものを使っているんだな」程度の理解でいいのではないでしょうか。あなたの目的に沿った学習を優先しましょう

3. 関数を全て覚えようとする
  これもコードを暗記するに近いですが、仮に全て覚えても一生使わないものも出てくる可能性があり且つ効率が悪いからです。
  経験上、使用頻度の高い関数はコードを書いて入れば勝手に覚えます。つまり使用頻度が高い=重要度の高い関数と言う認識で良いかと。

暗記した方がいい事

さて、今度は逆に暗記した方がいい事について少しみていきましょう。
冒頭でも述べましたが、暗記をした方が良い内容は 拾ってくる情報リソースの多くで頻出している「単語」や「概念」の事でしたね。

では具体的にはどう言った単語や概念が当てはまるのでしょうか。
私の経験から「早めに覚えておいてよかった」「ここは早めに覚えておけばよかった」という主観から例をあげ解説します。
※ここからはさらに個人的主観が強くなりますでご了承ください
一応以下の内応は、PHP言語を対象としていますの

if文/繰り返し文/関数/引数/戻り値/変数
と言ったどのプログラミング言語でも共通する基礎の部分は除きます

ざっくりですが私は以下2点の理解を優先的に深める事をお勧めします。

1.$GETと$POST(HTTP通信とスーパーグローバル変数の扱い方)

2.データベースは何をしているか

詳しくは次の段落で書いていきます。

$GETと$POST

 [なぜこれを覚えておいた方が良いのか]

 それはPHP言語でCRUDを実装する時に超頻出の概念だからです。
 (CRUDとは、システムに必要な4つの主要機能である「Create(生成)」「Read(読み取り)」「Update(更新)」「Delete(削除)」の頭文字を並べた用語です。)
 CRUDはWEBアプリ制作する上で基本的な考え方になります。

 PHPとよく比較されるプログラミング言語が、JavaScriptです。この両者はスクリプト言語でも、動作については全く異なります。

 JavaScriptはHTMLやCSS、画像と同じようにブラウザを表示しているPCにファイルをダウンロードしてから実行し動作するのに対し
 PHPはWebサーバ上にファイルを置いて、以下の順で実行されます。

 1.ブラウザを見ているユーザがクリックなど何かの操作をする

 2.その動作を受けたプログラムがサーバで動作する

 3.動作結果をレスポンスとして、インターネット経由で送り、ブラウザ上にHTMLを表示する
 
このようにPHPのような言語は、サーバサイドのプログラミング言語と呼ばれ、PHPはサーバー側で動くプログラミング言語でこの全体の処理の中でも、$_GETと$_POSTは超頻出です。つまりこの2つの処理が何をしているのかを意識的に「暗記」する事はPHPを早く上達する上では効率が良いと言えます。(暗記より理解という言葉を使う方がいい気がしてきました笑)
 

 GETやPOSTについてもっと詳しく知りたいと言う方はこちらの書籍を読んでみるのもいいかと思います。
 HTTP通信についての理解が深まりクライアントとサーバーが裏でどんな事をやっているかのイメージがつくかと思います。
www.amazon.co.jp/dp/4774142042

データベースは何をしているか

データベースを扱うアプリケーションでは「CRUD」のアクションが基本となります。
つまり、データベースに対して行うアクションは、

・データベースにデータを「新規登録」する、
・そのデータを「読み出す」、
・そのデータを「変更し上書き」登録する、
・そのデータを「削除」する、

という、「基本この4つしか無い」ということです。

つまりこの流れのイメージを意識的に暗記する事でコードを書いている時に、今何やっているかの把握ができ結果として開発効率が上がると考えます。

[補足]
個人的にはSQL文法もスラスラ書けるようになるまで暗記しておいた方が効率が良いのではと思っています。これも超頻出なので。笑

最後に

まとめとして、頻出する単語や概念、その周りの流れを最初に覚えてしまった方が結果的に効率が上がると言う事です。

本記事とは少しずれますが、影響力のある発信者の意見や、ネットに転がっている情報を全て鵜呑みにするのではなく、その情報を一度は自分の頭に持ち込んで、処理して自分なりの答えを導き出すと言う事も重要です。

この「脳に意識的に負荷を与える習慣」ができていると、例えばエラー時にもイライラしなくなると思います。(エラーでイライラしてしまう人は他責思考が強い人だと思う)
この事は自戒を含めて書き残しておきます思います。

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

Git リモートブランチを削除する

目的

  • リモートブランチを削除する方法をまとめる

前提情報

  • 紹介するコマンドを実行するとリモートブランチが即座に削除されるので注意する。

詳細

  1. Git管理されているディレクトリに移動する。
  2. 下記コマンドを実行してリモートブランチを削除する。(本コマンドを実行後すぐにリモートブランチが削除されるので注意すること)

    $ git push --delete origin ブランチ名
    
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHubでフォークしてクローンする

フォークを使うとき

他の人のリモートリポジトリに編集を加えたいとき、いったんフォークで自分のアカウントにコピーしてくることで、元のリポジトリに影響を与えずに編集することができます。
このように、作業をリモートリポジトリのソースから始める場合に使われます。

OSSなどの不特定多数の人が開発するようなリポジトリでは、フォークしてから作業をすることで、意図しないコミットを防ぎます。対して会社組織などでの開発では、わざわざフォークする手間を省き直接プルリクを送る、というワークフローが多いようです。

ローカル環境から作業を開始する場合は、管理したいディレクトリで「git init」してリポジトリを作成してから始めます。

フォークする(Fork)

フォークとは他の人のリポジトリを自分のアカウントへ複製することです。
英語の「Fork」とは日本語で「分岐する」という意味です。食器のフォークも途中で分かれているのでそのイメージと同じです。

githubからフォークする例

フォークしたいリポジトリで、「Fork」ボタンをクリック。

5F88DC6D-2B38-43E5-A03D-9165CA7E9429.png

これだけでフォーク終わりです。あっけない…!
このように、自分のアカウントにリポジトリがコピーされました。

4AE3699D-16CB-4A4E-AB74-FC52B1498753.png

クローンする(Clone)

自分のアカウントのリポジトリで「Code」というボタンをクリックします。
転送プロトコルを「HTTPS」「SSH」「GitHub CLI」の中から選べますが「HTTPS」にしてURLをコピーします。(バインダーのようなアイコンをクリックするだけでクリップボードにコピーされます)
image.png

ソースツリーを使いローカルにクローンする場合

3E9BA699-8FB8-4DB6-8F26-2A59F815829D.png
image.png

gitコマンドでの場合

git clone <クローンしたいリポジトリのURL> <クローン先のディレクトリ(省略可)>

コピーしてきたいディレクトリに移動して、git clone <先ほどコピーしたURL>を実行すると、そのディレクトリに、リポジトリと同じ名前のフォルダが作成されファイルがコピーされてきます。

作業する

これで開発を始める準備ができました。
ブランチを切って作業を行います。

参考

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