假設把 F:\Git\HIS 文件夾做爲倉庫,先cd 到HIS目錄:git
cd F: #沒有/ cd Git #若是有多級目錄,使用反斜槓/,和Linux同樣 git init #把當前目錄初始化爲倉庫。當前目錄下會生成一個隱藏的.git文件夾
也能夠這樣:sql
cd F:
git init Git #會在指定目錄初始化爲一個倉庫,若是目錄不存在,會自動建立
從遠程倉把項目檢出到Git目錄下,再用git add把該項目置於Git管理下。數據庫
若是是本地項目,把項目新建到Git目錄下,或者剪切到Git目錄下,再用git add置於Git管理下。windows
在倉庫根目錄下放項目文件(工做區域)。安全
倉庫根目錄下的.git文件夾中,index文件是暫存區域,其餘文件組成版本庫,HEAD文件指向當前版本。spa
好比新增了 db.sql、開發文檔.docx 2個文件命令行
git add db.sql 開發文檔.docx #添加到暫存區域,有多個時空格分開便可。路徑相對於當前目錄 git commit -m "補上了數據庫文件、開發文檔" #把暫存區域的內容都提交到版本庫。每次提交都會產生一個新的版本。-m指定提交說明
git commit -am "說明" #添加、提交一步到位。a是add
git add resource #若是是文件夾,直接寫文件夾名 git add resource/* #也能夠這樣 git add resource/*.xml #可使用通配符 git add . #.表示當前目錄下的全部文件、文件夾 git add --all #也能夠這樣寫
咱們對項目進行了修改,可能一部分修改已經添加到了暫存區域,另外一部分修改還未添加到暫存區域,code
怎麼知道哪些修改被添加到了暫存區域,哪些修改沒有被添加到暫存區域? xml
git status
標出的文件都是發生了變化的(進行了增刪改),綠色的是已添加到暫存區域,紅色的是未添加到暫存區域。blog
冒號前面是所作的修改,new file是新建的此文件,deleted是刪除了文件,modified是修改了此文件的內容。
git diff #查看具體的修改內容。好比說你在文件中增刪了哪些字符,會給你列出來。
好比已經把 readme.md 添加到了暫存區域,不想提交這個修改了:
git reset HEAD readme.md #把readme.md從暫存區域移除。若是HEAD後面未指定要移除的文件、文件夾,默認移除上一次add操做添加的。
若是已經添加到暫存區域,又修改了文件,不用先回退再add,直接add覆蓋暫存區域中以前添加的。
每次git commit都會生成一個新的項目版本,也叫作一個快照,查看版本庫中的全部版本:
git log #查看當前及以前的全部版本
這是一個版本的信息,commit後面是版本號,HEAD表示這個是最新的版本,maste表示這是主分支。
提交者的信息、提交日期,以及提交說明-m。
git log --pretty=oneline # --pretty=oneline 一個版本顯示爲一行,只有版本號、提交說明
git log --pretty=oneline --abbrev-commit # --abbrev-commit 版本號簡寫,簡寫的版本號和完整的效果徹底相同
git log --graph # --graph 查看分支合併圖
git reflog #log只列出當前及以前的版本,若要列出所有的版本,使用reflog
git reset HEAD~ #回退到當前版本的上一個版本。HEAD指向當前版本。用~、^均可以,效果同樣 git reset HEAD~3 #回退到當前版本的上3個版本,不指定數字時,默認爲1
git reset 版本號 #回退到指定版本
#以上未指定回滾類型,默認爲--mixed,將工做區的項目回滾到指定版本(這是3種參數都有的,後續再也不說明),並移除暫存區的內容(直接刪除)
#--hard 將暫存區的內容回滾到工做區間,並刪除暫存區的內容
#--soft 暫存區的內容保留,不移除(不回滾到工做區間)
#使用示例:
git reset --hard 版本號
#用法和--mixed的徹底相同
#以上回退均是版本回退,會回退全部修改過的文件、文件夾
#能夠只回退指定的文件、文件夾,在末尾指定要回退的文件、文件夾便可,示例:
git reset HEAD~ readme.md #將readme.md回退到上一個版本
git checkout readme.md #將某些文件、文件夾回滾到上一個版本,暫存區保留(不回滾)
直接在windows的資源管理器中刪除文件|文件夾,只是物理刪除,版本庫中關於該文件|文件夾的記錄還在,能夠回滾該文件|文件夾,刪除了也能夠恢復。
git rm 1.txt #刪除文件 git rm -r resource #刪除文件夾,-r表示遞歸
git上刪除文件|文件夾,是物理刪除+刪除版本庫中改文件|文件夾的相關信息,回滾版本時不會回滾該文件|文件夾。
git rm會自動把刪除操做添加到暫存區,但須要本身提交。
有時候須要開發某一模塊,能夠以分支的形式開發,分支、主幹同時進行開發,分支開發完成合併到主幹上。
git branch 分支名 #建立一個新分支。項目默認是master 主幹 git branch #查看全部的分支,master會用綠色標出,前面帶一個*號 git checkout 分支名 #切換到某個分支 git checkout -b 分支名 #建立並切換到指定分支,一步到位
git merge 分支名 #把指定分支合併到當前分支中,會自動提交合並。默認使用Fast forward模式,一旦刪除分支,會丟失分支信息,也就看不出來曾經作過合併
git merge --no-ff -m "合併說明" 分支名 #--no-ff即不使用ff(fast forward模式),無論分支有沒有被刪除,在歷史版本中均可以查看到分支信息,這種用得多
git branch -d 分支名 #刪除分支。若是分支還沒有合併到主幹上,會丟失分支信息,沒法用-d刪除。-d只能刪除已合併到主幹上的分支
git branch -D 分支名 #-D 強制刪除。無論合沒合併到主幹上,均可以刪掉
每次提交都會產生一個新的版本,Git使用一長串字符做爲版本號來表示一個版本,其實也不算是版本號,只是commit id。
一串亂七八糟的字符很差閱讀,在提交大的修改後,能夠給本次提交的版本加一個標籤。
git tag v1.1 #給當前版本(最新提交的版本)加tag,tag後面指定標籤名
git tag -a v1.1 #能夠直接指定標籤名,也可使用-a來指定
git tag 標籤名 commit_id #給指定的版本加tag
git tag #查看全部的tag,只列出tag
git log #git log系列命令也會列出tag,信息更加詳細
git show 標籤名 #查看某個標籤對應版本的詳細信息,包括提交者信息、提交時間、具體修改信息等
git tag -d 標籤名 #刪除指定的標籤名。只刪除標籤。
#標籤名默認只存儲在本地版本庫中,刪除是默認也只刪除本地版本庫中的。若是要在遠程倉庫中操做標籤,還須要一些操做。
git push origin 標籤名 #推送指定的標籤到遠程倉庫。orgin是遠程倉庫的別名
git push origin --tags #推送本地版本庫中全部的標籤到遠程倉庫
git push orgin :refs/tags/標籤名 #刪除本地版本庫的標籤後,再執行此句代碼推送到遠程倉庫(同步到遠程倉庫)
安裝Git時勾選了Unix命令風格,Linux是類Uninx系統,在Git命令行可使用Linux命令,好比pwd顯示當前目錄。