GitSetup
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
** 基本 [#k9cfa7ab]
- 3段構成(repo - index - working_tree)
- index に git add で登録することを staging すると呼び
- working_tree の親になっている commit を HEAD と呼ぶ
-&ref(git_commit_workflow.jpg);
- git diff は通常は working_tree と index の差分
-&ref(git_diff_reset.jpg);
** 前提 [#cddba28f]
- シングルユーザー、 マルチユース
-- ssh により多拠点リモートユース
-- 複数のマシンで、別々の場所からから接続する
-- gitweb を利用する
- 文書ファイル (tex など) の来歴管理を行なう
- サーバー設定情報の管理も行なう
- 基本的に ubuntu の標準に従う (ファイルの置き場所など)
** 設定 [#w097626d]
- server account
-- user = git
-- pass = gituser
-- home = /mnt/raid_vol/home/git
-- shell = /usr/bin/git-shell (git 操作専用、通常ログイン...
- リモートリポジトリ = ssh://munakata@mythen.hmuna.com...
- 公開鍵がサーバーに登録されている場合 = git clone ssh:/...
- クライアントの ~/.ssh/config 設定
munakata@muna-E420:~/latex$ cat ~/.ssh/config
Host MYTHEN
HostName mythen.hmuna.com
Port 8823
IdentityFile ~/.ssh/muna_E420
User git
- gitweb URL = wiki.hmuna.com/gitweb
** 運用 [#ka15a661]
*** ローカルリポジトリの作成 [#qf298eec]
- git init
- git add
- git commit -am "comments"
*** リモートリポジトリの作成 [#kbbf46eb]
- git init --bare --shared
*** ローカルの内容をリモートに反映 [#occ7813e]
- git remote add [local_repo 名 (origin)] ssh://munakata@...
- git push [ git remote add で指定したリモートリポジトリ...
-- origin はリモートリポジトリ(=デフォルトではクローン...
-- origin main で クローン元の main ブランチにプッシュす...
*** ローカルに git を導入 [#z9224fe0]
- 共通環境の設定
munakata@muna-E420:~/beamer/keio2012$ git config --globa...
munakata@muna-E420:~/beamer/keio2012$ git config --globa...
- git local repo の設定と、変更のローカルコミット
munakata@muna-E420:~/beamer/keio2012$ git init
Reinitialized existing Git repository in /home/munakata/...
munakata@muna-E420:~/beamer/keio2012$ git add *
*** ローカルとリモートの repo の関係付け ( git remote ad...
- git remote add [ローカルブランチ名] [リモートブランチ]
-- この場合、リモートブランチの &color(red){同じ名前のブ...
-- なので、基本ローカルブランチ名を push 先のブランチ名に...
- git remote add [ローカルブランチ名] [リモートブランチ]...
-- このように明示的にリモート側のブランチ名を指定すること...
-- が、繰り返しになるが、&color(red){もしリモート側のブラ...
// munakata@muna-E420:~/beamer/keio2012$ git remote add o...
$ git remote add origin ssh://munakata@kgb2.hmuna.com:87...
~''/.ssh/config に KGB2 アクセス設定(公開鍵登録)をして...
$ git remote add origin KGB2:/raid_vol/home/git/repos/XXXX
-- config の書き方例
munakata@Magus-HiraWin:~/latex/sdvx2509$ cat ~/.ssh/config
Host KGB2
HostName kgb2.hmuna.com
Port 8722
IdentityFile ~/.ssh/id_maguhira
User munakata
//- 上記で e420 はローカル repo を区別するための名前付け...
//- 下記の例では repo 自体は master → master の対応である
*** remote ブランチとの関係付けを確認( git remote -v) [...
[local] munakata:~/latex/LFS301-JP$ git remote -v
github https://github.com/hmunak/LFS301-JP-local.git (fe...
github https://github.com/hmunak/LFS301-JP-local.git (pu...
hmuna ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/...
hmuna ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/...
origin ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol...
origin ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol...
*** ブランチ名を指定してリモートブランチを取得(clone -b ...
− git clone -b ブランチ名 https://リポジトリのアドレス
*** ブランチ名の確認( git branch -a) [#ke41e63d]
- 何もオプションを付けないと、現在のブランチ名が表示される
- -a を付加すると、全てのブランチ名が見える
[local] munakata:~/latex/LFS301-JP$ git branch
* main
[local] munakata:~/latex/LFS301-JP$ git branch -a
* main
remotes/github/main
remotes/hmuna/main
remotes/hmuna/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
*** ローカルブランチ名の変更( git branch -m ) [#qcbf0856]
- git branch -m [変更後のブランチ名]
-- 現在のブランチ名を変更
- git branch -m [変更したいブランチ名] [変更後のブランチ名]
-- 明示的の変更対象のブランチ名を指定することもできる
*** ローカルブランチの削除( git branch -d ) [#xdbd6eee]
- git branch -d [ブランチ名]
*** リモートブランチの削除 [#qf9ae8a8]
- git push [ローカルブランチ](空白):[削除するリモートブ...
-- 空白を push することで、リモートブランチを削除する
*** リモートブランチの最新状況(削除など)をローカル側に...
- git fetch --prune (git fetch -p)
*** リモートブランチ名を変更した時の、ローカルブランチの...
git branch -m main japanese-wip
git fetch origin
git branch -u origin/japanese-wip japanese-wip
git remote set-head origin -a
*** ローカルブランチ (=master) のトラッキング先を明示的に...
- 通常は git clone した時点で origin/master としてトラッ...
- git pull した時にトラッキング先のブランチが指定されてい...
- コンソールで git clone したコードを vscode 上の git vie...
git branch --set-upstream-to=origin/master master
- 以下のように [master] と [origin/master] が並んでいる状...
- &ref(originmaster.jpg);
*** ローカルブランチがトラッキングブランチであるかどうか...
- japanese-wip2 がリモート origin のローカルブランチ japa...
[local] munakata:~/latex/LFS301-JP$ git status -sb
## japanese-wip2...origin/japanese [ahead 2]
*** ローカルがブランチが追跡しているリモートブランチの確...
[local] munakata:~/latex/LFS301-JP$ git branch -vv
* japanese-wip2 09f7ec1 [origin/japanese: ahead 2] Mint ...
- ブランチ名 コミット番号 [追跡ブランチ名] コミットメッセ...
*** 追跡するリモートブランチの設定 [#a0d6ef36]
git push -u origin [ブランチ名]
*** インデックス、 ワーキングツリー、 HEAD の関係の変化 [...
- &ref(initial.jpg);
- &ref(file_edit.jpg);
- &ref(git_add.jpg);
- &ref(git_add_and_edit.jpg);
*** デフォルトのブランチ名の指定( master を main などに...
git config --global init.defaultBranch main
*** detached HEAD [#q5216d52]
- HEAD がブランチではなく commit ID を直接指している状況...
- 解決するには git branch でブランチを作ればよい
[local] munakata:~/latex/LFS301$ git branch
* (HEAD detached at 313786d)
japanese
[local] munakata:~/latex/LFS301$ git branch master
[local] munakata:~/latex/LFS301$ git checkout master
M Makefile
Switched to branch 'master'
[local] munakata:~/latex/LFS301$ git branch
japanese
* master
*** git add -p [#o1d268fc]
- -p を付けると変更箇所ごとに commit の対象にするか確認し...
- 沢山の変更をした時に、論理的に関連のないものを別の comm...
*** git add する前(=ステージングしていない状態)で変更...
- git checkout HEAD .
*** git add (=ステージング)の取り消し (2回目以降のス...
- git reset HEAD (file_name)
*** git commit [#y0b122d4]
- 一行目に変更の概略 → パッチを送る時のメールタイトルにな...
- 二行目は空行
- 三行目以降に詳細な説明を書く
*** git commit <path> [#t299184a]
- git commit に引数でファイル名を渡すと、明示的に指定され...
*** git commit(但し、push 前)の取り消し(コミットの取り...
- git reset --soft HEAD^
*** git commit(但し、push 前)の取り消し(コミットと変更...
- git reset --hard HEAD^
*** git rebase -i で過去数回分のコミットをまとめる [#r33d...
- git rebase -i HEAD~~~~ (~ の数のコミットをまとめる)
- git rebase -i HEAD~4
pick 29e1651 evaluate model updated, still in struggle
pick 35d15a4 temporaly save (no major change)
pick 356c295 removed unused view (preffered flag)
pick b81062d removed build-in command (vman_entry.py)
# Rebase ca395bd..b81062d onto ca395bd (4 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's lo...
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
pick を s (squash) に書き換えるとコミットが前のコミットに...
*** git diff と git diff HEAD と git diff --cached の違...
- &color(red){以下の図は [[murankの日記 というサイトから...
- git diff は working_tree と index の差 (git add 後に加...
- &ref(git-diff.jpg);
- git diff --cached は index と 最新の commit の差
- &ref(git-diff-c.jpg);
- git diff HEAD は working_tree と 最新の commit との差 ...
- &ref(git-diff-h.jpg);
- git diff HEAD~..HEAD は複数のコミット間の差
- &ref(git-diff-hh.jpg);
*** git diff --stat [#l0a9cb3c]
- ファイル単位で変更(削除、追加)の量を概算表示する(パ...
[local] munakata:~/source/perl/nana2tex$ git diff eada 8...
Makefile | 6 ++++--
nana2tex.pl | 78 +++++++++++++++++++++++++++++++-------...
2 files changed, 35 insertions(+), 49 deletions(-)
*** git reset[#w48267b9]
- HEAD の位置を変更するコマンド。
- オプション (影響度の小さい順に --soft、--mixed(オプショ...
-- soft = HEAD の位置のみを変更する。インデックス、ワーキ...
-- mixed (またはオプションなし) = HEAD の位置とインデック...
-- hard = HEADの位置、インデックス、ワーキングツリーをす...
- git reset --soft HEAD^
- &ref(reset_soft_head1.jpg);
- git reset HEAD
- &ref(reset_hed.jpg);
- git reset HEAD^
- &ref(reset_head1.jpg);
- git reset --hard
- &ref(reset_hard_head.jpg);
- git reset --hard HEAD^
- &ref(reset_hard_head1.jpg);
- git reset --hard HEAD(HEAD^ ではなく) は 最新の commi...
*** git pull でコンフリクトした時の対応 [#u6a2424c]
Your local change would be overwritten by merge. Commit, ...
- git stash でローカルの変更を一時退避
git stash save -u
git stash list
git pull
git stash pop <------ 自動マージを試みる、コンフリクトし...
git drop <---- stash したファイルの削除
*** ローカルの master を、強制的にリモートの master に合...
// 1) リモートの最新を取ってきておいて・・
$ git fetch origin master
// 2) ローカルのmasterを、リモート追跡のmasterに強制的に...
$ git reset --hard origin/master
*** git commit --amend : 直前のコミットのやり直し [#fbaaa...
- 以下の操作と等価 (一行で完結する)
-- git reset HEAD^
-- ファイルの再編集
-- git add (file)
-- git commit -a -m "新しいコミットメッセージ"
- コミットメッセージの書き換えだけにも利用できる
*** git reset <path> [#wa06e001]
- git reset にファイル名を指定すると、明示的に指定された...
*** git revert [#o23b0f27]
- git revert は 過去のコミットを取り消す
*** git fetch [#bd000030]
- git pull = git fetch + git merge
- fetch はローカルマシン上のオリジン情報(= origin/master...
*** git log [#zc13fb77]
- git log --pretty=oneline : 一行で表示オプション 出力さ...
- git log --pretty=format: (option) で色々な表示にできる
git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 11 months ago : changed the vers...
085bb3b - Scott Chacon, 11 months ago : removed unnecess...
a11bef0 - Scott Chacon, 11 months ago : first commit
-- format の書き方
|%H| コミットのハッシュ|
|%h| コミットのハッシュ (短縮版)|
|%T| ツリーのハッシュ|
|%t| ツリーのハッシュ (短縮版)|
|%P| 親のハッシュ|
|%p| 親のハッシュ (短縮版)|
|%an| Author の名前|
|%ae| Author のメールアドレス|
|%ad| Author の日付 (--date= オプションに従った形式)|
|%ar| Author の相対日付|
|%cn| Committer の名前|
|%ce| Committer のメールアドレス|
|%cd| Committer の日付|
|%cr| Committer の相対日付|
|%s| 件名|
*** git log でサマリーを表示させるスクリプト(gitlog) [#...
- alias gitlog='git log --pretty="%h %ad: %s" --date=sho...
*** git push ローカル上の変更をリモートに反映 [#jccfaea5]
munakata@muna-E420:~/beamer/keio2012$ git push e420 master
munakata@mythen.hmuna.com's password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 337 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/hom...
462fe87..7a936a0 master -> master
*** 既にあるブランチへの切り替え [#d8f67457]
- git checkout ブランチ名
*** git ブランチを作成して、そのブランチに移動 [#qf876a04]
- git checkout -b ブランチ名
これは以下の2つをまとめて実行したことになる
- git branch ブランチ名
- git checkout ブランチ名
*** git ブランチをプッシュ [#d69832d3]
- git push origin [branch 名]
*** git ブランチの削除 [#z33851e0]
- git branch -d ブランチ名
*** git の管理対象から外す [#yaf510d3]
- .git と同じディレクトリーに .gitignore というファイルを...
- git はリカーシブに検索するのでファイル拡張子を指定する...
- &color(red){注意:一度 git の追跡対象となったファイルは...
*** git の管理対象から外す2(.gitignore に追加登録する場...
- 特定のファイルを対象外にする場合
git rm --cached [ファイル名]
- 一括してキャッシュを削除する場合
git rm -r --cached .
*** git gc [#o6ce1490]
- レポジトリの最適化(未使用オブジェクトの削除、圧縮)
*** 過去のリビジョンからファイルを復元 (abc123リビジョン...
git checkout -f abc123 hoge.txt
*** [[git tag:http://blog.s21g.com/articles/1359]] [#z633...
- git tag -a <タグ名> -m "メッセージ"
- git push --tags
- git checkout -b 1.6 refs/tags/v1.6 (tag を指定してブラ...
*** [[tag を削除 (付け直す):http://qiita.com/cutmail/item...
- git tag -d TAG_NAME (まずローカルのタグを削除)
- git push origin :refs/tags/TAG_NAME (リモートのタグを空...
*** git diff [#t0b42d1a]
- git diff --word-diff=color
-- 単語ベースのdiff
-- 行の中の一部だけが変更されてるのをみたりするのに便利
-- color を指定すると色の変化でdiffがわかって良い
-git diff --ignore-space-at-eol
-- 末尾空白の変更を無視する
-- なんかのついでに末尾スペース削りまくってるみたいな変更...
- git diff -b
-- 空白の変更を無視する
-- このへん多分インデントかわっただけだよね.. て心配なと...
*** git send-email [#w54c988c]
- apt-get install git-email
- git format-patch HEAD^ (file_name)
- git send-email (file_name)
*** マージされたPR元のブランチを自動的に削除する [#zb29ca...
- https://docs.github.com/ja/repositories/configuring-bra...
*** 日本語のファイル名などを表示させる [#b2fc2dc4]
- git config --global core.quotepath false
- [[git document:https://git-scm.com/docs/git-config]]
core.quotePath
Commands that output paths (e.g. ls-files, diff), will q...
by enclosing the pathname in double-quotes and escaping ...
same way C escapes control characters (e.g. \t for TAB, ...
with values larger than 0x80 (e.g. octal \302\265 for "m...
to false, bytes higher than 0x80 are not considered "unu...
and control characters are always escaped regardless of ...
A simple space character is not considered "unusual". Ma...
verbatim using the -z option. The default value is true.
*** [[git credential helperを使って &color(red){HTTP越し...
- &color(red){HTTP は基本的に読み込み専用のリポジトリーに...
- git config --global credential.helper store
- cloneが終わると、$HOME/.git-credentialsというファイルが...
- 中身はリポジトリホスト名とユーザ名・パスワードが平文で...
- git config --global credential.helper cache
*** [[SSH 接続でパスワードなしにするには公開鍵をサーバー...
- クライントで ssh-keygen を実行、パスフレーズは無しで生...
− サーバーの ~/.ssh に
cat (クライアントの公開鍵)>> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
- クライアントの ~/.ssh/config に
munakata@muna-E420:~/latex$ cat ~/.ssh/config
Host MYTHEN
HostName mythen.hmuna.com
Port 8823
IdentityFile ~/.ssh/muna_E420 (公開鍵)
User munakata
- クライアントのシェルに鍵を登録
$ ssh-agent bash
$ ssh-add ~/.ssh/(秘密鍵)
&color(red){注:gitサーバーの .ssh のディレクトリーのパー...
** [[git 環境変数の設定:http://transitive.info/article/gi...
munakata@mythen:~/My_presentations/als2013JP$ git config...
color.ui=auto
user.name=hisao munakata
user.email=public_mail@hmuna.com
core.quotepath=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=ssh://munakata@mythen.hmuna.com:8823/m...
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.mythen.url=ssh://munakata@mythen.hmuna.com:8823/m...
remote.mythen.fetch=+refs/heads/*:refs/remotes/mythen/*
** [[認証情報の登録(git credential):https://git-scm.com...
munakata@muna-U2404:~/latex/honda2024$ git config --glob...
munakata@muna-U2404:~/latex/honda2024$ git config --glob...
munakata@muna-U2404:~/latex/honda2024$ git credential fill
protocol=https
host=kgb2.hmuna.com:8722
username=munakata
password=!freedman7785
- https://blog.fieldnotes.jp/entry/git-credential-manager
** [[git 公式サイトマニュアル(日本語):http://git-scm.co...
** [[逆引き git:http://www.backlog.jp/git-guide/reference...
終了行:
#contents
** 基本 [#k9cfa7ab]
- 3段構成(repo - index - working_tree)
- index に git add で登録することを staging すると呼び
- working_tree の親になっている commit を HEAD と呼ぶ
-&ref(git_commit_workflow.jpg);
- git diff は通常は working_tree と index の差分
-&ref(git_diff_reset.jpg);
** 前提 [#cddba28f]
- シングルユーザー、 マルチユース
-- ssh により多拠点リモートユース
-- 複数のマシンで、別々の場所からから接続する
-- gitweb を利用する
- 文書ファイル (tex など) の来歴管理を行なう
- サーバー設定情報の管理も行なう
- 基本的に ubuntu の標準に従う (ファイルの置き場所など)
** 設定 [#w097626d]
- server account
-- user = git
-- pass = gituser
-- home = /mnt/raid_vol/home/git
-- shell = /usr/bin/git-shell (git 操作専用、通常ログイン...
- リモートリポジトリ = ssh://munakata@mythen.hmuna.com...
- 公開鍵がサーバーに登録されている場合 = git clone ssh:/...
- クライアントの ~/.ssh/config 設定
munakata@muna-E420:~/latex$ cat ~/.ssh/config
Host MYTHEN
HostName mythen.hmuna.com
Port 8823
IdentityFile ~/.ssh/muna_E420
User git
- gitweb URL = wiki.hmuna.com/gitweb
** 運用 [#ka15a661]
*** ローカルリポジトリの作成 [#qf298eec]
- git init
- git add
- git commit -am "comments"
*** リモートリポジトリの作成 [#kbbf46eb]
- git init --bare --shared
*** ローカルの内容をリモートに反映 [#occ7813e]
- git remote add [local_repo 名 (origin)] ssh://munakata@...
- git push [ git remote add で指定したリモートリポジトリ...
-- origin はリモートリポジトリ(=デフォルトではクローン...
-- origin main で クローン元の main ブランチにプッシュす...
*** ローカルに git を導入 [#z9224fe0]
- 共通環境の設定
munakata@muna-E420:~/beamer/keio2012$ git config --globa...
munakata@muna-E420:~/beamer/keio2012$ git config --globa...
- git local repo の設定と、変更のローカルコミット
munakata@muna-E420:~/beamer/keio2012$ git init
Reinitialized existing Git repository in /home/munakata/...
munakata@muna-E420:~/beamer/keio2012$ git add *
*** ローカルとリモートの repo の関係付け ( git remote ad...
- git remote add [ローカルブランチ名] [リモートブランチ]
-- この場合、リモートブランチの &color(red){同じ名前のブ...
-- なので、基本ローカルブランチ名を push 先のブランチ名に...
- git remote add [ローカルブランチ名] [リモートブランチ]...
-- このように明示的にリモート側のブランチ名を指定すること...
-- が、繰り返しになるが、&color(red){もしリモート側のブラ...
// munakata@muna-E420:~/beamer/keio2012$ git remote add o...
$ git remote add origin ssh://munakata@kgb2.hmuna.com:87...
~''/.ssh/config に KGB2 アクセス設定(公開鍵登録)をして...
$ git remote add origin KGB2:/raid_vol/home/git/repos/XXXX
-- config の書き方例
munakata@Magus-HiraWin:~/latex/sdvx2509$ cat ~/.ssh/config
Host KGB2
HostName kgb2.hmuna.com
Port 8722
IdentityFile ~/.ssh/id_maguhira
User munakata
//- 上記で e420 はローカル repo を区別するための名前付け...
//- 下記の例では repo 自体は master → master の対応である
*** remote ブランチとの関係付けを確認( git remote -v) [...
[local] munakata:~/latex/LFS301-JP$ git remote -v
github https://github.com/hmunak/LFS301-JP-local.git (fe...
github https://github.com/hmunak/LFS301-JP-local.git (pu...
hmuna ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/...
hmuna ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/...
origin ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol...
origin ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol...
*** ブランチ名を指定してリモートブランチを取得(clone -b ...
− git clone -b ブランチ名 https://リポジトリのアドレス
*** ブランチ名の確認( git branch -a) [#ke41e63d]
- 何もオプションを付けないと、現在のブランチ名が表示される
- -a を付加すると、全てのブランチ名が見える
[local] munakata:~/latex/LFS301-JP$ git branch
* main
[local] munakata:~/latex/LFS301-JP$ git branch -a
* main
remotes/github/main
remotes/hmuna/main
remotes/hmuna/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
*** ローカルブランチ名の変更( git branch -m ) [#qcbf0856]
- git branch -m [変更後のブランチ名]
-- 現在のブランチ名を変更
- git branch -m [変更したいブランチ名] [変更後のブランチ名]
-- 明示的の変更対象のブランチ名を指定することもできる
*** ローカルブランチの削除( git branch -d ) [#xdbd6eee]
- git branch -d [ブランチ名]
*** リモートブランチの削除 [#qf9ae8a8]
- git push [ローカルブランチ](空白):[削除するリモートブ...
-- 空白を push することで、リモートブランチを削除する
*** リモートブランチの最新状況(削除など)をローカル側に...
- git fetch --prune (git fetch -p)
*** リモートブランチ名を変更した時の、ローカルブランチの...
git branch -m main japanese-wip
git fetch origin
git branch -u origin/japanese-wip japanese-wip
git remote set-head origin -a
*** ローカルブランチ (=master) のトラッキング先を明示的に...
- 通常は git clone した時点で origin/master としてトラッ...
- git pull した時にトラッキング先のブランチが指定されてい...
- コンソールで git clone したコードを vscode 上の git vie...
git branch --set-upstream-to=origin/master master
- 以下のように [master] と [origin/master] が並んでいる状...
- &ref(originmaster.jpg);
*** ローカルブランチがトラッキングブランチであるかどうか...
- japanese-wip2 がリモート origin のローカルブランチ japa...
[local] munakata:~/latex/LFS301-JP$ git status -sb
## japanese-wip2...origin/japanese [ahead 2]
*** ローカルがブランチが追跡しているリモートブランチの確...
[local] munakata:~/latex/LFS301-JP$ git branch -vv
* japanese-wip2 09f7ec1 [origin/japanese: ahead 2] Mint ...
- ブランチ名 コミット番号 [追跡ブランチ名] コミットメッセ...
*** 追跡するリモートブランチの設定 [#a0d6ef36]
git push -u origin [ブランチ名]
*** インデックス、 ワーキングツリー、 HEAD の関係の変化 [...
- &ref(initial.jpg);
- &ref(file_edit.jpg);
- &ref(git_add.jpg);
- &ref(git_add_and_edit.jpg);
*** デフォルトのブランチ名の指定( master を main などに...
git config --global init.defaultBranch main
*** detached HEAD [#q5216d52]
- HEAD がブランチではなく commit ID を直接指している状況...
- 解決するには git branch でブランチを作ればよい
[local] munakata:~/latex/LFS301$ git branch
* (HEAD detached at 313786d)
japanese
[local] munakata:~/latex/LFS301$ git branch master
[local] munakata:~/latex/LFS301$ git checkout master
M Makefile
Switched to branch 'master'
[local] munakata:~/latex/LFS301$ git branch
japanese
* master
*** git add -p [#o1d268fc]
- -p を付けると変更箇所ごとに commit の対象にするか確認し...
- 沢山の変更をした時に、論理的に関連のないものを別の comm...
*** git add する前(=ステージングしていない状態)で変更...
- git checkout HEAD .
*** git add (=ステージング)の取り消し (2回目以降のス...
- git reset HEAD (file_name)
*** git commit [#y0b122d4]
- 一行目に変更の概略 → パッチを送る時のメールタイトルにな...
- 二行目は空行
- 三行目以降に詳細な説明を書く
*** git commit <path> [#t299184a]
- git commit に引数でファイル名を渡すと、明示的に指定され...
*** git commit(但し、push 前)の取り消し(コミットの取り...
- git reset --soft HEAD^
*** git commit(但し、push 前)の取り消し(コミットと変更...
- git reset --hard HEAD^
*** git rebase -i で過去数回分のコミットをまとめる [#r33d...
- git rebase -i HEAD~~~~ (~ の数のコミットをまとめる)
- git rebase -i HEAD~4
pick 29e1651 evaluate model updated, still in struggle
pick 35d15a4 temporaly save (no major change)
pick 356c295 removed unused view (preffered flag)
pick b81062d removed build-in command (vman_entry.py)
# Rebase ca395bd..b81062d onto ca395bd (4 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's lo...
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
pick を s (squash) に書き換えるとコミットが前のコミットに...
*** git diff と git diff HEAD と git diff --cached の違...
- &color(red){以下の図は [[murankの日記 というサイトから...
- git diff は working_tree と index の差 (git add 後に加...
- &ref(git-diff.jpg);
- git diff --cached は index と 最新の commit の差
- &ref(git-diff-c.jpg);
- git diff HEAD は working_tree と 最新の commit との差 ...
- &ref(git-diff-h.jpg);
- git diff HEAD~..HEAD は複数のコミット間の差
- &ref(git-diff-hh.jpg);
*** git diff --stat [#l0a9cb3c]
- ファイル単位で変更(削除、追加)の量を概算表示する(パ...
[local] munakata:~/source/perl/nana2tex$ git diff eada 8...
Makefile | 6 ++++--
nana2tex.pl | 78 +++++++++++++++++++++++++++++++-------...
2 files changed, 35 insertions(+), 49 deletions(-)
*** git reset[#w48267b9]
- HEAD の位置を変更するコマンド。
- オプション (影響度の小さい順に --soft、--mixed(オプショ...
-- soft = HEAD の位置のみを変更する。インデックス、ワーキ...
-- mixed (またはオプションなし) = HEAD の位置とインデック...
-- hard = HEADの位置、インデックス、ワーキングツリーをす...
- git reset --soft HEAD^
- &ref(reset_soft_head1.jpg);
- git reset HEAD
- &ref(reset_hed.jpg);
- git reset HEAD^
- &ref(reset_head1.jpg);
- git reset --hard
- &ref(reset_hard_head.jpg);
- git reset --hard HEAD^
- &ref(reset_hard_head1.jpg);
- git reset --hard HEAD(HEAD^ ではなく) は 最新の commi...
*** git pull でコンフリクトした時の対応 [#u6a2424c]
Your local change would be overwritten by merge. Commit, ...
- git stash でローカルの変更を一時退避
git stash save -u
git stash list
git pull
git stash pop <------ 自動マージを試みる、コンフリクトし...
git drop <---- stash したファイルの削除
*** ローカルの master を、強制的にリモートの master に合...
// 1) リモートの最新を取ってきておいて・・
$ git fetch origin master
// 2) ローカルのmasterを、リモート追跡のmasterに強制的に...
$ git reset --hard origin/master
*** git commit --amend : 直前のコミットのやり直し [#fbaaa...
- 以下の操作と等価 (一行で完結する)
-- git reset HEAD^
-- ファイルの再編集
-- git add (file)
-- git commit -a -m "新しいコミットメッセージ"
- コミットメッセージの書き換えだけにも利用できる
*** git reset <path> [#wa06e001]
- git reset にファイル名を指定すると、明示的に指定された...
*** git revert [#o23b0f27]
- git revert は 過去のコミットを取り消す
*** git fetch [#bd000030]
- git pull = git fetch + git merge
- fetch はローカルマシン上のオリジン情報(= origin/master...
*** git log [#zc13fb77]
- git log --pretty=oneline : 一行で表示オプション 出力さ...
- git log --pretty=format: (option) で色々な表示にできる
git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 11 months ago : changed the vers...
085bb3b - Scott Chacon, 11 months ago : removed unnecess...
a11bef0 - Scott Chacon, 11 months ago : first commit
-- format の書き方
|%H| コミットのハッシュ|
|%h| コミットのハッシュ (短縮版)|
|%T| ツリーのハッシュ|
|%t| ツリーのハッシュ (短縮版)|
|%P| 親のハッシュ|
|%p| 親のハッシュ (短縮版)|
|%an| Author の名前|
|%ae| Author のメールアドレス|
|%ad| Author の日付 (--date= オプションに従った形式)|
|%ar| Author の相対日付|
|%cn| Committer の名前|
|%ce| Committer のメールアドレス|
|%cd| Committer の日付|
|%cr| Committer の相対日付|
|%s| 件名|
*** git log でサマリーを表示させるスクリプト(gitlog) [#...
- alias gitlog='git log --pretty="%h %ad: %s" --date=sho...
*** git push ローカル上の変更をリモートに反映 [#jccfaea5]
munakata@muna-E420:~/beamer/keio2012$ git push e420 master
munakata@mythen.hmuna.com's password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 337 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/hom...
462fe87..7a936a0 master -> master
*** 既にあるブランチへの切り替え [#d8f67457]
- git checkout ブランチ名
*** git ブランチを作成して、そのブランチに移動 [#qf876a04]
- git checkout -b ブランチ名
これは以下の2つをまとめて実行したことになる
- git branch ブランチ名
- git checkout ブランチ名
*** git ブランチをプッシュ [#d69832d3]
- git push origin [branch 名]
*** git ブランチの削除 [#z33851e0]
- git branch -d ブランチ名
*** git の管理対象から外す [#yaf510d3]
- .git と同じディレクトリーに .gitignore というファイルを...
- git はリカーシブに検索するのでファイル拡張子を指定する...
- &color(red){注意:一度 git の追跡対象となったファイルは...
*** git の管理対象から外す2(.gitignore に追加登録する場...
- 特定のファイルを対象外にする場合
git rm --cached [ファイル名]
- 一括してキャッシュを削除する場合
git rm -r --cached .
*** git gc [#o6ce1490]
- レポジトリの最適化(未使用オブジェクトの削除、圧縮)
*** 過去のリビジョンからファイルを復元 (abc123リビジョン...
git checkout -f abc123 hoge.txt
*** [[git tag:http://blog.s21g.com/articles/1359]] [#z633...
- git tag -a <タグ名> -m "メッセージ"
- git push --tags
- git checkout -b 1.6 refs/tags/v1.6 (tag を指定してブラ...
*** [[tag を削除 (付け直す):http://qiita.com/cutmail/item...
- git tag -d TAG_NAME (まずローカルのタグを削除)
- git push origin :refs/tags/TAG_NAME (リモートのタグを空...
*** git diff [#t0b42d1a]
- git diff --word-diff=color
-- 単語ベースのdiff
-- 行の中の一部だけが変更されてるのをみたりするのに便利
-- color を指定すると色の変化でdiffがわかって良い
-git diff --ignore-space-at-eol
-- 末尾空白の変更を無視する
-- なんかのついでに末尾スペース削りまくってるみたいな変更...
- git diff -b
-- 空白の変更を無視する
-- このへん多分インデントかわっただけだよね.. て心配なと...
*** git send-email [#w54c988c]
- apt-get install git-email
- git format-patch HEAD^ (file_name)
- git send-email (file_name)
*** マージされたPR元のブランチを自動的に削除する [#zb29ca...
- https://docs.github.com/ja/repositories/configuring-bra...
*** 日本語のファイル名などを表示させる [#b2fc2dc4]
- git config --global core.quotepath false
- [[git document:https://git-scm.com/docs/git-config]]
core.quotePath
Commands that output paths (e.g. ls-files, diff), will q...
by enclosing the pathname in double-quotes and escaping ...
same way C escapes control characters (e.g. \t for TAB, ...
with values larger than 0x80 (e.g. octal \302\265 for "m...
to false, bytes higher than 0x80 are not considered "unu...
and control characters are always escaped regardless of ...
A simple space character is not considered "unusual". Ma...
verbatim using the -z option. The default value is true.
*** [[git credential helperを使って &color(red){HTTP越し...
- &color(red){HTTP は基本的に読み込み専用のリポジトリーに...
- git config --global credential.helper store
- cloneが終わると、$HOME/.git-credentialsというファイルが...
- 中身はリポジトリホスト名とユーザ名・パスワードが平文で...
- git config --global credential.helper cache
*** [[SSH 接続でパスワードなしにするには公開鍵をサーバー...
- クライントで ssh-keygen を実行、パスフレーズは無しで生...
− サーバーの ~/.ssh に
cat (クライアントの公開鍵)>> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
- クライアントの ~/.ssh/config に
munakata@muna-E420:~/latex$ cat ~/.ssh/config
Host MYTHEN
HostName mythen.hmuna.com
Port 8823
IdentityFile ~/.ssh/muna_E420 (公開鍵)
User munakata
- クライアントのシェルに鍵を登録
$ ssh-agent bash
$ ssh-add ~/.ssh/(秘密鍵)
&color(red){注:gitサーバーの .ssh のディレクトリーのパー...
** [[git 環境変数の設定:http://transitive.info/article/gi...
munakata@mythen:~/My_presentations/als2013JP$ git config...
color.ui=auto
user.name=hisao munakata
user.email=public_mail@hmuna.com
core.quotepath=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=ssh://munakata@mythen.hmuna.com:8823/m...
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.mythen.url=ssh://munakata@mythen.hmuna.com:8823/m...
remote.mythen.fetch=+refs/heads/*:refs/remotes/mythen/*
** [[認証情報の登録(git credential):https://git-scm.com...
munakata@muna-U2404:~/latex/honda2024$ git config --glob...
munakata@muna-U2404:~/latex/honda2024$ git config --glob...
munakata@muna-U2404:~/latex/honda2024$ git credential fill
protocol=https
host=kgb2.hmuna.com:8722
username=munakata
password=!freedman7785
- https://blog.fieldnotes.jp/entry/git-credential-manager
** [[git 公式サイトマニュアル(日本語):http://git-scm.co...
** [[逆引き git:http://www.backlog.jp/git-guide/reference...
ページ名: