- 1. 【Git】リモートリポジトリの過去のバージョンを取得
- 2. 2つのコミット間に変更されたファイルのリストを取得する
- 3. 独習Git読了のおしらせ
- 4. git設定〜使用<備忘録>
- 5. gitを使ったバージョン管理 シンプル版
- 6. 【Sourcetree】GitHubで管理したくないファイルの追跡停止方法
- 7. 【超初心者】GitコマンドでTab補完が効かない!?
- 8. 初心者によるGitとSourceTreeの基礎概念とインストールの流れ
- 9. bashのpromptにgitのブランチ名を表示する。(git-prompt.sh)
- 10. gitを使ったバージョン管理手順(社内ファイルサーバ+Win10)
- 11. Gitコマンド備忘録
- 12. GitHubのPersonal Access Tokenが期限切れした場合の対処
- 13. ブランチ毎にコミットメッセージのテンプレートを切り替えたい【Git】【prepare-commit-msg】
- 14. Unityでの開発における git worktree のすすめ
- 15. git
- 16. GitHub で PR をマージするときの 3 つのオプションの違いについて
- 17. GitHubからcreat-react-appしたアプリをクローンし別のPCで起動する方法
- 18. commitを整理したい
- 19. ローカルリポジトリのマージ済みブランチを一括削除する
- 20. よく使うgitコマンド
【Git】リモートリポジトリの過去のバージョンを取得
Github等のリモートリポジトリの過去のバージョンを取得する方法
# 1.過去のバージョンを確認
“`
git log <オプション>
“`# 2.過去のバージョンに戻す
1に表示された戻したいバージョンのコミットIDを使用する
“`
git checkout <コミットID># 例
git checkout 838dff8fsdfsdf8sdsdf8sd8fdsf8sdf8dg
“`
2つのコミット間に変更されたファイルのリストを取得する
コミットA→コミットBの間に変更されたファイルのリストを取得したい場合。
“`
git diff コミットA コミットB –name-only
“`
独習Git読了のおしらせ
## 始めに
Gitの勉強として、独習Gitを読みました。
やってみた各章の感想は、GitHubに学習記録用に作成したリポジトリに書きました。モチベーションの関係であったり、文体には気を付けてない殴り書きみたいな、
その場その場の感想が、つらつらと書かれているので興味があればどうぞ……。https://github.com/yasunori-kirin0418/Self_Study_Git
リポジトリには学習に必要なスクリプトを、一括でダウンロードするスクリプトを用意してあります。
これから独習Gitをやってみる方はご利用ください。## 本の全体を通しての感想
独習Gitという本は最初に説明があるのですが、コードを書きなれた人が、Gitというコマンドの使い方を理解するための本です。
ですので、最初の方ではコマンド操作その物の説明から始まったりと、結構ゆったり進行なイメージでした。そして、Gitのコマンドの仕様を理解することに軸を置いているので、なんとなくで使っているコマンドが省略系であることが分ります。
Gitという物を理解する為には良い本だと思います。主にリモ
git設定〜使用<備忘録>
久しぶりにgitを使うので、設定から改めて復習してみた。
まずは名前とメールアドレスの登録から。
“`
$ git config –global user.name “自分の名前”
$ git config –global user.email your.email@example.com
“`登録しているかどうかは以下の通り確認できる。
“`
$ git config user.name
$ git config user.email
“`レポジトリのセットアップ
“`
$git init
“`これでgit用のディレクトリが作成される。
全てをステージングエリアに追加する。
“`
$ git add -A
“`最初はステージング用のリポジトリに置かれ、コミットを待ちます。控え室みたいなものですね。
安全のため、いきなりコミットしないようになっているのです。
ステージングの状態を知るにはstatusコマンドを使います。
“`
git status
“`git addできたら、それをコミットしていきます。
-m”message”はメッセ
gitを使ったバージョン管理 シンプル版
ブランチを切る(ブランチ新規作成時のみ)
“`
git branch f1 master
git checkout f1
“`:::note
ここでは開発ブランチ名を「f1」とする
:::リモートリポジトリの最新の内容をローカルリポジトリに反映する
(作成済みのブランチで開発する場合のみ)
“`
git fetch origin –prunegit checkout master
git merge origin/mastergit checkout f1
git merge origin/f1git merge master
“`※最終行で、マスターブランチの変更内容を開発ブランチに反映している
開発する
ステージング
“`
git add .
“`コミット
“`
git commit -m “@@@”
“`
@@@は任意のコメントプッシュ(ブランチ作成後初回)
“`
git push -u origin f1
“`プッシュ(ブランチ作成後2回目以降)
“`
git push origin f1
“`開
【Sourcetree】GitHubで管理したくないファイルの追跡停止方法
## はじめに
GitHubでポートフォリオを管理しているのですが、毎回パスワードが記述されたapplication.propertiesというファイルがGitの管理下になってしまいスタッシュに入れるという作業をしていたので、便利な方法がないかと探していたところ書籍にあったので忘備録として残しました!## Gitの学習方法の参考
コマンドラインではなくSourcetreeだと何となくでGitを使えてしまうので、改めてGitについて学習中です。
学習方法としては、下記の記事を参考にしています。
https://qiita.com/kaitaku/items/6cd2c8d4883ff66979d4https://blog.takanabe.tokyo/2014/12/git%E5%85%A5%E9%96%80git%E5%88%9D%E5%AD%A6%E7%BF%92%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%AA%E5%AD%A6%E7%BF%92%E6%96%B9
【超初心者】GitコマンドでTab補完が効かない!?
MacでGitコマンドを入力する際に、ブランチ名等の候補をTab補完で表示できるようにカスタマイズしようと思いました。
ググるとすぐに記事が見つかったので「超簡単!」なんて余裕かましてやってみたけどうまくいかなかったことについて書いてみます。
# ◉ 確認環境
macOS Big Sur 11.6# ◉ 初めにやったこと
ググるとこちらの記事が見つかりました。
→[【2ステップ】Gitコマンドでtab補完を有効にする](https://qiita.com/growsic/items/1fff6286061e0cd27d54)さっそく記事のとおりやってみますがうまくいきません。
# ◉ そもそもbashじゃない
ログインシェルがzshであることに気付きました。ログインシェルの確認方法
“`
echo $SHELL(出力例)/bin/zsh
“`# ◉ zshで有効にするには
こちらの記事のとおりにすると無事に解決しました。
→[【zsh】絶対やるべき!ターミナルでgitのブランチ名を表示&補完【git-prompt / git-completion
初心者によるGitとSourceTreeの基礎概念とインストールの流れ
# Gitとは
**→ 独自でも並行開発でも、ソースコードのバージョン管理システムです。**
まだGit学んでいないとき、開発でファイル編集したらv1、v2…などで編集した跡を残していたという。これは一つのファイルならまだいいけれど、複数ファイルの編集だと、例えばプログラムv1では、ファイルAがv4で、ファイルBがv3と組み合わせ、
何日後
修正したプログラムv2では、ファイルAがv5で、ファイルBがv2.5と組み合わせなど。
↑ファイルB v3でバグ発見、前のバージョンに復帰して修正を行った。このように新しいバージョンと古いバージョン、そして修正したバージョンがすべて混在して、終いには混乱を招いて、開発効率も下げてしまいます。(並行開発なら開発者による命名規則も、開発している機能も違っていて、一つのファイルに統合するとき、さらにしんどくなります。)
## Gitを使えば
– バージョンには、一意の命名規則が使用される(SHA-1)
– バージョン各自の日付や編集メッセージなどの履歴が管理できる
– 新旧バージョンの間、復帰することができる
– 入れたくない、無視した
bashのpromptにgitのブランチ名を表示する。(git-prompt.sh)
## EC2 aws linux2の場合
ホスト名のニックネームをつける。
[ホスト名に影響を与えずにシェルプロンプトを変更する](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-hostname.html)“`bash:bash
$ sudo sh -c ‘echo “export NICKNAME=webserver” > /etc/profile.d/prompt.sh’
“`git(v2.32.0) を yum でインストールしている場合、
“`bash:bash
$ cp /usr/share/doc/git-2.32.0/contrib/completion/git-prompt.sh ~/.git-prompt.sh
$ vim ~/.bashrc
“`以下の行を追加する。
“`bash:bashrc
if test -f “$HOME/.git-prompt.sh”
then
. ~/.git-prompt.sh
PS1=’\[\03
gitを使ったバージョン管理手順(社内ファイルサーバ+Win10)
# 全体像
GitHub flowというバージョン管理の方針に沿って、
バージョン管理を行うための手順メモ
GitHub flowについては
https://qiita.com/onishi_820/items/d98c61e0faa67f417829前提
リモートリポジトリは社内ファイルサーバ上に置く
Win10### 新規作成から最初のコミットまで
01_ディレクトリの作成
02_カラのリモートリポジトリを作る
03_カラのリモートリポジトリをクローンしてローカルリポジトリを作る
04_ローカルリポジトリ上で開発を行う
05_変更内容をローカルリポジトリにコミットする
06_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする### 最初のコミット以降の開発1
#### リモートリポジトリの最新の内容をローカルリポジトリに反映する
07_ローカルリポジトリ上で、masterブランチをチェックアウトする
08_リモートリポジトリのmasterブランチの変更内容をローカルリポジトリでフェッチする
09_現在いるブランチにリモートリポジトリの内容をマージ
Gitコマンド備忘録
### コミットログツリーを可視化
“`
git log –graph
“`### 間違えてブランチ名をつけた時
“`
git branch -m [新しいブランチ名]
“`### リモートブランチ削除
“`
git push origin :[ブランチ名]
“`### git add 取り消し
“`
git reset HEAD .
“`### git add し忘れたファイルがあった時
“`
git add .
git commit –amend –no-edit
“`### git commit 取り消し (リモートリポジトリにpushしていない場合)
HEADの位置のみ修正される。HEAD@{1}で何番目か指定できる。–hardにするとHEADの位置・インデックス・ワーキングツリーが修正される強力なコマンドなので使うときは注意。
“`
git reset –soft HEAD^
“`コミットメッセージを間違ってしまったときはこれを使う
歴史をさかのぼったコミットを変更したい場合はgit rebaseを使用する
“`
GitHubのPersonal Access Tokenが期限切れした場合の対処
## なぜ記事を書こうと思ったか
ターミナル下でGitHubにpushをしようとした際に以下のようなエラーが確認された。
“`
remote: Invalid username or password.
fatal: Authentication failed for ‘https://github.com/{ユーザー名}/{リポジトリ名}/’
“`
認証に失敗して、pushができない、、
このエラーはGitHubでPersonal Access Tokenを設定して、期限が切れた場合に発生するエラーになります。
エラー対処を何回かしていて、その度に少し調べていたので、備忘録として記事に残します。## エラー対処
1. まず、最初にブラウザでGitHubにログインをしてください。
2. ログイン後、右上のプロフィール画像をクリックし、[settings]を選択後、Developper settingsの欄を開いてください。
3. [Personal access tokens]の欄を開き、有効期限切れになったトークンの「Expires on [日時]」を選
ブランチ毎にコミットメッセージのテンプレートを切り替えたい【Git】【prepare-commit-msg】
## はじめに
マスターブランチと、開発用の作業ブランチではコミットの粒度が異なるため、異なるテンプレートを用いたい。フックスクリプトを用いてテンプレートファイルを切り替えてみます。
## 前提
テンプレートファイル、およびその切り替えを行うフックスクリプトが、作業ディレクトリ内に以下のように配置されているものとします。
“`
./work_directory
├── .git
│ ├── hooks
│ │ └── prepare-commit-msg
…省略
│
├── .templates
│ ├── develop_template.txt
│ └── master_template.txt
│
…省略
“`# prepare-commit-msg
フックスクリプトの内容は、以下のようになります(実行権が必要です)。
“`bash:prepare-commit-msg
#! /bin/bash# 現在のブランチ名を取得する
branchName=$(git rev-parse –abbrev-ref HEAD)temp
Unityでの開発における git worktree のすすめ
Unityでマルチプラットフォーム開発を行なっているとき、
環境を別PFに変更する際はSwitch Platformを実行します。
しかしプロジェクトが大きくなっていけばいくほど、このSwitch Platformにかかる時間は増えていきます。これに対する解決のアプローチとして、PFごとにリポジトリを作る方法があります。
“` bash
$ git clone https://hoge.git ios
$ git clone https://hoge.git android
“`
こうすることにより、PF切り替えをしなくてすみます。
しかしその一方で、リポジトリそのものを複数用意することで次のような欠点があります。
* git fetch等をそれぞれで行わなければならない
* リモートリポジトリを介さなければローカルリポジトリ間でやりとりできないgit worktreeを使用すると、このような欠点を避けつつ複数のプロジェクトを管理することができます
# worktreeによるプロジェクト構築
github等にリポジトリ作成後、以下のようにしてプロジェクトを作成します。
git
#git変更を戻す パターン1
ローカルリポジトリ“`
$ git logcommit 1483ccd9e5a15f150e55a005018bd425bfc8a111
Author: hoge
Date: Thu Feb 17 00:00:00 2022 +0900
“`commit を指定し、変更を確認
“`
git show 1483ccd9e5a15f150e55a005018bd425bfc8a111
“`
変更を戻す“`
$ git reset 1483ccd9e5a15f150e55a005018bd425bfc8a111
“`戻した変更をリモートリポジトリに反映する
“`
$ git push -f //-fで強制push
“`#git変更を戻す パターン2
ローカルリポジトリ“`
$ git log –oneline –graph* d1bd2ec (HEAD -> test, origin/test) Revert “コメント”
* 0b4a8c6 コメント
* 1483c
GitHub で PR をマージするときの 3 つのオプションの違いについて
# はじめに
GitHub で PR をマージするとき、以下の 3 種類のオプションがある。* Create a merge commit
* Squash and merge
* Rebase and merge
この 3 種類のオプションの違いについて解説する。
# Create a merge commit
* PR にあるコミットと全く同じコミットハッシュのコミットがそのままマージ先ブランチに追加される
* それに加えてすべてのコミットの差分をまとめたマージコミットが新しく追加される以下のスクリーンショットは PR のコミット一覧のページである。コミットハッシュの部分を赤枠で囲んでいる。
などでコミットを作業ツリーに戻した際に使用したりします。## git rebase -i
過去のコミットを対話形式で修正するためのコマンドです。## git reset
コミットを取り消す(作業ディレクトリへ戻す)ために使用します。# 実践
例えば以下のようなコミット履歴があるとします。“`
f4a348b class B をさらに修正
770be22 class B を一部修正
064dd2a class C を作成
55af461 class B を作成
2ef7ce5 class A を作成
“`
修正分のコミットはコ
ローカルリポジトリのマージ済みブランチを一括削除する
# やること
ローカルブランチのうち、`develop`ブランチへマージ済みのブランチを一括で削除する。# コマンド
“`
$ git branch –merged | grep -i -v -E ‘main|develop’ | xargs git branch -d
“`
## .gitconfig
私は上記のコマンドを`.gitconfig`に記載することで、`cleanup`で実行できるようになっています。具体的には`.gitconfig`に以下のように記載しています。“`
[alias]
cleanup = “!git branch –merged | grep -i -v -E ‘main|develop’ | xargs git branch -d”
“`
これで`git cleanup`が使えるようになります。実際に使ってみると、以下のようになります。“`
# 現在のブランチ一覧。branchAとbranchBは既にマージ済みだとする
$ git branch
branchA
branchB
* develop
ma
よく使うgitコマンド
# GitLab/GitHubからクローンしてくる
“`
git clone 【URL】 【フォルダ名】
“`フォルダ名を指定すると自分の好きなフォルダ名でクローンできる
# 自分のブランチを切って開発する
“`
git checkout -b dev
“`devブランチが作成され、さらに作ったブランチに切り替えてくれる。
# 自分のブランチをpushする
“`
git push -u origin dev
“`これでGitLabやGitHubにpushできる。
一度このコマンドを使えば、次からはgit pushとするだけでpushできるようになる。# いらないブランチを削除する
“`
git branch -d dev
“`# 今の作業をなかったことにしたい!
“`
git reset –hard HEAD
“`前回のコミットしたところまで戻してくれる。