文章引用自:Git使用教程 https://www.cnblogs.com/tugenhua0707/p/4050072.html 本文章只限用於Windows,敬請參考 註意:操作命令純屬手敲,可能會有錯誤,錯誤後參考文章鏈接! Git下載地址:https://gitforwindows.org/ ...
文章引用自:Git使用教程 https://www.cnblogs.com/tugenhua0707/p/4050072.html
本文章只限用於Windows,敬請參考
註意:操作命令純屬手敲,可能會有錯誤,錯誤後參考文章鏈接!
Git下載地址:https://gitforwindows.org/ # Windows版本
安裝方式:一頓操作猛如虎,一看全是下一步。煩請移步百度。
安裝完成後打開 Git Bash (打不開百度)
一、初步打開Git Bash:
因為Git是分散式版本控制系統,所以需要填寫用戶名和郵箱作為一個標識。
填寫用戶名: git config --global user.name "這裡填寫您的用戶名"
填寫郵箱:git config --global user.email "這裡填寫您的郵箱"
二、創建版本庫(倉庫):
什麼是版本庫?版本庫又名倉庫,英文名repository,你可以簡單的理解一個目錄,這個目錄裡面的所有文件都可以被Git管理起來,每個文件的修改,刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻還可以將文件”還原”。
1、進入目錄
首先進入您的倉庫目錄:cd E:\code\testgit
輸入pwd命令可以查看當前的目錄
2、把目錄變成Git可以管理的倉庫
改變倉庫屬性: git init
這時候你當前testgit目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄裡面的文件,否則,會把git倉庫給破壞了。
3、倉庫操作命令:
把文件添加到暫存區: git add 您的文件(包括文件後輟名)
把文件提交到倉庫: git commit -m “您的文件(這個地方是提交文件的註釋)”
查看未提交文件: git status
查看文件修改的具體內容: git diff 您的文件(包括文件後輟名)
一次性把所有暫存庫的文件提交到倉庫: git commit
三、版本回退
1、查看文件操作日誌
查看文件詳細的操作日誌: git log
查看文件簡明的操作日誌: git log --pretty=oneline
2、文件版本回退操作
當前版本回退到上一個版本: 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。
baGit提交文件到版本庫有兩步:
第一步:是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區。
第二步:使用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支上。
五、Git撤銷修改和刪除文件操作
1、撤銷修改
工作區做的修改全部撤銷: git checkout -- 您的文件(包括文件後輟名)
註意:命令git checkout -- readme.txt 中的 -- 很重要,如果沒有 -- 的話,那麼命令變成創建分支了。
命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工作區做的修改全部撤銷, 這裡有2種情況,如下:
readme.txt自動修改後,還沒有放到暫存區,使用 撤銷修改就回到和版本庫一模一樣的狀態。
另外一種是readme.txt已經放入暫存區了,接著又作了修改,撤銷修改就回到添加暫存區後的狀態。
2、刪除文件
直接在文件庫刪除文件或者使用如下命令
刪除命令: rm 您的文件(包括文件後輟名)
在沒上傳到倉庫之前可以使用上面的撤銷修改命令再把刪除的文件恢復回來
六、 遠程倉庫
在瞭解之前,先註冊github賬號,由於你的本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的,所以需要一點設置:
1、 創建SSH key
在用戶主目錄下,看看有沒有 .ssh目錄,如果有,再看看這個目錄下有沒有 id_rsa和 id_rsa.pub 這兩個文件(id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。),如果有的話,直接跳過此如下命令,如果沒有的話,打開命令行,輸入如下命令:
ssh-keygen -t rsa –C “您的郵箱”
2、添加key
登錄github,打開右上角的齒輪按鈕“settings”中左側列表的SSH Keys,然後點擊“Add SSH Key”,填上任意title(標題),在Key文本框里黏貼“id_rsa.pub”文件的內容。
點擊綠色按鈕“Add Key”就可以看到添加完成的key。
3、如何添加遠程庫
現在的情景是:我們已經在本地創建了一個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上了,現在就擁有了真正的分散式版本庫了。
4、如何從遠程庫克隆?
上面我們瞭解了先有本地庫,後有遠程庫時候,如何關聯遠程庫。
現在我們想,假如遠程庫有新的內容了,我想克隆到本地來 如何克隆呢?
首先,登錄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問題,那麼有了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為推送,就是把本地推送到遠程
1、 推送分支
git push origin master # 本地主分支推送到遠程倉庫
那麼一般情況下,那些分支要推送呢?
master分支是主分支,因此要時刻與遠程同步。
一些修複bug分支不需要推送到遠程去,可以先合併到主分支上,然後把主分支master推送到遠程去。