git筆記(一)

經常使用命令行

主要命令行

1、設置git客戶端的名字郵箱

user.name和user.email是git客戶端的兩個變量,簡而言之就是記錄每次本地文件commit的是誰作的,GitHub是經過郵箱來記錄貢獻的,通常能夠用如下命令行進行全局配置,若是你會用不一樣身份在不一樣項目上進行提交,則能夠不加 -g 進行本地配置git

git config -g user.name "name"
git config -g user.email "email@mail.com"

運行了以上命令行後,.git文件夾裏的config文件會多一個關於user的配置,即name 和 emailgithub

[user]
    name = 你的name
    email = 你的email

2、工做區和版本庫

工做區:電腦上看見的目錄或文件
版本庫:即文件管理區,在這裏進行文件版本管理,.git目錄爲其配置文件(其中有stage暫存區,git爲咱們建立的第一分支master,指向master的指針HEAD)app

一、建立倉庫並提到版本庫ssh

git init //把這個目錄變成git能夠管理的倉庫
git add hi.txt //添加到工做區
git commit -m //提交到本地版本庫(暫存區)

二、版本回退
版本回退能夠先查看提交的版本號,而後回退到該版本號指定的版本測試

  • 查看提交和回退信息:fetch

    git reflog  //查看全部分支的提交和回退信息
    git log //查看因此分支的提交信息,--pretty=oneline(橫排顯示,只留下版本號和提交註釋)
  • 版本回退:版本回退的原理實際上是重置HEAD指針指向,將HEAD指向制定commit id就能夠將文件版本改成該次提交的版本,同理能夠用reset命令取消版本回退。
  • 其中-hard撤銷工做區,暫存區,本地倉庫的內容到指定節點,-soft只撤銷本地倉庫,工做區和暫存區不變。url

    git reset –hard HEAD^  //回退上一個版本
    git reset –hard HEAD^^  //回退上上個版本
    git reset –hard HEAD~100 //回退前一百個版本
    git reset -hard 版本號 //回退到指定版本號
    
    git reset –soft HEAD^  //回退上一個版本
    git reset –soft HEAD^^  //回退上上個版本
    git reset –soft HEAD~100 //回退前一百個版本
    git reset -soft 版本號 //回退到指定版本號

三、撤銷工做區修改
放棄某文件在工做區的修改,恢復爲上一次添加到版本庫的版本spa

git checkout -- 文件名 //撤銷該文件名在工做區尚未存入版本庫的修改

3、分支操做

分支管理策略:通常在新建的dev分支上幹活,分支代碼穩定後發佈到master主分支上
git通常使用」Fast forward」模式,在這種模式下,刪除分支後,會丟掉分支信息,如今咱們來使用帶參數 –no-ff來禁用」Fast forward」模式
一、demo:建立一個dev分支並merge到master的步驟:命令行

  • 建立並切換到分支dev:git checkout -b dev
  • 修改readme.txt內容。
  • 將修改的內容添加到暫存區:git add .git commit -m "提交註釋"
  • 切換回主分支(master):git checkout master
  • 合併dev分支git merge --no-ff -m "註釋" dev

經常使用命令行:指針

git checkout -b dev //建立+切換分支dev
git checkout dev //切換分支
git branch dev //建立分支
git branch -d dev //刪除分支
git branch //查看分支,會列出全部的分支,當前分支前面會添加一個星號

git merge dev //將dev分支合併到當前分支
git merge --no-ff -m "合併註釋" 分支名 
git log //查看分支合併狀況

二、demo:建立一個修復bug的分支
git stash 把當前工做現場「儲藏」起來
git checkout master 切換到須要修復bug的分支

git checkout -b issue-101 建立臨時分支,修復bug101,提交
git add readme.txt
git commit -m "fix bug 101"

git checkout master返回分支,合併bug修復分支,刪除bug修復分支
git merge --no-ff -m "merged bug fix 101" issue-101
git branch -d issue-101

