Git 笔记
设置 (shè
制作钥匙
在进行创建之前确认有无。
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配置
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配置
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:フォーク元、プロジェクトのレポジトリ
origin:フォーク先、自分のアカウントにフォークしてきたのレポジトリ
local:クローン先、自分のローカルにクローンしたレポジトリ
克隆
将存储库克隆到本地。
git clone <repository>
上游的配置
git remote add upstream <repository>
git branch -a
git fetch upstream
git pull upstream master
切下分支进行工作
git checkout -b ブランチ名
将页面恢复到结账之前的状态。
git reset --hard
确认状态
git status
提交
git add ファイル名
git commit -m <title>
撤销提交
git commit --amend
git commit --amend -m <title>
推
将更改推送到我个人账户的派生仓库。
git push origin <branch>
里化
git revert <commit>
取消推送
git log --oneline
git reset --hard コミット番号
git push -f origin <branch>
请提供创建Pull Request的步骤。
在源项目仓库中,通过fork到我的账户的仓库,生成一个拉取请求。
请给我来一杯。
# upstreamからのプル
git pull upstream master
# originからのプル
git pull origin master
胡子
# 現在の作業保存
git stash
# ブランチ移動後作業を終えた後、元の作業ブランチに戻り、以下作業中の状況に戻れる
git stash apply
# stashのリストを見る
git stash list
撤销三个提交的重置
# ワーキングディレクトリはそのままでステージとコミットをリセット
git reset <commit>
# ワーキングディレクトリもステージもそのままでコミットだけリセット
git reset --soft <commit>
# ワーキングディレクトリ, ステージ, コミットの全てをリセット
git reset --hard <commit>
更改分支名称
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 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>