本文章只限用於Windows,敬請參考html
注意:操做命令純屬手敲,可能會有錯誤,錯誤後參考文章連接!git
Git下載地址:https://gitforwindows.org/ # Windows版本github
安裝方式:一頓操做猛如虎,一看全是下一步。煩請移步百度。windows
安裝完成後打開 Git Bash (打不開百度)app
由於Git是分佈式版本控制系統,因此須要填寫用戶名和郵箱做爲一個標識。ssh
填寫用戶名: git config --global user.name "這裏填寫您的用戶名"分佈式
填寫郵箱:git config --global user.email "這裏填寫您的郵箱"fetch
什麼是版本庫?版本庫又名倉庫,英文名repository,你能夠簡單的理解一個目錄,這個目錄裏面的全部文件均可以被Git管理起來,每一個文件的修改,刪除,Git都能跟蹤,以便任什麼時候刻均可以追蹤歷史,或者在未來某個時刻還能夠將文件」還原」。加密
首先進入您的倉庫目錄:cd E:\code\testgit命令行
輸入pwd命令能夠查看當前的目錄
改變倉庫屬性: git init Initialized empty Git repository in E:\code\testgit
這時候你當前testgit目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄裏面的文件,不然,會把git倉庫給破壞了。
把文件添加到暫存區: git add 您的文件(包括文件後輟名)
把文件提交到倉庫: git commit -m 「您的文件(這個地方是提交文件的註釋)」
查看未提交文件: git status
查看文件修改的具體內容: git diff 您的文件(包括文件後輟名)
一次性把全部暫存庫的文件提交到倉庫: git commit
查看文件詳細的操做日誌: git log
查看文件簡明的操做日誌: git log --pretty=oneline
當前版本回退到上一個版本: git reset --hard HEAD^
當前版本回退到上上一個版本: git reset --hard HEAD^^
當前版本回退到指定n版本: git reset --hard HEAD~n
回退到上一個版本後後悔了,想返回原來最後一次的版本,能夠經過版本號回退:
獲取版本號: git reflog
版本回退: git reset --hard 版本號(最前面的字符)
工做區:就是你在電腦上看到的目錄,好比目錄下testgit裏的文件(.git隱藏目錄版本庫除外)。或者之後須要再新建的目錄文件等等都屬於工做區範疇。
版本庫(Repository):工做區有一個隱藏目錄.git,這個不屬於工做區,這是版本庫。其中版本庫裏面存了不少東西,其中最重要的就是stage(暫存區),還有Git爲咱們自動建立了第一個分支master,以及指向master的一個指針HEAD。
第一步:是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區。
第二步:使用git commit提交更改,實際上就是把暫存區的全部內容提交到當前分支上。
工做區作的修改所有撤銷: git checkout -- 您的文件(包括文件後輟名)
注意:命令git checkout -- readme.txt 中的 -- 很重要,若是沒有 -- 的話,那麼命令變成建立分支了。
命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工做區作的修改所有撤銷, 這裏有2種狀況,以下:
readme.txt自動修改後,尚未放到暫存區,使用 撤銷修改就回到和版本庫如出一轍的狀態。
另一種是readme.txt已經放入暫存區了,接着又做了修改,撤銷修改就回到添加暫存區後的狀態。
直接在文件庫刪除文件或者使用以下命令
刪除命令: rm 您的文件(包括文件後輟名)
在沒上傳到倉庫以前可使用上面的撤銷修改命令再把刪除的文件恢復回來
在瞭解以前,先註冊github帳號,因爲你的本地Git倉庫和github倉庫之間的傳輸是經過SSH加密的,因此須要一點設置:
在用戶主目錄下,看看有沒有 .ssh目錄,若是有,再看看這個目錄下有沒有 id_rsa和 id_rsa.pub 這兩個文件(id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,能夠放心地告訴任何人。),若是有的話,直接跳過此以下命令,若是沒有的話,打開命令行,輸入以下命令:
ssh-keygen -t rsa –C 「您的郵箱」
登陸github,打開右上角的齒輪按鈕「settings」中左側列表的SSH Keys,而後點擊「Add SSH Key」,填上任意title(標題),在Key文本框裏黏貼「id_rsa.pub」文件的內容。
點擊綠色按鈕「Add Key」就能夠看到添加完成的key。
如今的情景是:咱們已經在本地建立了一個Git倉庫後,又想在github建立一個Git倉庫,而且但願這兩個倉庫進行遠程同步,這樣github的倉庫能夠做爲備份,又能夠其餘人經過該倉庫來協做。
首先登陸github,而後右上角的「加」的符號「create a new repo」建立一個新的倉庫。
在Repository name填入「您的倉庫名稱」,其餘保持默認設置,點擊綠色按鈕「Create repository」按鈕,就成功地建立了一個新的Git倉庫:
目前,在GitHub上的這個testgit倉庫仍是空的,GitHub告訴咱們,能夠從這個倉庫克隆出新的倉庫,也能夠把一個已有的本地倉庫與之關聯,而後,把本地倉庫的內容推送到GitHub倉庫。
如今,咱們根據GitHub的提示,在本地的testgit
倉庫下運行命令:
git remote add origin https://github.com/tugenhua0707/testgit.git(後面這個網址要用本身的) # 克隆遠程倉庫內容
推送本地到遠程:git push -u origin master
因爲遠程庫是空的,咱們第一次推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。推送成功後,能夠馬上在github頁面中看到遠程庫的內容已經和本地如出一轍了。
從如今起,只要本地作了提交,就能夠經過以下命令:
git push origin master
把本地master分支的最新修改推送到github上了,如今就擁有了真正的分佈式版本庫了。
上面咱們瞭解了先有本地庫,後有遠程庫時候,如何關聯遠程庫。
如今咱們想,假如遠程庫有新的內容了,我想克隆到本地來 如何克隆呢?
首先,登陸github,建立一個新的倉庫,名字叫testgit2。
遠程庫準備好了,下一步就是使用命令git clone克隆一個本地倉庫了。
git clone 你的github地址
接着在本地目錄下就會生成testgit2 目錄了
在 版本回填退裏,你已經知道,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裏,這個分支叫主分支,即master分支。HEAD嚴格來講不是指向提交,而是指向master,master纔是指向提交的,因此,HEAD指向的就是當前分支。
首先,咱們來建立dev分支,而後切換到dev分支上。以下操做:
get checkout -b dev # 建立並切換分支
git branch # 查看當前分支
git checkout 命令加上 –b參數表示建立並切換,至關於以下2條命令
get checkout master(主分支) # 切換回主分支
git merge dev # 在主分支上合併dev分支
git branch -d dev # 刪除dev分支
git log # 查看分支狀況
總結建立與合併分支命令以下:
查看分支:git branch
建立分支:git branch name
切換分支:git checkout name
建立+切換分支:git checkout –b name
合併某分支到當前分支:git merge name
刪除分支:git branch –d name
Git用<<<<<<<,=======,>>>>>>>標記出不一樣分支的內容,其中<<<HEAD是指主分支修改的內容,>>>>>fenzhi1 是指fenzhi1上修改的內容,修改分支內容和主分支內容一致便可解決
一般合併分支時,git通常使用」Fast forward」模式,在這種模式下,刪除分支後,會丟掉分支信息,如今咱們來使用帶參數 –no-ff來禁用」Fast forward」模式。
命令:
在主目錄下合併分支目錄:
git merge –no-ff -m 「本次命令作的事情註釋」 dev
分支策略:首先master主分支應該是很是穩定的,也就是用來發布新版本,通常狀況下不容許在上面幹活,幹活通常狀況下在新建的dev分支上幹活,幹完後,好比上要發佈,或者說dev分支代碼穩定後能夠合併到主分支master上來。
在開發中,會常常碰到bug問題,那麼有了bug就須要修復,在Git中,分支是很強大的,每一個bug均可以經過一個臨時分支來修復,修復完成後,合併分支,而後將臨時的分支刪除掉。
git stash #把當前工做分區先隱藏
在主目錄新建進入臨時分支,查看並更改須要修改的代碼後,切換回主分支合併臨時分支,合併確認完成後,在進入以前的工做分支。
進入工做區後恢復以前隱藏的工做分區內容。
git stash list # 查看以前的工做分區隱藏在哪一個地方
Git把stash內容存在某個地方了,可是須要恢復一下,可使用以下2個方法:
git stash apply恢復,恢復後,stash內容並不刪除,你須要使用命令git stash drop來刪除。
另外一種方式是使用git stash pop,恢復的同時把stash內容也刪除了。
當你從遠程庫克隆時候,實際上Git自動把本地的master分支和遠程的master分支對應起來了,而且遠程庫的默認名稱是origin。
git remote # 要查看遠程庫的信息
git remote –v # 要查看遠程庫的詳細信息
其中查看遠程庫的詳細信息後會有兩條推送信息,結尾括號內的fetch爲抓取,就是下載;push爲推送,就是把本地推送到遠程
git push origin master # 本地主分支推送到遠程倉庫
那麼通常狀況下,那些分支要推送呢?
master分支是主分支,所以要時刻與遠程同步。
一些修復bug分支不須要推送到遠程去,能夠先合併到主分支上,而後把主分支master推送到遠程去。