git相關

--問題:git commit後默認進入vim窗口,編輯完註釋後如何提交呢?也就是如何退出vim?git

  方法:先按ESC(退出編輯模式),而後輸入 :wq! 就ok了,若是不想提交想取消了怎麼辦呢,輸入:q!(退出,但不保存,至關於取消了)github

 

--git經常使用命令:vim

  git init  (初始化版本庫)服務器

  git config --global user.name "..."  (配置全局用戶信息,就是告訴git你是誰)svn

  git config --global user.email "..."  (配置全局用戶信息,就是告訴git你是誰)url

  git add "fileName" (commit以前一個一個添加要提交的文件)spa

  git add .  (commit以前添加所有要提交的文件)rem

  git commit  (提交到倉庫,會進入vim,參考最上面的問題)it

  git commit -m "..."  (不進入vim,直接輸入本次註釋並提交)io

  git commit -a -m "..."  (git add和commit的合併,但新建立的文件不行,仍是得用add命令添加)

  git log  (列出因此提交記錄,最上面是最新的提交)

  git status  (當前倉庫的狀態,好比會列出修改了哪些文件)

git log -p   (列出log詳細信息)
git log tag/commitID..tag/commitID    (查看指定版本區間的記錄)
git log tag/commitID..    (查看指定版本以後的因此記錄)
git log -since="2 weeks ago"   (顯示最近2周以內的記錄)
git log branch1..branch2    (顯示在分支1不在分支2的記錄)
git branch "newBranchName"    (建立分支)
git branch "newBranchName" "commit id or tagName"    (基於某個版本建立分支)
git checkout "toBranchName"   (切換分支)
git merge "branchName"    (合併分支)(在當前分支merge別人, merge本身至關於沒merge,只要有關聯能夠跨主分支merge)
gitk   (圖形界面展現log)
git branch -d "branchName"    (刪除已經merge的分支)
git branch -D "name"    (不顧一切刪除分支)
git clone "uri"   (克隆一個版本庫到當前目錄)
git clone "originUri" "destinationPath"    (克隆版本庫到指定目錄)
git push    (拉去更新,不寫遠程地址,適用於從遠程克隆過來的版本庫)
git push "remotePath"    (適用於母體或改變默認remote的拉去)

git show "commit id"/"branchName"/"HEAD"    (查詢 某次提交/分支/當前分支頭 的詳情)
git show HEAD^    (查看head的父母的信息)
git show HEAD^^    (查看head的父母的父母的信息)
git show HEAD~4    (查看head上溯4代的信息)
git show HEAD^1    (由於merge可能會產生雙父母,查看第一個父母,把1改爲2就是查看第二個父母)
git tag "newName" "commit id"    (使用tag給某次提交起別名,而後就可使用別名來進行一些操做,如:查看詳情,基於該版本建立分支等)

git tag -d <tagname> 刪除本地tag

git push origin --delete tag <tagname> 刪除遠程tag

git push origin [tagname] 推送本地tag到遠程

 

git reset HEAD <file>  (撤銷add操做,將其還原到1階段)

git checkout --<fle>  (撤銷文件的修改,至關於svn revert)

git reset總結:

  git reset [枚舉參數] [要恢復到的版本號]

  枚舉參數:--hard:將working tree和index file都撤銷到指定版本號

       --mixed:會撤銷commit和index file,保留working tree

       --soft:只撤銷commit,保留working tree和index file

使用reset配合log或者show來查看版本號,想看更詳盡的操做記錄可使用reflog(包含撤銷步驟都顯示出來了)

本地撤銷到指定版本後,使用-f強制更新遠程代碼庫:git push -f origin [branchName]

 

 

git grep "keyWord"    (在全部歷史記錄中搜索包含keyword的行)
git grep "keyWord" "tag or commit id"    (在指定版本中搜索包含keyword的行)

git remote -v  (查看遠程倉庫)

git remote add origin git@github.com:githubUserName/repoName  例如:git remote add origin git@github.com:dreamofei/RepoTest  (將本地新的git倉庫於github上新建的遠程倉庫關聯)

 

Git原理:

git維護的代碼分紅三部分,當前工做目錄(記爲1:working tree)->index file(記爲2,add後的區域)->git倉庫(記爲3,commit後的區域),所以diff命令比較以下:

  git diff  (查看2到1的變化)

  git diff --cached  (查看3到2的變化)

  git diff HEAD  (查看3到1的變化) 

 

若是遇到本地顯示的遠程分支與遠程服務器上的分支不符,使用git remote update --prune 進行分支列表刷新操做

建立遠程分支:如今本地建立分支branch001,而後git push origin branch001,就在遠程建立了branch001分支(直接使用下面的命令也能夠,至關於提交,第一次會建立)

提交分支數據到遠程服務器:git push origin <local_branch_name>:<remote_branch_name>,若是當前在要提交的分支下,能夠直接git push

刪除遠程分支:git push origin :branch001

 

查看遠程分支:git branch -r

建立對應遠程分支的本地分支:好比遠程有分支branch002,那麼git branch branch002 origin/branch002,就在本地建立了一個與遠程分支對應的本地分支了

查看本地分支所對應的遠程分支:git branch -vv

將本地分支和遠程分支創建默認push關聯:git push --set-upstream origin 遠程分支名

 

修改遠程倉庫地址:git remote set-url origin URL

將本地倉庫和遠程倉庫進行關聯:git remote add origin URL

 

基於歷史提交建立分支:

 git checkout -b <branch name> <SHA1> 只checkout指定版本: git checkout <SHA1>

相關文章
相關標籤/搜索