git學習小結(筆記),git學習小結筆記
註:本文參考 廖雪峰的Git教程 ,非常感謝廖大神的無私奉獻,本文僅作為筆者的學習筆記,如果需要完整的學習git,請猛戳前面的連結^_^
一、git是什嗎?
1、git是什嗎?
"git是世界上最先進的分布式版本控制系統(沒有之一)" --廖雪峰
2、為什麼要學習git?
git是一種高效且方便的版本控制工具,在實際開發中可以大大提高工作效率哦 ^_^ ~~
二、安裝git
1 sudo apt-get install git
三、建立版本庫
1 [mkdir <庫名>]2 [cd <庫名>]3 git init #將目前的目錄初始化為一個git倉庫
四、版本控制
1、將檔案添加到版本庫
1 git add <filename> #把檔案添加到暫存區,注意該檔案必須放在倉庫目錄(或子目錄)下2 git commit -m "提交說明" #把暫存區的內容提交到當前分支
2、查看工作區的狀態
1 git status #查看工作區的修改記錄2 git diff <filename> #如果git status提示有修改記錄,那麼這條命令可以查看修改內容
3、版本切換
1 #HEAD指向目前的版本2 git reset --hard commit_id #回退到commit_id指定的版本3 git log [--pretty=oneline] #查看從最近到最遠的提交日誌,加上"[]"內的參數可以以"版本號碼 提交日誌"的格式查看4 git reflog #查看命令曆史
4、撤消修改
1 git checkout -- <file> #撤消工作區的修改2 git reset HEAD <file> #撤消暫存區的修改,返回工作區修改的狀態
5、刪除檔案
1 git checkout -- <file> #用版本庫裡的版本替換工作區的版本2 git rm <file> #刪除暫存區裡的檔案
五、遠程倉庫
1、建立SSH Key:
1 #進入使用者主目錄下的.ssh目錄(沒有則自己建立):2 ssh-keygen -t rsa -C "email@example.com" #建立SSH Key,注意填寫正確的郵箱地址3 #登陸GitHub,開啟"Account settings","SSH Keys"頁面,然後"Add SSH Key",填寫"Title",將id_rsa.pub的內容拷貝到Key文字框,"Add Key"
2、添加遠程庫
1 #登陸GitHub,"Create a new repo"建立一個新倉庫2 git remote add origin git@server-name:path/repo-name.git #將本地倉庫關聯到遠程庫3 git push [-u] origin master #推送最新修改,第一次推送時要加上-u參數
3、從遠程庫複製
1 git clone git@server-name.com:path/name.git #複製一個遠程庫到目前的目錄
六、分支管理
1、建立與合并分支
分支的作用是什麼:當開發項目中的某一個任務的時候,可以使用新的分支完成,之後合并到master分支再刪除新分支,這樣做可以比較安全的管理項目,因為在某分支上的操作只會修改該分支包含的內容,比較安全
1 git branch <name> #建立分支2 git checkout <name> #切換分支3 git checkout -b <name> #建立並切換4 git merge <name> #合并分支到當前分支5 git branch -d <name> #刪除分支6 git log --graph #查看分支合并圖
2、分支管理原則
Fast forward模式:該模式是分支合并時的預設模式,在這種模式下,刪除分支後,會丟失分支資訊,在實際開發中不推薦使用該模式。
1 git merge --no-ff -m "XXX" b-name # "--no-ff" 參數表示禁用Fast forward模式
分支管理的基本原則:
①master分支僅僅用來發布新的版本;
②團隊成員都在dev分支上工作,每個人都在dev分支的一個子分支上工作;
3、bug分支
1 git stash #儲存當前的"工作現場"2 git stash apply #恢複現場但不刪除stash的內容3 git stash drop #刪除stash的內容4 git stash pop #恢複現場並刪除stash的內容5 git stash list #查看stash的內容
bug修複策略:建立一個新分支修複bug,然後合并,刪除
步驟:儲存當前"工作現場"-->建立並切換到bug分支-->修複bug-->切換到bug分支的上層分支-->合并並刪除bug分支-->切換回原來的工作分支-->恢複"工作現場"。
4、feature分支
新增功能的策略:建立新分支,然後合并刪除
1 git branch -D <name> #強行刪除一個沒有被合并的分支
5、多人協作
1 git remote -v #查看遠程庫資訊2 git pull #抓取最新的提交到本地倉庫3 git push origin branch-name #將本地分支推送到遠程倉庫4 git checkout -b branch-name origin/branch-name #在本地建立和遠程分支對應的分支5 git branch --set-upstream branch-name origin/branch-name #建立本地分支和遠程分支的關聯
多人協作的工作模式:
①試圖用 git push origin branch-name 推送自己的修改;
②如果推送失敗,則因為遠程分支比本地分支更新,需要先用 git pull 抓取到本地然後試圖合并
③如果合并有衝突,則先解決衝突,並在本地提交;
④沒有衝突或者解決掉衝突後,用 git push origin branch-name 推送
七、標籤管理
1、建立標籤
1 git tag #查看所有標籤2 git show <tagname> #查看標籤的詳細資料3 git tag <tagname> [commit id] #建立一個標籤,預設為HEAD,也可以指定一個commit id4 git tag -a <tagname> -m "xxx" #指定標籤資訊為 "xxx"5 git tag -s <tagname> -m "xxx" #用PGP簽名標籤
2、操作標籤
1 git tag -d <tagname> #刪除一個本地標籤2 git push origin --tags #推送全部未推送過的本地標籤3 git push origin <tagname> #推送一個本地標籤4 git push origin :refs/tags/<tagname> #刪除一個遠程標籤
八、使用GitHub
在GitHub上,可以任意Fork開源倉庫,並且自己擁有Fork後的倉庫的讀寫權限,可以推送 pull request 給官方倉庫來貢獻代碼
九、自訂Git
1、忽略特殊檔案
①忽略某些檔案時,需要編寫 .gitignore ,並在檔案中加上要忽略的檔案名稱;
② .gitignore 檔案本身要放到版本庫裡,並且可以對 .gitignore 做版本管理;
2、配置別名
① git config [--global] alias.new-name old-name #將 new-name 作為 old-name 的別名,加上--global表示對目前使用者修改,不加則僅僅對當前倉庫修改;
②除了使用 config 參數外,還可以通過修改設定檔來配置別名:每個倉庫的設定檔放在 .git/config 中,目前使用者的設定檔則放在Home目錄下的 .gitconfig 中;
3、搭建Git伺服器
①安裝git: sudo apt-get install git
②建立git使用者: sudo adduser git
③建立認證登入:收集所有需要登陸的使用者公開金鑰,即 id_rsa.pub ,把所有公開金鑰匯入到 /home/git/.ssh/authorized_keys 檔案中,一行一個;
④初始化Git倉庫:先選定一個目錄作為Git倉庫,假設是 /srv/sample.git ,在 /srv 目錄下輸入: sudo git init --bare sample.git ,並修改倉庫的所有者為git: sudo chown -R git:git sample.git
⑤禁用shell登入:將檔案 /etc/passwd 中類似這樣的一行: git:x:1001:1001:...:/home/git:/bin/bash 修改為 git:x:1001:1001:.../home/git:/usr/bin/git-shell;
⑥複製遠程倉庫: git clone git@server:/srv/sample.git
總結:git包含了很多的參數和用法,但是經常用到的不多,以後多加練習應該就可以熟練使用了