MinEMemO
🏷️「Git/GitHub 」Tag 記事一覧(4 posts)
【Git/GitHub】ファイルの状態をブランチ切り替えで変更できるようになるタイミング

2023-03-24

はじめに GitHubで動作確認用のブランチを作ったときに、あれ?mainとブランチ切り替えてもローカルのソースの状態が変わらない。ってなったので、ファイルの状態をブランチ切り替えで変更できるようになるタイミングを調べました。 結論 ファイルの状態をブランチ切り替えで変更できるようになるタイミングは・・・ git commit したタイミング です。 ブランチをつくっただけ、git add でインデックスに登録しただけでは、ローカルのソースをブランチ切り替えで変更出来ませんでした。 はっきりわかっておけば安心なので、メモがてら残しておきます。
【Git/GitHub】GitHubにファイルを上げないようにする方法

2020-06-09

はじめに Gitでバージョン管理をしている場合に、GitHubにあげたくないファイルがあると思います。 例えばパスワードなどが記載されていたりするファイルなどですね。 その時にGitのバージョン管理から外す=上げないようにするための方法を記載します。 Gitのバージョン管理から外す方法 .gitignoreという名前のファイルを作成する バージョン管理から除外したいファイルやフォルダがある階層に.gitignoreを置く .gitignoreに除外したいファイルのパスを記載する .gitignoreファイルの記載例 gitignore # #はコメントです。以下は一例なので、そのほかの記載はネットなど見てみてください。 # 指定したファイルを除外 #.gitignoreがおいてある階層のindex.htmlのみが除外される / index.html # 指定したファイルをすべて除外 #.gitignoreがおいてある階層配下でindex.htmlというファイル名を全部除外する index.html #指定したディレクトリをすべて除外 #.gitignoreがおいてある階層配下でdirというフォルダ配下を全部除外する dir / .gitignoreの特徴の一例 .gitignoreは複数のディレクトリに置くことができます 深いフォルダの.gitignoreが優先されます 個人的に上記を踏まえ、ディレクトリごとに簡単な記載で.gitignoreファイルを作成してもよいのかなと思っています。 慣れてきたら、まとめて無駄なく書きたい気持ちはありますが。 以下のサイトが参考になるので、もっと詳しい内容を知りたい場合はぜひ参考にしてみてください。 [Git] .gitignoreの仕様詳解 A collection of .gitignore templates ※公式の .gitignore のテンプレート集です。
【Git/GitHub】開発中の主な流れとコマンド

2020-06-07