git checkout dev返回工做的分支
git status 工做區是乾淨的
git stash list 查看隱藏的列表

恢復隱藏內容:
git stash apply 恢復
git stash drop 刪除

git stash pop 恢復並刪除
git stash apply stash@{0} 屢次隱藏,恢復指定stash

三、demo:建立一個添加新功能的feature分支
每添加一個新功能,最好新建一個feature分支,在上面開發,完成後,合併,最後,刪除該feature分支

  • git checkout -b feature-new
  • git add hi.txt
  • git commit -m "add feature new"
  • git checkout master
  • git merge --no-ff -m "merged feature-new" feature-new
  • git branch -d feature-new
  • git branch -D feature-new//沒合併以前強行刪除

4、遠程倉庫

1.一、SSH驗證

不少時候須要將本地倉庫傳輸到遠程倉庫,常常會須要ssh驗證,因此咱們先要建立ssh證書以得到上傳到github的權限,即先本地建立證書,將私鑰存在本地,公鑰存在github上,便可以在傳輸時驗證身份證實本地是被容許傳輸數據到遠端的。

  • 建立ssh證書公鑰私鑰:
ssh-keygen -t rsa -C "郵箱地址"

運行後,能在C:\Users\.ssh中找到公鑰和私鑰,公鑰存在github,私鑰保存在本地

  • GitHub建立ssh keys:

登陸github,打開」 settings」中的SSH Keys頁面,而後點擊「Add SSH Key」,填上任意title,在Key文本框裏黏貼id_rsa.pub文件的內容

  • 測試你的ssh-key
ssh -T git@github.com //測試你的ssh-key

1.二、繞開ssh驗證

若是咱們用的https而不是git開頭的遠端路徑,會出現沒有權限的狀況,能夠用如下命令行繞開ssl驗證,而後每次push須要輸入用戶名密碼便可

git config --global http.sslVerify false

也能夠在config文件的url中添加用戶名密碼。

二、本地倉庫和GitHub倉庫創建鏈接

git remote add origin git@github.com:地址.git

三、本地分支與GitHub倉庫的分支創建鏈接
推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令:git push origin master

git branch --set-upstream dev origin/dev //本地dev與遠程倉庫dev創建鏈接
git push -u origin master //本地master和遠端master創建鏈接且上傳

四、本地分支推送到遠程倉庫分支

git push origin master

五、克隆遠程倉庫

git clone git@github.com:地址 //在須要克隆庫的文件夾下執行

六、若是遠程倉庫有變化須要先pull

git pull <遠程主機名> <遠程分支名>:<本地分支名>
git pull origin master:brantest  //將遠程主機origin的master分支拉取過來,與本地的brantest分支合併。
git pull origin master  //其中冒號後面的能夠省略,表示將遠程origin主機的master分支拉取過來和本地的當前分支進行合併

git fetch origin master:brantest  //其上命令行等同於用fetch和merge
git merge brantest

5、多人協做

從遠程倉庫克隆時,實際上Git自動把本地的master分支和遠程的master分支對應起來了,而且,遠程倉庫的默認名稱是origin
經常使用命令行:

git remote add origin git@github.com:地址.git \\添加遠程庫
git remote \\查看遠程庫信息
git remote -v \\顯示更詳細的信息,顯示了能夠抓取和推送的origin的地址
git push origin master(分支名)\\本地分支master推送到對應的遠程分支上去
git push origin dev

注:

  • git pull 若是push不成功,你的隊友已經修改代碼,須要先pull下來手動消除衝忽然後再push
  • master分支是主分支,所以要時刻與遠程同步;
  • dev分支是開發分支,團隊全部成員都須要在上面工做,因此也須要與遠程同步;
  • bug分支只用於在本地修復bug,就不必推到遠程了,除非老闆要看看你每週到底修復了幾個bug;
  • feature分支是否推到遠程,取決於你是否和你的小夥伴合做在上面開發
  • git checkout -b dev origin/dev建立遠程origin的dev分支到本地
相關文章
相關標籤/搜索