分支管理策略:通常來講都是一個master分支,這個分支只用來發布新版本,不在上面幹活,應該新建一個dev分支,平時都在dev上面幹活,每一個人一個分支,以後合併到dev上面就行,要發佈時就把dev合併到master分支上便可。git
git stash 把當前工做現場先存起來(不是add也不是commit),能夠暫時去作其餘事,以後(主要應用場景是當前手頭工做沒作完不能commit,可是又有緊急的bug須要切換到其餘分支上去修復)app
git stash list 查看全部存起來的工做現場post
git stash apply <指定stash> 或者 git stash pop <指定stash> ,二者區別就是前者恢復工做現場後stash list當中並不刪除指定stash,然後者就是直接將stash list中的pop出去刪除了。fetch
git remote 查看遠程庫信息,遠程庫默認名字是origin,git remote -v
查看更詳細的信息spa
git push origin <brancName> 將分支推送到遠程的branch分支上.net
若是在git clone時不指定branch名稱,那麼clone下來的只會包含遠程的master分支,在這以後若是要切換到遠程的某一分支上,例如dev分支,那麼就須要git checkout -b dev origin/dev
,用這個命令建立本地的dev分支,而後就能夠在這個dev上修改,並在以後隨時push日誌
若是多我的同時關聯了遠程庫(多人協做時),在push的時候,發現有人已經向remote推送了他的提交,而你對一樣的文件作了修改,那麼在push的時候就會報錯rejected推送失敗,由於有衝突,因此這時候應該git pull拉取最新的提交併(自動地)在本地合併,產生衝突,而後本地解決衝突以後再add、commit,再push。code
git pull 從遠程拉取最新的修改到本地併合並,若是有衝突則須要在本地解決。git pull至關於git fetch加上mergeserver
接着上面的說,若是本地解決衝突再push上去以後,其餘的人是不會自動的得到更新消息的,就是說別人使用git status會提示up to date with origin/,他們須要git fetch或者git pull以後才能獲取到遠程最新的變更blog
git fetch 從遠程取回全部分支的更新(但不會自動合併)
git fetch origin <branchName> 從遠程取回branchName分支的更新(但不會自動合併)。使用fetch以後就能夠用git status查看到本地和遠程以後的變更了。
git rebase 變基
git diff <filename> 不帶參數就是比較工做區和stage中filename文件的不一樣
git diff --cached <filename> 比較stage和repository中filename文件的不一樣
git diff HEAD <filename> 比較工做區和repository中filename文件的不一樣
標籤
git add . 只添加當前目錄下的更改
git add -A 添加repository中全部目錄下的修改
在本地新建一個分支再push到遠端: git checkout -b newbranch,git push origin newbranch
git cherry-pick <commitid> 、 git cherry-pick <commitid1>..<commitid2> 這裏的<commitid>
通常來講不是當前分支上的,而是另外一個分支上的<commitid>
,用於將另外一個分支上的提交commit(或者說複製到、摘抄到)到當前分支,詳見:git 場景——從一個分支cherry-pick一個或多個commit到另外一個分支