はじめに 個人でGit、GitHubを使ったことはあるのですが、現職ではGitが採用されていないためチームでGitを使って開発するときにどういう風に使うかを具体的に知りたくて勉強しました。 今回は実際にGitを使いながら開発を行う際の流れと主に使うコマンドをまとめていきます。 今後自身で使っていく過程で、知識がアップデートされたら内容も更新していくかもしれません。 不備不足あればアドバイスいただけると、とてもうれしいです。 よろしくお願いします😀 開発中のGitコマンドの流れ すでに一度リモートリポジトリから git clone などをおこなっており、ローカルとリモートの同期がとれている前提です。 Gitでバージョン管理を始めるときに最初に行うコマンドについては以下を参照してください。 [【Git/GitHub】Gitでバージョン管理を始めるときに最初にするコマンド](../ 1. 現在の状態を確認し把握する 作業前に以下のコマンドを適宜用いて、状況を確認して作業に入ります。 git branch 今どんなブランチが存在するか確認するコマンドです。 ブランチ名の一覧が表示されたときに * がついている箇所が今いるブランチになります。 #ローカルブランチの一覧を表示git branch #ブランチを新規作成git branch ブランチ名 #ローカルとリモートの全てのブランチを表示git branch -a #リモートブランチの一覧を表示git branch -r ブランチとは 開発者ごとの作業フォルダのようなものです。 おおもとのmasterブランチから 「git branch ブランチ名」 を実行することで作業者専用のブランチを作成し、他の人に影響しない、かつ自分も影響を受けない状態で開発を進めることができます。 修正が完了した場合は、基本的にブランチをリモートリポジトリにpushして、プルリクエストを行い、コードをチェックしてもらった後に、masterブランチへ統合するような流れになります。 git status 変更されているファイルがないかを確認するコマンドです。 変更したけど git add されていない git add したけど git commit されていない gitも認識していない新規ファイルがある などを確認できます。 #現在の変更状況を確認git status #現在の変更状況を短い形式で表示できますgit status -s (見れたらかっこいいので個人的に使いたい笑) 特に何もなければ nothing to commit, working tree clean と表示されます。 ※コミットするものは何もない、作業ツリーはクリーンです。のような意味 git diff ファイルの変更差分を確認するコマンドです。 #git addする前の変更分を表示(ワークツリーとステージ)git diff#ファイル名の指定もできますgit diff ファイル名 #git add した後の確認(ステージとリポジトリ)git diff --staged ※ネットでは git diff –cached のほうがよく出てくるが出力結果は同じでした 用語について ワークツリー:作業中のPCフォルダのこと ステージ: git add した内容が保存される場所 リポジトリ:git commit した内容が保存される場所 git log 変更履歴(git commitしたもの)を表示する commit:コミットID Author:作成者 Date:日時 上記と git commit 時のコミットメッセージなどが表示されます。 上から順に新しいものになります。 #変更履歴を確認git log #1行表示 git log --oneline #ファイルの変更差分を表示git log -p ファイル名 #表示するコミット数を制限する(最近のを見たいときは数値をしぼったりする)git log -n コミット数 2. ブランチを作成し切り替える(作業ブランチに移動する) 作業用のブランチを作成し切り替えます。 1. git branch ブランチを確認するコマンドですが、ブランチを新規作成するときも使います。 #ブランチを新規作成git branch ブランチ名 2. git checkout git branchで今いるブランチが * で表示されます。 自身の作業するブランチにいない場合は切り替えます。 #ブランチ切り替えgit checkout ブランチ名 # 新規作成+切り替えを同時に行うこともできますgit checkout -b 新ブランチ名 git checkout はブランチ切り替え以外にファイルの変更の取り消しもできます。 以下のようなコマンドになります。 #ファイルへの変更を取り消すgit checkout -- ファイル名#ディレクトリへの変更を取り消すgit checkout -- ディレクトリ名#全変更取り消しgit checkout -- . ※- -はブランチ名とファイル名をGitが判別するために記載が必要です。 ※前回git addした内容に戻すというような処理が行われるそうです。 (前回のステージと同じ状態になる=更新前に戻る) 作業用のブランチへの切り替えが完了したら、いよいよローカルフォルダ(自身のPCフォルダ)で作成や編集です🧐 3. ファイルの編集が完了したらGitに記録 作業用のブランチでファイルを編集した後は、Gitに変更を記録します 1. git add ステージといわれる場所に記録したいインデックス(変更内容)を記録します。 ※git commit 前の準備を行うような場所 #全ファイルをステージに追加git add .#ファイル名、ディレクトリ名の指定もできますgit add ファイル名git add ディレクトリ名 なお git add の取り消しはこちらです。 #ステージ(add)を取り消したいgit reset HEAD ファイル名 インデックスの記録で行われることの概要 リポジトリに作業したファイルを暗号化+圧縮化した「ファイル1」が作成され、 ステージに今回の作業ファイルは「ファイル1」だと紐づけたものがインデックスとして保存されます。 2. git commit リモートリポジトリにあげる(git push)前に必要なコマンドです。 git addでステージ作成したインデックスをもとにツリーを作成し、コミットといわれる情報をリポジトリに保存します。 #リポジトリに変更を記録(ツリー、コミット作成)git commit -m "コミットメッセージ" ※コミットメッセージは更新内容を簡潔に短く書きましょう。 ※Windowsのコマンドプロンプトだと日本語が表示できなかったです。 # -m がない場合はテキストエディタかコマンドプロンプト上でメッセージを記載する必要があります。git commit#コミットメッセージを -m で改行したい場合は -m を改行したいポイントで追加します。git commit -m "1行目" -m "2行目" #ファイルの変更内容をcommit実行前に確認できますgit commit -v #直前のコミットを取り消したい、やり直したいgit commit --amend 直前のコミットを取り消し(amend)について Push済みのコミットは戻したらいけません。 Pushした後に誰かがクローンしたら、履歴が違うのでクローンした人があげれなくなるそうです。 そのためPushしたコミットは修正しないほうが良いそうです。 Push後の修正はgit commitでもう一回今の状況をコミットするが正解 です。 コミットに入っている情報 ツリー 作成者 日付 メッセージ add、commitまでしたときにリポジトリがもっているデータ 暗号化+圧縮化されたblobファイルのハッシュID ツリー コミット この三つを「Gitオブジェクト」と言うそうです。 ※確認するコマンドもあります git cat-file -p <オブジェクト名> ハッシュIDとは ヘッダー(ファイル内容の文字数など、ファイルのメタ情報)とファイル内容を、SHA-1というハッシュ関数で40文字の英数字に変換したもの。 ハッシュIDのうち、先頭2文字をディレクトリ名に、残り38文字をファイル名にして保存されています。保存先はローカルの .git/objects という場所です。 4. Gitへの記録が完了したら、リモートリポジトリにアップする いよいよリモートリポジトリにアップします。 ※git push する前も「1. 現在の状態を確認し把握する」で紹介しているコマンドを利用して、状況の確認はしておきましょう。 git push ローカルリポジトリで行った編集内容をリモートリポジトリにアップします。 git add、git commit を行ったものがアップされます。 git push リモート名 ブランチ名 というコマンドになります。 #ブランチ名は自分が作成したブランチ名が主になると思います。git push origin ブランチ名 よく見るpushコマンド「git push origin master」は「originというリモート名のmasterというブランチにpushする。」という意味になります。 チーム開発ではプルリクエストを行い、masterへ統合される流れがおおいので、masterを指定することはあまりないと思います。 リモート名のoriginとは リモート名とは「アクセス先のリモートリポジトリのデフォルトの名前」です。 以下のページのように初回に 「git remote add origin リモートリポジトリのURL​」 でリモートリポジトリのURLをoriginというリモート名で紐づけるのですが、originはGitのデフォルト値のようで一般的にoriginになっていることが多いようです。 【Git/GitHub】Gitでバージョン管理を始めるときに最初にするコマンド なお、リモート名の確認は 「git remote」で確認できます。 これでローカルリポジトリの内容が、リモートリポジトリにアップされました。 GitHubにログインしてWEB上でリモートリポジトリを確認すると、反映されているはずです。 プルリクエストはGitHubにログインしてWEB上で行います。 サクッと手順記載するので、参考になれば幸いです。 プルリクエスト(Pull requests)をする場合 プルリクエストの仕方 GitHubへ移動 Pull requestsをクリック New Pull Requestをクリック compareには自身が作成したブランチを選択する※compareがbaseにとりこまれます。 baseが統合先のブランチでcompareには自身が作成したブランチを選択するケースが多いと思います。 適宜コメント入力+Reviewersで誰にレビュー依頼するかを選択する Create Pull requestをクリック ここまでが、開発中によく使うコマンドや流れになります! 他に作業前の同期や調整時に使うコマンド(git fetchとかpullとか)もありますが、また後日記載していきます
【Git/GitHub】Gitでバージョン管理を始めるときに最初にするコマンド

2020-06-01

はじめに 個人でGit、GitHubを使ったことはあるのですが、現職ではGitが採用されていないためチームでGitを使って開発するときにどういう風に使うかを具体的に知りたくて勉強しました。 今回はGitでバージョン管理を始めるときに最初にするコマンドをまとめておこうと思います。 ※前提としてGitがインストール済でGitHubアカウントは既に持っている状態 ※200606にolの番号リストで表示していた部分をh3に置き換えました。 それでも微妙だけど、単純に使っていくため致し方なし😐 GitとGitHubとは ざっくりですが、簡単にいうと以下のようなものです。 Git ファイルをバージョン管理する仕組み GitHub Web上でファイルの保管、共有する機能 既存のプロジェクトから作業を始める場合 PCの作業フォルダにコマンドで移動 cd ディレクトリ名 ※Gitコマンドではありません。 Windows/Macの共通のコマンドでフォルダ移動するためのコマンドです​ ローカルリポジトリにリモートリポジトリの内容をコピー(CLONE) git clone リポジトリ名​ ※リポジトリ名はリポジトリのhttps~~.gitのURLでOK リポジトリとは バージョン管理においてファイルやディレクトリを保存する場所のことをリポジトリといいます。 ローカルリポジトリ:作業者のPC内のリポジトリ リモートリポジトリ:Web上のGitHubのリポジトリ 新規プロジェクトから作業を始める場合 PCの作業フォルダにコマンドで移動 cd ディレクトリ名 ※Gitコマンドではありません。 Windows/Macの共通のコマンドでフォルダ移動するためのコマンドです 移動先のフォルダでローカルリポジトリを作成 git init​​ GitHubでリモートリポジトリを新規作成 リモートリポジトリがない場合はWebでGitHubにログインし、リポジトリのページへアクセスし 「New」 をクリックすると作成できます。 リポジトリ新規作成時にReadmeファイルを同時に作成するチェックボックスがあります。 チェックせずに進むとローカルリポジトリに紐づけるために、以降必要なコマンドを表示してくれるので参考にしてみてください。 以降の git remote や git push の流れなどが書いてあります。 originという名前にリモートリポジトリのURLを紐づける git remote add origin リモートリポジトリのURL​ git remote をしなかった場合は、毎回リモートリポジトリのURLを打たないといけなくなります。 またoriginとはGitの慣用句みたいなもので、アクセス先のリモートリポジトリのデフォルトの名前(リモート名)です。 例えば git push origin master というコマンドなら、リモートリポジトリのmasterブランチへpushするという意味になります。 ローカルリポジトリにファイルを作成し、リモートに初回プッシュをしておく git push -u origin master -uについて 今後pushするときに origin master を以後省略できるようにするためのpushコマンドのoptionです。 git pushのデフォルトが origin master なので省略できます。 -uは 初回のみ 使います。 これでGitでバージョン管理を行う準備ができました。 このあとは add commit push など様々なGitコマンドを利用しバージョン管理を行いながら開発をすすめます 今回参考にさせていただいた教材について 教材はUdemyの有料の動画教材です。 Git: もう怖くないGit!チーム開発で必要なGitを完全マスター メンターのPCがMac、テキストエディターがAtomなので環境が違うと少し詰まりますが、個人的には学習を進める上では大きな障害にはなりませんでした。 ※Windowsの場合はファイル操作などの簡単なコマンドを調べる必要はあります。 ※Git利用時にAtomを紐づけてるのですが、私はVS CODEを使っており紐づけがうまくいきませんでした。 ※テキストエディターがなくてもGitコマンドの -m というオプションを使えば問題なく進めます。 内容自体はとてもわかりやすいので、本などから入るよりおすすめ です。 操作しながら学べて、メンターの経験からこうしてるという話もあるので理解がしやすいです。 メンターの山浦清透さんにはとても感謝しております。 ありがとうございます。
profile_icon
taka
プログラマー
いつでも転職希望の業務経験6年目(2022時点)のエンジニアです。 仕事の合間にすこしずつ転職活動はしていますが、条件が合う場合ぜひTwitterなどでご連絡頂けると嬉しいです。 希望条件は現在の年収を下回らない(手取り31万以上)、基本残業なし、ある程度保守運用が管理されていて、その経験ができる職場で働きたいです。 (管理がされてない案件が多く、心的安全が少ない仕事が多いので、ある程度安心して働きたいと感じています。) 経験言語はHTML、CSS、javascript、PHP、MySQL、Docker、Vuejs、Laravel このブログは完全に自作で静的ジェネレータで作りました。 この範囲で言えば React.js Gatsby.js GraphQLも経験があります。