- 投稿日:2020-11-04T23:02:04+09:00
Gitの基本 その2
gitで管理したくないファイルやディレクトリの除外設定をする
git initまたはgit cloneしたgit管理のルートディレクトリに
.gitignoreを格納する
複数人で開発する場合は、.gitignoreをcommitしておき、
プロジェクトメンバー全員で利用できるようにすると良いGitHubで提供しているテンプレートの取得
開発する言語やOS毎にgitignoreが予め用意されている
github/gitignore
例えばMacでJava言語を使った開発をしている場合は、
gitignore/Global/macOS.gitignore
gitignore/Java.gitignore
を1つの.gitignoreにマージして利用する
それぞれのファイルの中身は予め確認しておくこと.gitignoreの設定
例:リモートリポジトリURL=git@github.com:eizin6389/Git-Tutorial.git
.DS_StoreをGitで管理しない設定$ cd 任意のディレクトリ $ git clone git@github.com:eizin6389/Git-Tutorial.git $ cd 任意のディレクトリ/Git-Tutorial $ cat .gitignore .DS_Store $ git add .gitignore $ git commit -m "Add ignore pattern"既にGitで管理しているものを除外する
※削除した履歴は残りません
Git管理から除外し、ファイルは残す
git rm --cached [ファイル名]Git管理からファイルを除外し、ファイルを物理的に削除する
git rm [ファイル名]Git管理からディレクトリを除外し、ディレクトリは残す
ディレクトリ配下のディレクトリやファイルも併せて除外されます
git rm -r --cached [ディレクトリ名]Git管理からディレクトリを除外し、ディレクトリを物理的に削除する
ディレクトリ配下のディレクトリやファイルも併せて除外し、削除されます
git rm -r [ディレクトリ名]git addを取り消す
※取り消しの履歴は残りません
※特にリモートにpush済みのコミットに関して使うことはNGです。ファイルの内容は変更せずにgit addを取り消す
git reset [ファイル名]ファイルの内容を変更しgit addを取り消す
直前のコミット時と完全に一致した状態にファイルの内容を戻す
git reset --hard指定したコミットIDより後ろのコミット内容を取り消す
ファイルの中身はコミットした時の状態で残す
git reset [コミットID]指定したコミットIDより後ろのコミット内容を取り消す
ファイルの中身は、取り消した分を戻す
git reset --hard [コミットID]ワーキングディレクトリの追跡対象外ファイルを削除する
Gitで管理されていないファイルを削除する
削除対象を確認する
ディレクトリは対象外
git clean -n強制的に削除する
ディレクトリは対象外
git clean -fディレクトリも削除対象に加えて、削除対象を確認する
git clean -ndディレクトリも削除対象に加えて、削除対象する
git clean -fd直近のコミットのコミットメッセージの内容を修正する
git commit --amendコミットを打ち消すコミットをする
※コミット履歴に残ります
対象のコミットIDの内容を取り消し、取り消した事を履歴に残す
git revert コミットIDファイル名またはディレクトリ名の変更または移動
git mv ファイル名 git mv ディレクトリ名
- 投稿日:2020-11-04T16:43:04+09:00
gitで指定のコミットに戻りたい(reset)
前置き
メモ書きです。
gitで指定のコミットに戻りたいとき、方法は2パターンある。rebase
git rebase変更を戻すコミットをする。
安全。
ログが増える。reset
git reset変更自体を取り消す。
危険。
ログが消える。今回はresetの方を扱う。
ローカルで戻りたい
ローカルから頑張って書いたコードが消えるので注意。
プッシュしてあるなら戻すことができる。(後述)以下でdに戻りたい場合
a <- HEAD | b | c | d <- ここに戻りたいHEADから遡る指定方法は以下
a <- HEAD | b <- HEAD~1 | c <- HEAD~2 | d <- HEAD~3git reset --hard HEAD~3
結果
d <- HEAD戻したけど、やっぱり戻すのをやめる
プッシュ済みであれば、プルすればOK
git pullリモートに反映したい
元のコミットは、別ブランチがない限り消えるので注意
プッシュ先が仮にdevブランチとするgit push -f origin dev
結果
d <- HEAD
- 投稿日:2020-11-04T11:43:18+09:00
Gitの基本4
プッシュ
ローカルリポジトリで加えた変更をリモートリポジトリに同期させること。
ローカルでコミットが終わり、、リモートに変更を同期させたい場合は必ずプッシュを行う必要がある。ブランチ、メリット
リポジトリで管理をしているプロジェクトの履歴の一つ。自分の作業している場所のこと。
ブランチは独立しているため、それぞれのブランチが干渉していない。プル
リモートリポジトリの変更履歴をローカルリポジトリに反映させる操作のこと。
他の開発者による変更がリモートリポジトリに反映された後や、自分でマージを行った際に必ずプルの
作業を行う必要がある。マージ
ブランチとブランチを結合すること。結合する側のブランチを結合される側のブランチにマージを行うと、結合する側のブランチの内容が結合される側のブランチに反映される。デプロイ
ソースコードをAWS等の本番環境に設置し、稼働させること。コンフリクト
複数の人が同じ箇所を編集してしまい、変更箇所を自動では判断できずにマージできなくなること。
競合が起きる条件は、二つのブランチで同じ箇所のソースコードを編集している。片方のブランチをマージし、もう片方のブランチを同じブランチにマージする。この二つの条件が起こったときに、競合は発生する。コンフリクト解決のフロー
1.コンフリクト箇所を現在の変更があるブランチに反映。
2.コンフリクト箇所を修正
3.コンフリクト解決をコミット
4.現在の変更があるブランチをマージ
- 投稿日:2020-11-04T10:43:59+09:00
【超簡単】git github 接続方法
今回はHTTPS,SSH両方の接続方法を紹介してゆくぅ
【前提】
・gitダウンロード
・リモートリポジトリの作成【作業フロー】
①git init
②git ユーザーネーム、メールアドレス設定
③git remote 設定(HTTPSの場合)
④git remote 設定(SSHの場合)①git initする
cd gitで管理したいディレクトリ名 git init"git init"するとそのディレクトリに ".git"というディレクトリができてgit管理できるようになる。
②git ユーザーネーム、メールアドレス設定
git config --global user.email sample@〇〇.com git config --global user.name "your name"③git remote 設定(HTTPS)
HTTPS通信でリモートリポジトリと接続する場合
git remote add origin https://github.com/GitHubのユーザー名/GitHubのリモートリポジトリ 名.gitHTTPS通信でpushする場合
git push orign master 以下を問われる ↓ Username for 'https://github.com': ユーザー名入力 Password for 'https://xxyamatonxx@github.com': パスワード入力④git remote 設定(SSH)
①originの設定
②SSHのための鍵登録①originの設定
git remote add origin git@github.com:GitHubのユーザー名/GitHubのリモートリポジトリ名.git②SSHのための鍵登録
cd ~/.ssh ssh-keygen -t rsa -C hoge@example.com ←GitHubのメールアドレス 以下を問われる ※私は3つとも"Enter"だけのガバガバなアンサーです ↓ Generating public/private rsa key pair. Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:以下のファイルが生成されます
$ ls -l total 12 -rw------- 1 hoge hoge 1675 2月 23 15:06 id_rsa -rw-r--r-- 1 hoge hoge 404 2月 23 15:06 id_rsa.pub秘密鍵の権限を変更する!
sudo chmod 600 id_rsa公開鍵の内容をクリップボードに保存
cat id_rsa.pub 長蛇の文字列が出てくるGitHubにコピーしたのを登録する
GitHub上で以下の順にクリック
↓
・GitHubの右上の自分のアイコン => 設定(settings) => SSH and GPG Key => New SSH KeyKeyの欄にさっきコピーした公開鍵の内容を貼り付けて保存
テストでpushしてみる
cd "git initしたディレクトリ" git push origin masterHTTPSの時と違い、パスワード等は問われない!
- 投稿日:2020-11-04T09:14:23+09:00
【初心者向け】VSCodeってクリックだけでgit_pushできるんです
はじめに
yukiと申します。DMMWEBCAMP にお世話になって、今は WEB エンジニアとして勤務しつつ、自分で仲間を集めてサービス開発したり、プログラミングの家庭教師したり毎日エンジニアライフをエンジョイしています。
未経験から目指している方向けのサポートやエラー質問なども引き受けておりますので、気になった方は DM へお願いします。
皆さんはテキストエディタは何を使っていますか?
私はずっとVSCodeを使っているのですが、最も先に知っておきたかったことで、後から気づいたことがあるので共有します。
それは、簡単にgit/githubの管理ができることです。下にある謎のバー
当時の自分は、VSCodeをひらきながら、gitの管理は別ウィンドウのターミナルで行っていました。
まず、一つ目の気づきはVSCode自体にターミナルがついているということです。
上記の画像の一番下、青い部分にマウスカーソルを合わせると、ターミナルが出てきます。。。
何かコマンドを打つ際は、こちらを是非利用してください。画面を切り替える手間がないのでとても便利です。
もちろん、ここでgitの管理もできます。左にある謎のアイコン
ただ、git/githubの管理だけで言えば、もっと楽な方法があります。それは左側にあるツールを活用してあげることです。
縦に並ぶ謎のアイコンたちの、3番目をクリックしてみてください。(もちろん、他も便利なので調べてみてくださいね。)
そうすると、今開いているディレクトリに.gitファイルがある(ローカルリポジトリになっている)場合、以下のような画面になります。
様々なマークやアイコンがありますが、簡単に述べますと、ここで
git add
やgit commit
、他にも様々なコマンドがクリックで実行できます。試しにやっていただきたい一連の流れ
- プラスマークのボタンを押し(git add) - Messageのところにメッセージを書き(コミットのメッセージです) - チェックボタンを押し(git commit) - 点が三つある場所をクリックし、git pushを選んでみてくださいこれだけで、簡単にファイルの変更をaddしてcommitしてpushすることができました!
余談
かつて、いっつも左側のアイコンに謎の数字が出ていたのでエンジニアの方に聞いたところ、そのような管理方法があると知りました。
今でも活用している非常に便利な方法なので、是非今日からでもやってみてください。(__)
- 投稿日:2020-11-04T08:01:49+09:00
キャッシュを削除してもgitignoreが反映されない時は?
何をしても
.gitignore
が反映されない!という状態から、反映される状態に持っていけたので、備忘録を兼ねて記事にしました。
超忙しい人へ
.gitignore
の文字コード、おかしくない?キャッシュを消してもダメだった
一度pushしたファイルだったり、インデックスが残ってると反映されないらしいので、キャッシュを全消し。
git rm -r --cached .改めて、
git add .
で、いつもは正常に反映される・・・はずだった━━━━
しかし今回ばかりは何をしても反映されない!
放り投げて寝ました
何時間も向き合って、あらゆるパターンを試してもダメ。
寝て起きて試してもダメ。結論:文字コードを見直す
その
.gitignore
くん、文字コードおかしくないですか?
UTF-8
かShift-JIS
で書きましょう。...
ムリダナ(・×・)と諦めかけていたら、
ん...?文字コードがUTF-16 LE
で、改行コードがLF
だと...?
意図せぬ文字コードになっています。
文字コードをUTF-8
にしてあげたら、あっさり反映されるようになりました(改行コードもCRLFに変更しました)。
Shift-JIS
でも正常に反映されます。原因とか
【原因】
Windows PowerShell
+gibo
の相性問題今回は、
Windows PowerShell
上でgibo
を用いて生成していました。
この組み合わせが問題みたい。今回の.gitignoreの生成風景gibo dump Python VisualStudioCode >> .gitignore
どうやら、
Windows PowerShell
とgibo
の組み合わせだと、デフォルトで出力がUTF-16 LE
かつLF
になるみたいです。Gitは
UTF-16 LE
で書かれた.gitignore
を読むことができません。【対策】
Windows PowerShell
+gibo
は使わない
gibo
を利用するならWindows PowerShell
は避けた方良さそうです。代わりに、以下の組み合わせが良さそうです。
コマンドプロンプト
+gibo
Git Bash
+gibo
Macのターミナル
+gibo
【言い訳】Windows PowerShell
+gibo
は普段使っていない
普段、Macのターミナル
でgibo
を用いて.gitignore
を生成していました。
前項のとおり、Macのターミナル
+gibo
の組み合わせの場合、UTF-8
かつCRLF
で出力されるため、正常に反映されていました。
解決に何時間も要した最大の原因はコレです。
まさか文字コードが落とし穴だなんて、1μmも考えていませんでした。まとめ
何してもダメな時、文字コードを見直してみてください。
コレに限らず、文字コードが原因でハマること、年に数回ありますよね。
今後も気を付けたいところです。
- 投稿日:2020-11-04T08:01:49+09:00
キャッシュを消してもgitignoreが反映されない時は?
何をしても
.gitignore
が反映されない!という状態から、反映される状態に持っていけたので、備忘録を兼ねて記事にしました。
超忙しい人へ
.gitignore
の文字コード、おかしくない?キャッシュを消してもダメだった
一度pushしたファイルだったり、インデックスが残ってると反映されないらしいので、キャッシュを全消し。
git rm -r --cached .改めて、
git add .
で、いつもは正常に反映される・・・はずだった━━━━
しかし今回ばかりは何をしても反映されない!
放り投げて寝ました
何時間も向き合って、あらゆるパターンを試してもダメ。
寝て起きて試してもダメ。結論:文字コードを見直す
その
.gitignore
くん、文字コードおかしくないですか?
UTF-8
かShift-JIS
で書きましょう。...
ムリダナ(・×・)と諦めかけていたら、
ん...?文字コードがUTF-16 LE
で、改行コードがLF
だと...?
意図せぬ文字コードになっています。
文字コードをUTF-8
にしてあげたら、あっさり反映されるようになりました(改行コードもCRLFに変更しました)。
Shift-JIS
でも正常に反映されます。原因とか
【原因】
Windows PowerShell
+gibo
の相性問題今回は、
Windows PowerShell
上でgibo
を用いて生成していました。
この組み合わせが問題みたい。今回の.gitignoreの生成風景gibo dump Python VisualStudioCode >> .gitignore
どうやら、
Windows PowerShell
とgibo
の組み合わせだと、デフォルトで出力がUTF-16 LE
かつLF
になるみたいです。Gitは
UTF-16 LE
で書かれた.gitignore
を読むことができません。【対策】
Windows PowerShell
+gibo
は使わない
gibo
を利用するならWindows PowerShell
は避けた方良さそうです。代わりに、以下の組み合わせが良さそうです。
コマンドプロンプト
+gibo
Git Bash
+gibo
Macのターミナル
+gibo
【言い訳】Windows PowerShell
+gibo
は普段使っていない
普段、Macのターミナル
でgibo
を用いて.gitignore
を生成していました。
前項のとおり、Macのターミナル
+gibo
の組み合わせの場合、UTF-8
かつCRLF
で出力されるため、正常に反映されていました。
解決に何時間も要した最大の原因はコレです。
まさか文字コードが落とし穴だなんて、1μmも考えていませんでした。まとめ
何してもダメな時、文字コードを見直してみてください。
コレに限らず、文字コードが原因でハマること、年に数回ありますよね。
今後も気を付けたいところです。