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

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 ディレクトリ名
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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~3
git reset --hard HEAD~3

結果

d <- HEAD

戻したけど、やっぱり戻すのをやめる

プッシュ済みであれば、プルすればOK

git pull

リモートに反映したい

元のコミットは、別ブランチがない限り消えるので注意
プッシュ先が仮にdevブランチとする

git push -f origin dev

結果

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

Gitの基本4

プッシュ
ローカルリポジトリで加えた変更をリモートリポジトリに同期させること。
ローカルでコミットが終わり、、リモートに変更を同期させたい場合は必ずプッシュを行う必要がある。

ブランチ、メリット
リポジトリで管理をしているプロジェクトの履歴の一つ。自分の作業している場所のこと。
ブランチは独立しているため、それぞれのブランチが干渉していない。

プル
リモートリポジトリの変更履歴をローカルリポジトリに反映させる操作のこと。
他の開発者による変更がリモートリポジトリに反映された後や、自分でマージを行った際に必ずプルの
作業を行う必要がある。

マージ
ブランチとブランチを結合すること。結合する側のブランチを結合される側のブランチにマージを行うと、結合する側のブランチの内容が結合される側のブランチに反映される。

デプロイ
ソースコードをAWS等の本番環境に設置し、稼働させること。

コンフリクト
複数の人が同じ箇所を編集してしまい、変更箇所を自動では判断できずにマージできなくなること。
競合が起きる条件は、二つのブランチで同じ箇所のソースコードを編集している。片方のブランチをマージし、もう片方のブランチを同じブランチにマージする。この二つの条件が起こったときに、競合は発生する。

コンフリクト解決のフロー
1.コンフリクト箇所を現在の変更があるブランチに反映。
2.コンフリクト箇所を修正
3.コンフリクト解決をコミット
4.現在の変更があるブランチをマージ

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

【超簡単】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のリモートリポジトリ 名.git

HTTPS通信で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 Key

Keyの欄にさっきコピーした公開鍵の内容を貼り付けて保存

テストでpushしてみる

cd "git initしたディレクトリ"
git push origin master

HTTPSの時と違い、パスワード等は問われない!

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

【初心者向け】VSCodeってクリックだけでgit_pushできるんです

はじめに

yukiと申します。DMMWEBCAMP にお世話になって、今は WEB エンジニアとして勤務しつつ、自分で仲間を集めてサービス開発したり、プログラミングの家庭教師したり毎日エンジニアライフをエンジョイしています。

未経験から目指している方向けのサポートやエラー質問なども引き受けておりますので、気になった方は DM へお願いします。

皆さんはテキストエディタは何を使っていますか?
私はずっとVSCodeを使っているのですが、最も先に知っておきたかったことで、後から気づいたことがあるので共有します。
それは、簡単にgit/githubの管理ができることです。

下にある謎のバー

当時の自分は、VSCodeをひらきながら、gitの管理は別ウィンドウのターミナルで行っていました。

まず、一つ目の気づきはVSCode自体にターミナルがついているということです。

vscode1.png

上記の画像の一番下、青い部分にマウスカーソルを合わせると、ターミナルが出てきます。。。
何かコマンドを打つ際は、こちらを是非利用してください。画面を切り替える手間がないのでとても便利です。
もちろん、ここでgitの管理もできます。

左にある謎のアイコン

ただ、git/githubの管理だけで言えば、もっと楽な方法があります。それは左側にあるツールを活用してあげることです。

vscode2.png

縦に並ぶ謎のアイコンたちの、3番目をクリックしてみてください。(もちろん、他も便利なので調べてみてくださいね。)

そうすると、今開いているディレクトリに.gitファイルがある(ローカルリポジトリになっている)場合、以下のような画面になります。

様々なマークやアイコンがありますが、簡単に述べますと、ここでgit addgit commit、他にも様々なコマンドがクリックで実行できます。

試しにやっていただきたい一連の流れ

- プラスマークのボタンを押し(git add)
- Messageのところにメッセージを書き(コミットのメッセージです)
- チェックボタンを押し(git commit)
- 点が三つある場所をクリックし、git pushを選んでみてください

