cd ls / ls -a clear mkdir rmdir echo "hi, good day" > hi.txt touch hello.txt //建立文件 cat hi.txt //打印文件內容 cat -n hi.txt 帶行號打印 rm hello.txt //刪除文件 vim hi.txt //vim編輯hi.txt 同 vi hi.txt help tar // tar --help 解壓 tar -xvzf mypro.tat.gz whoami //當前用戶
//光標定位 Ctrl-A 至關於HOME鍵,用於將光標定位到本行最前面 Ctrl-E 至關於End鍵,即將光標移動到本行末尾 Ctrl-B 至關於左箭頭鍵,用於將光標向左移動一格 Ctrl-F 至關於右箭頭鍵,用於將光標向右移動一格 //刪除字符 Ctrl-D 至關於Del鍵,即刪除光標所在處的字符 Ctrl-K 用於刪除從光標處開始到結尾處的全部字符 Ctrl-U 用於刪除從光標開始到行首的全部字符。通常在密碼或命令輸入錯誤時經常使用 Alt-BackSpace 用於刪除本行全部的內容,基本上和Ctrl-U相似。 Ctrl-H 刪除光標左側的一個字符 Ctrl-W 用於刪除當前光標左側的一個單詞 //清屏 Ctrl-L 清屏,至關於clear命令 //導航歷史命令 Ctrl-R 進入歷史命令查找狀態,而後你輸入幾個關鍵字符,就能夠找到你使用過的命令 Ctrl-P 至關於上箭頭鍵,即顯示上一個命令 Ctrl-N 至關於下箭頭鍵,即顯示下一個命令 Alt-. 用於提取歷史命令中的最後一個單詞。你先執行history命令,而後再敲擊此快捷鍵若干下,你就懂了! Ctrl-T 用於顛倒光標所在處字符和前一個字符的位置。(目前不知道有什麼做用,哪位朋友知道?) Ctrl-J 至關於回車鍵 //大小寫轉換 Alt-C 用於將當前光標處的字符變成大寫,同時本光標所在單詞的後續字符都變成小寫。 Alt-L 用於將光標所在單詞及所在單詞的後續字符都變成小寫。 Alt-U 用於將光標所在單詞的光標所在處及以後的全部字符變成大寫。
#設置 git config --global user.name "youname" git config --global user.email "youemail" git config --global hello.test onlytest //全局配置文件位於 %userprofile%/.gitconfig, 本地配置指cmd的當前工做目錄 #獲取 git config --get user.name git config --get-all user.name //從各個級別(本地 全局)的配置文件中取配置值 git config --get-regexp user* //用正則指定想獲取的配置項 #刪除 git config --global --unset hello.test git config --global --remove-section hello #顯示 git config -l git config --global -list #顯示幫助 git config -h //命令行裏顯示簡要幫助 git config --help //瀏覽器打開git安裝目錄下的html幫助文件
//建立目錄 初始化本地git倉庫 mkdir myproject cd myproject git init //建立空的git倉庫或從新初始化已有的倉庫,建立.git目錄(objects, refs/heads, refs/tags, HEAD和模板文件) git init-db //同 git-init git fsck //檢查倉庫有沒有錯誤 git gc //用垃圾回收機制清除因爲reset形成的垃圾代碼
working(工做目錄) -> index(暫存區) -> HEAD(本地倉庫)
git add <file> / git add . git commit -m "some comments" git commit -a -m "add and commit"
git diff //工做目錄 和 index的差別比較 git diff --cached//index和HEAD(最近一次提交)的差別比較 git diff HEAD //工做目錄同HEAD的比較 git diff <branch1>..<branch2> #分支比較 git status //當前分支狀態
git log / git log -p git log <tag1>..<tag2> //顯示兩個標籤之間的提交日誌 git log <tag1>.. //顯示tag1標籤以後的提交日誌 git log --since="2 weeks ago" git log -n 3 //查看最近3次的提交日誌 git log v1.0.. somefolder //somefolder從v1.0後的提交日誌 gitk --since="2 weeks ago" git show HEAD //查看最近一次提交日誌
//git reset 是指 撤銷到哪一個commitId,缺省commitId 則爲HEAD git reset //若當前修改stage了,但未提交,則回退,HEAD->index git reset HEAD //HEAD->index 同上 git reset --hard HEAD //working tree, index file 都撤銷到最後一次commit的狀態 git reset --soft HEAD^ //恢復到上一次commit的代碼 soft表示不改動index file和working tree git reset HEAD //默認是 --mixed, index file 和 commit都會撤銷到最後一次commit以前的狀態, working file不受影響。 git reset -- <file> //撤銷某文件的staged狀態 (git status查看變化) HEAD->index git reset -- . #撤銷當前文件夾的staged狀態 git rebase //重設基
#建立 git branch mybranch //建立分支 git checkout -b local_name origin/remote_name #基於遠端分支建立新分支 如:git checkout -b dev origin/dev,做用是checkout遠程的dev分支,在本地起名爲dev分支,並切換到本地的dev分支 git branch <branchName> <tagName> //基於某標籤創建分支 #查看 git branch -a //顯示全部分支 git branch -r //顯示遠端分支 git branch //列出全部分支 git show-branch //顯示全部分支 信息多一點 git branch -v //同上 #切換 合併 git checkout mybranch //切換分支 , git checkout -b otherBranch 建立並切換 git checkout master //do some change in master git merge mybranch //合併分支到主幹 //如有衝突 手動解決衝突後,再次提交 vim <file> git commit -a -m "conflit resolved" //解決衝突後從新提交 gitk //可視化分支查看界面 #刪除 git branch -d mybranch //分支合併到主幹後 刪除分支 git branch -D mybranch //不管分支是否合併 都執行刪除
git remote add origin repoUrl //添加遠端倉庫 git remote show origin #顯示遠端倉庫的詳細信息(fetchUrl pushUrl, branches, "local branches configured for 'git pull'" , "local refs configured for 'git push' ")
git push origin localBranch:remoteBranch//推送數據 //本地master推送到遠程的remaster 如: git push origin master:remaster
//檢出代碼到本地某文件夾, repoUrl能夠爲遠端url或本地路徑 //(注:只clone遠端倉庫的當前分支,並不是所有分支都clone過來) git clone <repoUrl> <localDir> //clone 遠端倉庫的某個分支 git clone -b <remote_branch> <remote_repo> //pull的意思是指從遠端git倉庫fetch修改的代碼, //而後merge到本地的git倉庫當前分支/指定分支中 git pull <repoLocalPath> master //根據本地分支-遠程分支的對應關係從遠端拉取更新 //如git clone的倉庫和自動和遠程倉庫的default分支創建對應關係 git pull git fetch origin remote_branch_name:local_branch_name //拉取遠端git倉庫master分支到本地mybranch2分支 git fetch <remoteRepo> master:mybranch2
git show <commitid> //查看某個提交的信息,git log可得到commitid git show HEAD //HEAD能夠認爲是最近一次commit的 commitid 同 git log -n 1 -p git show HEAD^ //顯示上一次commit的信息(parent commit) git show HEAD^^ //顯示上上次commit git show HEAD~3 //顯示前3次commit git show HEAD^1 //顯示第1個上次commit(parent commit) git show <branchName> //顯示分支信息最近一次提交的信息
git tag <tagName> //給最近的提交加標籤 git tag v1.0 git tag <tagName> <commitid> //給某次commit加標籤(起別名) git show <tagName> //顯示某標籤對應commit的信息
//查看git對象內容(tree, blob, HEAD ,index) git cat-file -t <id> //-t 獲取id對應對象的類型 git cat-file commit <commitId> //查詢一個commit對象 git cat-file blob <blobId> //查看二進制對象的內容 git ls-tree <treeId> //查看樹對象 git ls-files --stage //查看index file的內容 cd .git cat HEAD
//內容搜索 git grep "keyword" <branchName> //在某分支的文件中 搜索關鍵字 git grep "keyword" //在全部歷史記錄中搜索
//獲取幫助 git <command> -h //直接在命令行顯示用法 git <command> --help //用瀏覽器打開對應的文檔
commit -a
自動地add全部改動的代碼到index file中, 刪除在index file中但不在working tree中的文件,執行commithtml
git log -p
不只顯示commit日誌,同時顯示每次commit的代碼變更linux
合併兩個或兩個以上的分支,若自動合併(auto-merge)成功,則變動會被寫入index file,須要再 commit 一下; 若發生衝突,則working tree
會處於一種特殊的狀態(git status, git diff 查看衝突狀況),手工解決衝突後,須要 git add <file>
git commit
git
若要撤銷合併,則git reset --hard HEAD
//--hard表示將working tree和index file回退到以前的狀態, soft表示撤銷commit的修改,保留working tree和index file的, mixed則表示撤銷index file 和commit的修改,保留working tree的github
用於從遠端git倉庫拉取更新, git fetch <options> <repo> <refspec>
(dst爲空則用當前分支) , 如:
git fetch /home/lucy/myrepo master:lucyworks
從myrepo的master分支拉取內容到本地的lucyworks分支
用於從遠端git倉庫拉取更新併合併到本地的git倉庫中, git pull
是 git fetch
和 git merge
命令的組合
如: git pull /home/lucy/myrepo
從myrepo目錄拉取內容併合併到本地倉庫的當前分支瀏覽器
git pull .
至關於git merge
, 如: git pull . mybranch
.
表示當前倉庫, 忽略了
給commit起別名, git tag V3.2 5b88c
, git show V3.2
app
只需將開發的文件夾copy到須要的位置便可,須要恢復時,執行一下 git init
便可。測試
git remote update #更新遠程主機的數據? 如遠端增長或刪除分支 git remote show origin #顯示遠程主機origin的信息 **很實用** git remote -v #查看遠端倉庫的配置信息 cat -n .git/config #查看本地配置文件
# 本地修改文件後,不但願commit到遠端倉庫能夠這樣 git commit -m "commit part of changes" -- folderName_or_fileName git commit --amend # 修改最後一次提交記錄
# 顯示某次提交的內容 git show commitId git show tag1 git show HEAD^ git show branchName
git checkout branchName #一般用於切換分支 #撤銷未暫存的修改 git checkout -- <file> # 拋棄未staged的某文件的修改 (index->workspace) git checkout . # (未staged的狀況下)拋棄工做區修改
git rm <file> # 從版本庫中刪除文件,同時從工做目錄刪除文件 git rm <file> --cached # 從暫存區中刪除文件,但不刪除工做目錄中對應文件
git revert commitId # 恢復某次提交的狀態,恢復動做自己也建立次提交對象 git revert HEAD # 恢復最後一次提交的狀態
git diff <file> # 比較當前文件和暫存區文件差別 git diff git diff <commitId1>..<commitId2> # 比較兩次提交之間的差別 git diff <branch1>..<branch2> # 在兩個分支之間比較 git diff --staged # 比較暫存區和版本庫差別 git diff --cached # 比較暫存區和版本庫差別 git diff --stat # 僅僅比較統計信息
git log <file> # 查看該文件每次提交記錄 git log -p <file> # 查看每次詳細修改內容的diff git log -p -2 # 查看最近兩次詳細修改內容的diff //同 git log -p -n 2 git log --stat #查看提交統計信息
#查看、切換、建立和刪除分支 git branch -r # 查看遠程分支 git branch <new_branchanch> # 建立新的分支 git branch -v # 查看各個分支最後提交信息 git branch --merged # 查看已經被合併到當前分支的分支 git branch --no-merged # 查看還沒有被合併到當前分支的分支 git checkout <branch> # 切換到某個分支 git checkout -b <new_branch> # 建立新的分支,而且切換過去 git checkout -b <new_branch> <branch> # 基於branch建立新的new_branch git checkout commitId # 把某次歷史提交記錄checkout出來,但無分支信息,切換到其餘分支會自動刪除 git checkout commitId -b <new_branch> # 把某次歷史提交記錄checkout出來,建立成一個分支 git branch -d <branch> # 刪除某個分支 git branch -D <branch> # 強制刪除某個分支 (未被合併的分支被刪除的時候須要強制) #分支合併和rebase git merge <branch> # 將branch分支合併到當前分支 git merge origin/master --no-ff # 不要Fast-Foward合併,這樣能夠生成merge提交 git rebase master <branch> # 將master rebase到branch, 至關於: git checkout <branch> && git rebase master && git checkout master && git merge <branch> Git補丁管理(方便在多臺機器上開發同步時用) git diff > ../sync.patch # 生成補丁 git apply ../sync.patch # 打補丁 git apply --check ../sync.patch #測試補丁可否成功
git stash # 暫存 git stash list # 列全部stash git stash apply # 恢復暫存的內容 git stash drop # 刪除暫存區
git pull # 抓取遠程倉庫全部分支更新併合併到本地 git pull --no-ff # 抓取遠程倉庫全部分支更新併合併到本地,不要快進合併 git fetch origin # 抓取遠程倉庫更新 git merge origin/master # 將遠程主分支合併到本地當前分支 git checkout --track origin/branch # 跟蹤某個遠程分支建立相應的本地分支 git checkout -b <local_branch> origin/<remote_branch> # 基於遠程分支建立本地分支,功能同上 git push # push全部分支 git push origin master # 將本地主分支推到遠程主分支 git push -u origin master # 將本地主分支推到遠程(如無遠程主分支則建立,用於初始化遠程倉庫) git push origin <local_branch> # 建立遠程分支, origin是遠程倉庫名 git push origin <local_branch>:<remote_branch> # 建立遠程分支 git push origin :<remote_branch> #先刪除本地分支(git br -d <branch>),而後再push刪除遠程分支
GitHub git remote -v # 查看遠程服務器地址和倉庫名稱 git remote show origin # 查看遠程服務器倉庫狀態 git remote add origin git@ github:robbin/robbin_site.git # 添加遠程倉庫地址 git remote set-url origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址(用於修改遠程倉庫地址) git remote rm <repository> # 刪除遠程倉庫 建立遠程倉庫 git clone --bare robbin_site robbin_site.git # 用帶版本的項目建立純版本倉庫 scp -r my_project.git git@ git.csdn.net:~ # 將純倉庫上傳到服務器上 mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服務器建立純倉庫 git remote add origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址 git push -u origin master # 客戶端首次提交 git push -u origin develop # 首次將本地develop分支提交到遠程develop分支,而且track git remote set-head origin master # 設置遠程倉庫的HEAD指向master分支 也能夠命令設置跟蹤遠程庫和本地庫 git branch --set-upstream master origin/master