Modesty helps one to go forward, whereas conceit makes one lag behind.
"虛心使人進步,驕傲使人落后"
注:本文參考 廖雪峰的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包含了很多的參數和用法,但是經常用到的不多,以后多加練習應該就可以熟練使用了
新聞熱點
疑難解答