(覚え書き用)
1.はじめに
たまにしか使わない、あるいは”やっちまった”ときに手直しするコマンドなどをまとめました。
- 1.はじめに
- 2.gitのリポジトリの初期化
- 3.githubとのやりとり
- 4.過去の修正
- 5.設定変更
- 9.そのほか
- (1)追加の変更を最新のコミットに追加する
- (2)UNIX, Windows併用するときの改行コード設定
- (3)コミット履歴をグラフで表示
- (4)SourceTreeの使い方
- (5)bash用gitプロンプト
- (6)gitのブランチ・マージ・プルリクまで
- (7)git-flowを使う
- (8)エラーadding the parent project as a safe.directoryの処置
- (9)エラーThe server's host key is not cached in the registryの処置
- (10)リポジトリを入れ子にしたいとき
- (11)ブランチを分けずに編集しちゃったとき
- (12)gitignore
- (91) 番外編・git英語
- (92) 番外編・ホームディレクトリをまとめてZIP圧縮するコマンド
- (99)参考資料
2.gitのリポジトリの初期化
(1)空のままcommitする
# リポジトリ作成 $ git init # 最初のコミット $ git commit --allow-empty -m "first commit"
(2)master→mainに変更
ローカルのブランチ名をmainに変更
$ git branch -m master main
※ローカルを変えてからリモートを変えること
3.githubとのやりとり
pushするときや、privateリポジトリをcloneする際に、ユーザを認証するためにあらかじめ、githubg側に、自分を特定できる情報を登録する必要があります。
(1)自分のパソコンの公開鍵を登録
自分の公開鍵・秘密鍵のペアがあるか確認
下記のように、既にid_rsa id_rsa.pub
があれば、ここで新たに作成する操作は不要です。
$ ls ~/.ssh/
id_rsa id_rsa.pub
自分の公開鍵・秘密鍵のペアを作ります
コマンド実行後は、[enter]キーを入力だけでOKです。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\user/.ssh/id_rsa Your public key has been saved in C:\Users\user/.ssh/id_rsa.pub The key fingerprint is: …
公開鍵・秘密鍵のペアができていることを確認します。
$ ls ~/.ssh/
id_rsa id_rsa.pub
公開鍵をgithubに登録します
githubにログインできている状態で、こちらのページを開いておきます。
「New SSH Key」ボタンを押します。
Titleには、好きな名前を付けられますが、公開鍵を作成したホスト・ユーザ名など、後で出所はわかりやすい名前を付けて下さい。
つづいて、Keyのところに貼りつける文字列を準備します。
先ほど生成した鍵のうち、id_rsa.pub
のほうの中身をターミナルに表示します。
$ cat ~/.ssh/id_rsa.pub
表示された文字はちょうど一行になっていますので、これをそのままコピーしてください。
ブラウザに戻って、改めて、Keyのところに先ほどコピーした1行分の内容を貼りつけてください。 (うっすら書かれている文字は、貼りつけたときに消えます)
最後に「Add SSH Key」ボタンを押します。
これで、自分のホストに公開鍵を、Githubに登録完了です。 これでホスト~Githubの認証ができるようになりました。
4.過去の修正
(1)commit直後に名前やメールアドレスを修正
※.gitconfig
が設定されていること。
$ git commit --amend --reset-author
直前のコミットだけ修正されます。
(2)名前やメールアドレスを過去に遡って修正
ステージングしていない修正があると、この方法は出来ません。
#名前 $ git filter-branch -f --env-filter 'export GIT_AUTHOR_NAME="なまえ"' #メール $ git filter-branch -f --env-filter 'export GIT_AUTHOR_EMAIL="メール"'
- Gitで過去のコミットの名前やメールアドレス、コミット時刻を変更する[Git] - あざらし備忘録。
- CommitとAuthorを修正する時は--authorではなく--reset-authorを使おう - ゆずめも
(2)先程のコミットを無かったことに
$ git reset --soft HEAD^
5.設定変更
(1)ユーザ情報
いまいる特定のリポジトリの設定だけ変更
$ git config --local user.name hoge $ git config --local user.email hoge@fuga.org
unixのユーザごとの全体設定を変更
$ git config --global user.name hoge $ git config --global user.email hoge@fuga.org
[Git]これだけ押さえる!gitconfigの基本 #Git - Qiita
user.email
に、匿名メールアドレスを設定する場合
githubのこのページの中で、number-hoge@users.noreply.github.com
で
表記された部分があるので、そこからコピペして使う。
参考:GitHub でダミーのメールアドレスを使用する #GitHub - Qiita
(2)ファイルの大文字・小文字の変更を検知
$ git config core.ignorecase false
(3)改行コードの自動変更を無効化
$ git config --global core.autocrlf false
9.そのほか
(1)追加の変更を最新のコミットに追加する
$ git commit --amend --no-edit
(2)UNIX, Windows併用するときの改行コード設定
改行コード変換が、デフォルトで有効のため、異なるOSを行き来するごとに不具合を起こしやすい(気がします)
改行コード変換を無効にするため、設定ファイルc:\users\<name>\.gitconfig
に、以下のエントリーを追加
… [core] autocrlf = false
(3)コミット履歴をグラフで表示
$ git log --oneline --graph
(4)SourceTreeの使い方
- コミットの再編集・変更方法
- コミット間の差分ファイルの抽出 (カスタム操作を使う方法)
- 基本操作(diff, stash, tag, revert, cherry-pick)
- コミットの取り消し方法まとめ(amend, reset, revert, cherry-pick)
(5)bash用gitプロンプト
$ cd $ wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash $ mv git-completion.bash .git-completion $ nano .bash_aliases
.bash_aliases
# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples ... ## for Git . $HOME/.git-completion ...
(6)gitのブランチ・マージ・プルリクまで
(7)git-flowを使う
ブランチを体系的に管理したいときに、このツールを使うと便利です。
Gitflow ワークフロー | Atlassian Git Tutorial
なお、SourceTreeには標準で支援ツールが入っています。
# 初回はパッケージのインストールが必要(Linuxの場合) $ sudo apt install git-flow # git初期化してgit-flow化 $ git init $ git commit --allow-empty -m "first commit" $ git flow init -d $ git branch -m master main #作業を開始 $ git flow feature start MYFEATURE #作業を終了 $ git flow feature finish MYFEATURE
- Git-flowをざっと整理してみた | DevelopersIO
- git-flow cheatsheet
- 図とコマンドで分かる! git-flowによる開発の流れと使い方:Gitブランチを使いこなすgit-flow/GitHub Flow入門(3)(1/2 ページ) - @IT
(8)エラーadding the parent project as a safe.directory
の処置
設定ファイルc:\users\<name>\.gitconfig
に、以下のエントリーを追加
… [safe] directory = *
(9)エラーThe server's host key is not cached in the registry
の処置
プッシュ・プルするときに、下記のエラーが出る。
The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is.
$ "C:\Users\<user name>\AppData\Local\SourceTree\app-3.4.12\tools\putty\plink.exe" -ssh -C -i "C:\Users\<username>\keys\rsa-key-hogefuga.ppk" git@github.com
The host key is not cached for this server: github.com (port 22) You have no guarantee that the server is the computer you think it is. The server's ssh-ed25519 key fingerprint is: ssh-ed25519 255 SHA256:************* If you trust this host, enter "y" to add the key to PuTTY's cache and carry on connecting. If you want to carry on connecting just once, without adding the key to the cache, enter "n". If you do not trust this host, press Return to abandon the connection. Store key in cache? (y/n, Return cancels connection, i for more info) y Using username "git". Server refused to allocate pty
参考
(10)リポジトリを入れ子にしたいとき
- gitを入れ子にする(submodule) #備忘録 - Qiita
- GitHubで複数のリポジトリをネストさせる #GitHub - Qiita
- 意図せずリポジトリが入れ子になった場合の対処方法 - Overflow Log
(11)ブランチを分けずに編集しちゃったとき
編集内容を破棄することなく、別ブランチに取り込みます。
# 編集内容をいったん退避 $ git stash $ git stash list stash@{0}: WIP on develop: 3b3f064 コメント等補足 # 新しいブランチを作る $ git branch zenoh $ git branch * develop main zenoh # 新しいブランチをチェックアウト $ git checkout zenoh $ git branch develop main * zenoh # 新しいブランチに編集内容を適用 $ git stash apply # あとはコミットすればOK # コミットした後、先ほどのスタッシュが不要なら消す $ git stash drop
- Git でファイルに変更を加えたあとでブランチを切り替える
- 1. ブランチを作成する|サル先生のGit入門【プロジェクト管理ツールBacklog】
- 【Git&GitHub】避難した作業を削除する(git stash dropコマンド) - 未来エンジニア養成所Blog
(12)gitignore
- 基本のテンプレート
(91) 番外編・git英語
(92) 番外編・ホームディレクトリをまとめてZIP圧縮するコマンド
ホームディレクトリをまとめて、どこか別のところに持っていくときに、このコマンドが便利です。
$ cd ~ && \ sudo apt install zip && \ cd .. && \ sudo zip -r homepi_$HOSTNAME.zip ./pi/ -x \*/.git/\* \*/.ros/\* \*/\catkin_ws/log/\* \*/\MagPi/\* \*/\.cache/\* \*/\.local/\* \*/\.Downloads/\* && \ sudo mv homepi_$HOSTNAME.zip pi/ && \ sudo chown pi pi/homepi_$HOSTNAME.zip