設定
鍵作成
作成前に有無確認
ls -la ~/.ssh/
鍵作成
ssh-keygen -t rsa
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_github_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
権限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
公開鍵の設定
秘密鍵 id_dsa
公開鍵 id_dsa.pub
公開鍵をサーバーに転送
scp .ssh/id_rsa.pub user@server:
~/.ssh/configを作成しその中に
サーバー側作業
## 公開鍵のセット
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub
# パーミッションの設定
chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
権限情報まとめ
クライアント側の .ssh/id_rsa のパーミッション (600)
サーバー側のホームディレクトリのパーミッション (755)
サーバー側の .ssh ディレクトリのパーミッション (700)
サーバー側の .ssh/authorized_keys のパーミッション (600)
ssh config
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_git_rsa #ここに自分の鍵のファイル名
User git
ssh -T github
sshの場合はこちら。。。
~/.gitconfig
[url "github:"]
InsteadOf = https://github.com/
InsteadOf = git@github.com:
Git config
git config --global user.name "your name"
git config --global user.email "your email address"
git config --global http.proxy "your proxy host if needed"
# 日本語文字化け対応
git config --global core.quotepath false
git config core.editor "your prefferd editor"
# 確認
git config --list
操作
ForkしてからPull Requestをするまでの流れ
チームで作業するときは
プロジェクトのレポジトリ(Upstream)から直接ブランチを切るのではなく、
フォークしてからブランチを切る
プッシュは自分のレポジトリに対して行い
プルリクエストをUpstreamに投げる
upstream:フォーク元、プロジェクトのレポジトリ
origin:フォーク先、自分のアカウントにフォークしてきたのレポジトリ
local:クローン先、自分のローカルにクローンしたレポジトリ
クローン
local:自分のローカルにレポジトリをクローンする
git clone <repository>
upstreamの設定
git remote add upstream <repository>
git branch -a
git fetch upstream
git pull upstream master
ブランチを切って作業する
git checkout -b ブランチ名
checkout直後の状態に戻す
git reset --hard
状態を確認する
git status
コミット
git add ファイル名
git commit -m <title>
コミットの取り消し
git commit --amend
git commit --amend -m <title>
プッシュ
origin:自分のアカウントにフォークしたレポジトリにプッシュする
git push origin <branch>
リバート
git revert <commit>
プッシュの取り消し
git log --oneline
git reset --hard コミット番号
git push -f origin <branch>
プルリクエストの作成方法
upstream:フォーク元のプロジェクトのレポジトリに対して
origin、自分のアカウントにフォークしたレポジトリから
プルリクエストを作成する
プル
# upstreamからのプル
git pull upstream master
# originからのプル
git pull origin master
スタッシュ
# 現在の作業保存
git stash
# ブランチ移動後作業を終えた後、元の作業ブランチに戻り、以下作業中の状況に戻れる
git stash apply
# stashのリストを見る
git stash list
コミットを取り消す3つのリセット
# ワーキングディレクトリはそのままでステージとコミットをリセット
git reset <commit>
# ワーキングディレクトリもステージもそのままでコミットだけリセット
git reset --soft <commit>
# ワーキングディレクトリ, ステージ, コミットの全てをリセット
git reset --hard <commit>
Rename branch
git branch -m <oldname> <newname>
自分の一週間分のコミットを確認
git log --pretty=format:"%h - %an, %ad (%ar) : %s" --since=1.weeks --author="Toshifumi Kurosawa"
空のプルリクエストを作る
# 空のコミット
git commit --allow-empty -m "<title>"
# リモートブランチに push
git push origin <branch>
# リモートブランチと紐付け
git branch -u origin/<branch>
# ローカルブランチがどのリモートブランチと紐付いているか確認
git branch -vv
alias
alias ga='git add'
alias gaa='git add .'
alias gaaa='git add -A'
alias gb='git branch'
alias gbd='git branch -d '
alias gc='git commit'
alias gcm='git commit -m'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcod='git checkout develop'
alias gcom='git checkout master'
alias gd='git diff'
alias gda='git diff HEAD'
alias gg='alias | grep git'
alias gi='git init'
alias gitkeep='find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;'
alias gitremove='find ./ -name .git | xargs sudo rm -rf'
alias gl='git log'
alias gld='git log --pretty=format:"%h %ad %s" --date=short --all'
alias glg='git log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit --date=relative'
alias glga='git log --graph --all --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit --date=relative'
alias glp='git log -p'
alias gm='git merge --no-ff'
alias gp='git pull'
alias gpom='git push origin master'
alias grh='git reset --hard'
alias gs='git status'
alias gss='git status -s'
alias gst='git stash'
alias gstd='git stash drop'
alias gstl='git stash list'
alias gstp='git stash pop'
alias podRepoRemoveMaster='git conf
5.コミットの順番を間違えちゃった! -- コミットログの並べ替えと削除
エディタが立ち上がるので並べ替えたり削除したりしましょう。
push前にログを整理するのによく使われます。
$ git rebase -i <commit>
6.コミット細かすぎィ! -- コミットログの統合と編集
まずはエディタを立ち上げます。
$ git rebase -i <commit>
親コミットに統合したい子コミットのpickをfixupに書き換えます。
コミットメッセージを編集したいコミットはpickをeditにします。
pick xxxxxx parent
fixup yyyyyy child
edit zzzzzz hoge
7.あのコミットさえあれば…! -- 他のブランチのコミットを適用する
リベースだと都合が悪いときに使います。
$ git cherry-pick <commit>
8.やばい!ハードリセットしたら消えちゃった! -- 過去の状態の復元
落ち着いてください。全ての操作は記録されています。
ログから親コミットを指定してハードリセットします。
$ git reflog
zzzzzz HEAD@{0}: reset: moving to <commit>
yyyyyy HEAD@{1}: foo
xxxxxx HEAD@{2}: hoge
$ git reset --hard HEAD@{1}
9.masterにマージ後にバグ発生!どうする!? -- コミットを打ち消すコミット
revertして修正後に再度マージしましょう。
revertはコミットログに残ります。
$ git revert <commit>
参考URL:
![ForkしてからPull Requestをするまでの流れ]
(http://www.google.com/s2/favicons?domain=http://kik.xii.jp/archives/179)ForkしてからPull Requestをするまでの流れ
ブランチの切り替えをしなくてよくなるコマンド git worktree がすごい!
![初心者から一歩抜け出すためのGitの業 〜 git rebase -i]
(http://www.google.com/s2/favicons?domain=http://qiita.com/tbaba/items/ee747a9f705ac4971299#_reference-415c2277736f735224cc)初心者から一歩抜け出すためのGitの業 〜 git rebase -i
![初心者から一歩抜け出すためのGitの業 〜 git reflog]
(http://www.google.com/s2/favicons?domain=http://qiita.com/tbaba/items/af563deac65d1b12de49)初心者から一歩抜け出すためのGitの業 〜 git reflog