これだけで、簡単にファイルの変更をaddしてcommitしてpushすることができました!

余談

かつて、いっつも左側のアイコンに謎の数字が出ていたのでエンジニアの方に聞いたところ、そのような管理方法があると知りました。
今でも活用している非常に便利な方法なので、是非今日からでもやってみてください。(__)

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

キャッシュを削除してもgitignoreが反映されない時は?

何をしても.gitignoreが反映されない!

という状態から、反映される状態に持っていけたので、備忘録を兼ねて記事にしました。

超忙しい人へ

.gitignoreの文字コード、おかしくない?

詳細(下にジャンプします)

キャッシュを消してもダメだった

一度pushしたファイルだったり、インデックスが残ってると反映されないらしいので、キャッシュを全消し。

git rm -r --cached .

改めて、

git add .

で、いつもは正常に反映される・・・はずだった━━━━

しかし今回ばかりは何をしても反映されない!

放り投げて寝ました

何時間も向き合って、あらゆるパターンを試してもダメ。
寝て起きて試してもダメ。

見てください。寝癖もダメって言ってます。
no_neguse.jpg

結論:文字コードを見直す

その.gitignoreくん、文字コードおかしくないですか?
UTF-8Shift-JISで書きましょう。

...

ムリダナ(・×・)と諦めかけていたら、
LELF_ignore.png
ん...?文字コードがUTF-16 LEで、改行コードがLFだと...?
意図せぬ文字コードになっています。
8CRLF_ignore.png
文字コードをUTF-8にしてあげたら、あっさり反映されるようになりました(改行コードもCRLFに変更しました)。
Shift-JISでも正常に反映されます。

原因とか

【原因】Windows PowerShell+giboの相性問題

今回は、Windows PowerShell上でgiboを用いて生成していました。
この組み合わせが問題みたい。

今回の.gitignoreの生成風景
gibo dump Python VisualStudioCode >> .gitignore

どうやら、Windows PowerShellgiboの組み合わせだと、デフォルトで出力が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も考えていませんでした。

まとめ

何してもダメな時、文字コードを見直してみてください。

コレに限らず、文字コードが原因でハマること、年に数回ありますよね。
今後も気を付けたいところです。

遅延増加したけれど沢山眠れたので、
yokunai.png

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

キャッシュを消してもgitignoreが反映されない時は?

何をしても.gitignoreが反映されない!

という状態から、反映される状態に持っていけたので、備忘録を兼ねて記事にしました。

超忙しい人へ

.gitignoreの文字コード、おかしくない?

詳細(下にジャンプします)

キャッシュを消してもダメだった

一度pushしたファイルだったり、インデックスが残ってると反映されないらしいので、キャッシュを全消し。

git rm -r --cached .

改めて、

git add .

で、いつもは正常に反映される・・・はずだった━━━━

しかし今回ばかりは何をしても反映されない!

放り投げて寝ました

何時間も向き合って、あらゆるパターンを試してもダメ。
寝て起きて試してもダメ。

見てください。寝癖もダメって言ってます。
no_neguse.jpg

結論:文字コードを見直す

その.gitignoreくん、文字コードおかしくないですか?
UTF-8Shift-JISで書きましょう。

...

ムリダナ(・×・)と諦めかけていたら、
LELF_ignore.png
ん...?文字コードがUTF-16 LEで、改行コードがLFだと...?
意図せぬ文字コードになっています。
8CRLF_ignore.png
文字コードをUTF-8にしてあげたら、あっさり反映されるようになりました(改行コードもCRLFに変更しました)。
Shift-JISでも正常に反映されます。

原因とか

【原因】Windows PowerShell+giboの相性問題

今回は、Windows PowerShell上でgiboを用いて生成していました。
この組み合わせが問題みたい。

今回の.gitignoreの生成風景
gibo dump Python VisualStudioCode >> .gitignore

どうやら、Windows PowerShellgiboの組み合わせだと、デフォルトで出力が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も考えていませんでした。

まとめ

何してもダメな時、文字コードを見直してみてください。

コレに限らず、文字コードが原因でハマること、年に数回ありますよね。
今後も気を付けたいところです。

遅延増加したけれど沢山眠れたので、
yokunai.png

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