想研究Git很久了,一直沒有找到很好的博客或論壇,近幾天作業專案任務沒有那么重,就想著找幾篇文章把這玩意兒給解決掉,本博客是記錄讀廖雪峰老師所寫的《Git教程》的隨筆,以便鞏固學習,若想學習到更詳細的教程,請到廖老師的文章學習,
- 安裝Git,這個自然不用多說了,筆者用的是Window系統,直接下載一個Git,然后下一步下一步安裝就行了,
- 安裝完成后,在cmd命令列中執行兩個命令:第一個是git config --global user.name "你的用戶名";第二個是git config --global user.email "你的郵箱";之所以執行這兩個命令是因為Git是分布式的,需要每臺機器標識出自己的機器名;引數global是指這臺機器上所有的倉庫都使用這個配置,注:若使用cmd執行這兩個命令出錯的話,可在應用程式(也就是開機-所有程式)中找到剛才安裝的Git檔案夾點擊打開Git CMD,在這個命令列工具中執行剛才的兩個命令,
- 創建版本庫,所謂的版本庫,其實也就是一個檔案夾,例如我在C盤創建一個名叫GitRepository的檔案夾,然后點著shift鍵右滑鼠-選擇在此處打開命令列,或者打開cmd然后cd到這個目錄下,執行git init命令,把這個目錄變成Git的管理倉庫,新建一個檔案在這個目錄下,例如新建一個readMe.txt檔案,然后執行git add readMe.txt命令讓這個檔案被git所管理,這個命令執行結束后沒有任何提示是正確的;然后執行git commit -m "版本說明資訊",
- 理解幾個概念問題:作業區即當前目錄,當執行完init命令后,該目錄下會多出一個.git檔案夾叫版本庫,此版本庫里有兩個比較重要的東西,一個叫暫存區(Stage),一個是git自動為我們創建的master分支以及指向master的一個指標叫HEAD;當多次執行add時,git的操作是把所add的內容放入暫存區,當執行commit時git會把內容放入分支中,
- git status查看本倉庫中各檔案資訊的狀態;git diff 檔案名 比較一個檔案變化的記錄,
- git log顯示從最近到最遠的提交資訊,如果不想一次性看那么多,可以加--pretty=oneline這個引數,
- 版本回退,git中HEAD表示當前的版本,HEAD^表示上一個版本,HEAD^^表示上上一個版本,如果想回傳到第100個版本,可以使用HEAD~100,回退到上一個版本的命令git reset --hard HEAD^;指定回到某一版本可以用commit id進行回退,commit id就是在git log中看到的那一串字串,不必寫完,只需要寫前幾位就可以查到了,命令是:git reset --hard id號,如果從HEAD回退到commit id,這個時候在git log中便看不到了HEAD,若想再回到HEAD,可以用git reflog查看每一步的操作,找到commit id然后回退回去,
- git checkout -- file,回滾作業區的修改,如果該檔案已commit,則回到暫存區時的狀態,若該檔案在暫存區,則回到作業區即沒有進行修改之前的狀態,此命令的--很重要,若沒有的話表示切換分支,git reset HEAD file把暫存區的修改撤消掉,重新回到作業區,
- git rm洗掉版本庫中的檔案,然后執行git commit.
- 遠程倉庫GitHub,因為Git與GitHub之間的傳輸通過SSH協議,所以需要生成SSH密鑰,生成方式在Git Bash里執行
ssh-keygen -t rsa -C "[email protected]"命令命令會在指定的盤符下生成一對公私密鑰,把pub密鑰中的內容復制到GitHub的Account Setting里可以推送檔案到GitHub了; 若有多臺電腦需要上傳檔案到GitHub上,可以添加多個公鑰到Account Setting上, - 添加本地倉庫內容到遠程GitHub上
通過以下命令可以把本進倉庫內容推送到遠程倉庫上git remote add origin git@github.com:GitHub賬戶名/遠程倉庫名.git origin為GitHub默認的遠程倉庫名,可修改,通過此便可把本地倉庫與遠程倉庫關聯起來git push -u origin master - 從遠程庫克隆倉庫到本地
git clone git@github.com:GitHub賬戶名/需要克隆的庫名.git - 創建分支
$ git checkout -b dev其中的-b引數表示創建分支并把當前分支切換為新創建的分支,相當于git branch dev;git checkout dev;兩個命令的集合; - 查看分支:git branch會以串列的形式把所有分支都列出來,并在當前分支的前面加一個“*”號
- 合并分支:git merge 分支名;通過這種方式合并的形式是Fast_Forward模式
- 洗掉分支:git branch -d 分支名
- 查看分支合并圖:git log --graph
- 分支策略:在合并分支的時候添加--no-ff來禁用Fast_forward模式,可以看到曾經有合并過分支的歷史記錄
git merge --no-ff -m "merge with no-ff" dev - Bug分支:當正在開發一個任務,還沒有完成的時候,有一個Bug需要修改,此時要把當前進行的作業儲存起來,可用git stash命令;然后從需要修復Bug的分支上如master分支上創建臨時分支,先切換到master分支,然后創建臨時分支,如git checkout -b issue-101;修復完成后切換到master分支上,然后把issue-101分支合并到master分支上;回到剛才的儲存作業空間,用git stash list查看儲存的串列;恢復剛才的存盤用git stash apply但是此時stash并沒有洗掉,若想洗掉可以用git stash drop;這兩個命令可以用git stash pop來代替;也可多次stash,然后用git stash list來查看stash串列,然后用
git stash apply stash@{0}來恢復具體的某一個stash - Feature分支:每添加一個新功能,為了不搞亂master分支,可以新建一個Feature分支,當開發完成后合并到master分支,然后洗掉該featrure分支;但當沒合并分支時,此功能又不需要了,此時用
git branch -D 分支名 洗掉該分支,注意D必須大寫 - 查看遠程庫的資訊用:git remote命令,若想查看更詳盡資訊可加上-v引數
- 推送分支就是把本地該分支上的資訊推送到遠程庫上:git push origin master,若想推送到dev上則把master改為dev就行了
-
多人協作的作業模式通常是這樣:
-
首先,可以試圖用
git push origin <branch-name>推送自己的修改; -
如果推送失敗,則因為遠程分支比你的本地更新,需要先用
git pull試圖合并; -
如果合并有沖突,則解決沖突,并在本地提交;
-
沒有沖突或者解決掉沖突后,再用
git push origin <branch-name>推送就能成功!
如果
git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>,這就是多人協作的作業模式,一旦熟悉了,就非常簡單,
-
- git rebase命令可以把提交的分叉記錄整理成一條線
- git給每個版本打標簽:首先切換到需要打標簽的分支上,然后使用git tag 標簽名打標簽,可以使用git tag查看所有的標簽;查看所有的提交記錄命令:
git log --pretty=oneline --abbrev-commit;對某一個提交ID打標簽:git tag 標簽名 CommitID;可以用git show 標簽名來查看標簽的詳細資訊;還可以添加兩個引數 -a 標簽名,-m 說明文字資訊,如:git tag -a 標簽名 -m "打了一個標簽" CommitID - 洗掉標簽:git tag -d 標簽;因為標簽是打在本地的,所以可以直接洗掉,若想把標簽推送到遠程倉庫,可以用git push origin 標簽名或一次性推送全部標簽到遠程倉庫:git push origin --tags;要洗掉遠程標簽比較麻煩,需要先洗掉本地標簽,然后再洗掉遠程的標簽,命令是:git push origin :refs/tags/標簽名
- 自定義git字體顏色:git config --global color.ui true
- 忽略特殊的不想提交的檔案:在git倉庫下創建一個.gitignore檔案,然后把需要忽略的檔案名添加進去,然后把這個.gitignore檔案提交;這個時候如果想提交在這個名單中的檔案到遠程倉庫中,可以用:git add -f 檔案名 進行強制提交;
git check-ignore -v App.class 檢查ignore檔案中哪個規則出了問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/220033.html
標籤:其他
上一篇:(專案)在線教育平臺(三)
