基本

前提

設定

運用

ローカルリポジトリの作成

リモートリポジトリの作成

ローカルの内容をリモートに反映

ローカルに git を導入

ローカルとリモートの repo の関係付け ( git remote add )

$ git remote add origin ssh://munakata@kgb2.hmuna.com:8722/raid_vol/home/git/repos/XXXX

remote ブランチとの関係付けを確認( git remote -v)

[local] munakata:~/latex/LFS301-JP$ git remote -v
github	https://github.com/hmunak/LFS301-JP-local.git (fetch)
github	https://github.com/hmunak/LFS301-JP-local.git (push)
hmuna	ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/home/git/repos/LFS301-JP (fetch)
hmuna	ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/home/git/repos/LFS301-JP (push)
origin	ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/home/git/repos/LFS301-JP (fetch)
origin	ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/home/git/repos/LFS301-JP (push)

ブランチ名を指定してリモートブランチを取得(clone -b リモートブランチ名)

− git clone -b ブランチ名 https://リポジトリのアドレス

ブランチ名の確認( git branch -a)

ローカルブランチ名の変更( git branch -m )

ローカルブランチの削除( git branch -d )

リモートブランチの削除

リモートブランチの最新状況(削除など)をローカル側に反映する

リモートブランチ名を変更した時の、ローカルブランチの対応付け

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 branch --set-upstream-to=origin/master master

ローカルブランチがトラッキングブランチであるかどうか確認

ローカルがブランチが追跡しているリモートブランチの確認

[local] munakata:~/latex/LFS301-JP$ git branch -vv
* japanese-wip2 09f7ec1 [origin/japanese: ahead 2] Mint Linux -> Linux Mint, fix missing correction

追跡するリモートブランチの設定

git push -u origin [ブランチ名]

インデックス、 ワーキングツリー、 HEAD の関係の変化

デフォルトのブランチ名の指定( master を main などに変更する)

git config --global init.defaultBranch main

detached HEAD

git add -p

git add する前(=ステージングしていない状態)で変更を取り消す

git add (=ステージング)の取り消し (2回目以降のステージングの取り消し)

git commit

git commit <path>

git commit(但し、push 前)の取り消し(コミットの取り消しのみ、変更内容は保持)

git commit(但し、push 前)の取り消し(コミットと変更自体の取り消しを同時に行う)

git rebase -i で過去数回分のコミットをまとめる

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 log message
# 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 の違い

git diff --stat

[local] munakata:~/source/perl/nana2tex$ git diff eada 8435 --stat
 Makefile    |  6 ++++--
 nana2tex.pl | 78 +++++++++++++++++++++++++++++++-----------------------------------------------
 2 files changed, 35 insertions(+), 49 deletions(-)

git reset

git pull でコンフリクトした時の対応

Your local change would be overwritten by merge. Commit, stash or revert to proceed と言われたら

ローカルの master を、強制的にリモートの master に合わせる

// 1) リモートの最新を取ってきておいて・・
$ git fetch origin master

// 2) ローカルのmasterを、リモート追跡のmasterに強制的に合わせる!
$ git reset --hard origin/master

git commit --amend : 直前のコミットのやり直し

git reset <path>

git revert

git fetch

git log

git log でサマリーを表示させるスクリプト(gitlog)

git push ローカル上の変更をリモートに反映

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/home/munakata/repos/keio2012
   462fe87..7a936a0  master -> master

既にあるブランチへの切り替え

git ブランチを作成して、そのブランチに移動

これは以下の2つをまとめて実行したことになる

git ブランチをプッシュ

git ブランチの削除

git の管理対象から外す

git の管理対象から外す2(.gitignore に追加登録する場合には必須)

git gc

過去のリビジョンからファイルを復元 (abc123リビジョンにあるhoge.txtを持ってきたいとする)

git checkout -f abc123 hoge.txt

git tag

tag を削除 (付け直す)

git diff

git send-email

マージされたPR元のブランチを自動的に削除する

日本語のファイル名などを表示させる

git credential helperを使って HTTP越しで 認証がかかっているリポジトリにアクセスする

SSH 接続でパスワードなしにするには公開鍵をサーバーに登録する

注:gitサーバーの .ssh のディレクトリーのパーミションが 700 でないと、git push 時に git ユーザーのパスワードを聞かれる(が、git アカウントには対話ログインを許可していないので正しいパスワードを入れても push できない。)

git 環境変数の設定

munakata@mythen:~/My_presentations/als2013JP$ git config -l
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/mnt/raid_vol/home/munakata/repos/als2013JP
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.mythen.url=ssh://munakata@mythen.hmuna.com:8823/mnt/raid_vol/home/munakata/repos/als2013JP
remote.mythen.fetch=+refs/heads/*:refs/remotes/mythen/*

認証情報の登録(git credential)

munakata@muna-U2404:~/latex/honda2024$ git config --global credential.helper cache

munakata@muna-U2404:~/latex/honda2024$ git config --global credential.helper store
 
munakata@muna-U2404:~/latex/honda2024$ git credential fill
protocol=https
host=kgb2.hmuna.com:8722
username=munakata
password=!freedman7785

git 公式サイトマニュアル(日本語)

逆引き git


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS