提交到版本庫:git commit
切換到新分支:git checkout -b newBranch
合并分支:git merge xxx
單線合并:git rebase xxx
*HEAD 是一個對當(dāng)前檢出記錄的符號引用,總是指向當(dāng)前分支上最近一次提交記錄
cat .git/HEAD 或者git symbolic-ref HEAD查看HEAD的指向
HEAD可以分離,指向某一commit
查看提交記錄的哈希值:git log
相對引用:1.使用 ^ 向上移動 1 個提交記錄;2.使用 ~<num> 向上移動多個提交記錄,如 ~3
將 master 分支強制指向 HEAD 的第 3 級父提交:git branch -f master HEAD~3
撤銷改動:git reset HEAD^
遠程撤銷改動,但會提交一個commit,然后再push就可以同步遠程撤銷:git revert
將一些提交復(fù)制到當(dāng)前所在的位置(HEAD):git cherry-pick commitid commitid
交互式rebase,修改commit的順序、合并方式:git rebase -i HEAD~4(commitid)
修改commit:git commit --amend
建立標(biāo)簽:git tag tagname commitId
命令用來描述離你最近的錨點(也就是標(biāo)簽):git describe <ref>(提交的引用)
多個父節(jié)點選擇^:git checkout master^n(從右到左第幾)
克隆遠程分支:git clone
你的遠程倉庫默認(rèn)為 origin,本地倉庫多了一個名為 o/master 的分支, 這種類型的分支就叫遠程分支,遠程分支反映了遠程倉庫(在你上次和它通信時)的狀態(tài),遠程分支有一個特別的屬性,在你檢出時自動進入分離 HEAD 狀態(tài)。
從遠程倉庫獲取數(shù)據(jù)時, 遠程分支也會更新以反映最新的遠程倉庫:git fetch
git fetch 完成了僅有的但是很重要的兩步:
- 從遠程倉庫下載本地倉庫中缺失的提交記錄
- 更新遠程分支指針(如 o/master)
git fetch 和 git merge <just-fetched-branch> 的縮寫:git pull
推送到遠程:git push
*git push 不帶任何參數(shù)時的行為與 Git 的一個名為 push.default 的配置有關(guān)。
推送標(biāo)準(zhǔn)公式:
git fetch; git rebase o/master; git push=》git pull --rebase; git push
遠程跟蹤:master 和 o/master 的關(guān)聯(lián)關(guān)系就是由分支的“remote tracking”屬性決定的。當(dāng)你克隆倉庫的時候, Git 就自動幫你把這個屬性設(shè)置好了。
當(dāng)你克隆時, Git 會為遠程倉庫中的每個分支在本地倉庫中創(chuàng)建一個遠程分支(比如 o/master)。然后再創(chuàng)建一個跟蹤遠程倉庫中活動分支的本地分支,默認(rèn)情況下這個本地分支會被命名為 master。
通過遠程分支檢出一個新的分支:git checkout -b localbranchname origin/master
設(shè)置遠程追蹤分支:git branch -u origin/master foo
為 push 指定參數(shù):git push <remote> <place>
把本地的 foo 分支推送到遠程倉庫中的 bar 分支:
git push origin <source>:<destination>
為 fetch指定參數(shù)git fetch <remote> <place>
git fetch origin <source>:<destination>,source 現(xiàn)在指的是遠程倉庫中的位置,而 <destination> 才是要放置提交的本地倉庫的位置。它與 git push 剛好相反,git pull同理
古怪的 <source>:
- 可以在 git push 或 git fetch 時不指定任何 source,方法就是僅保留冒號和 destination 部分,source 部分留空。
git push origin :side 刪除目的分支
git fetch origin :bugFix 新建一個分支