Git安裝
Linux系統git官網下載源碼安裝,執行./configure , make && make install
Windows系統git安裝用msysgit,從https://git-for-windows.github.io下載git
1.建立版本庫repository倉庫
mkdir 倉庫目錄
經過 git init 初始化倉庫命令將目錄變成Git可管理的倉庫。
文件放到Git倉庫,經過git add ,git commit命令提交。
查看倉庫工做區工做狀態,git status
查看修改內容,git diffgithub
2.版本回退和歷史記錄
查看歷史記錄,git log 顯示從最近到最遠的提交日誌,可加git log --pretty=oneline參數git log --pretty=oneline
web
查看分支合併狀況,歷史提交的commit id:$ git log --graph --pretty=oneline --abbrev-commit
歷史版本回退,git reset --hard HEAD^
(HEAD當前版本,HEAD^上一版本)
或 git reset --hard commit id
windows
查看歷史命令,git reflog
可肯定回到哪一個版本
app
3.工做區和暫存區
git add命令其實是把文件修改添加到暫存區stage。
git commit 提交更改命令是將暫存區stage全部內容提交到當前分支,通常是master分支。Git建立版本庫時會建立惟一master分支。
git commit -a 提交全部的更改。
工做區和版本庫裏最新版本的區別。git diff HEAD -- git-file1.txt
ssh
4.git撤銷修改
撤銷工做區的修改,git checkout -- file
撤銷暫存區的修改
命令git checkout -- readme.txt意思就是,把readme.txt文件在工做區的修改所有撤銷,有兩種狀況:
一種是readme.txt自修改後尚未被放到暫存區stage,如今,撤銷修改就回到和版本庫如出一轍的狀態;
一種是readme.txt已經添加到暫存區後(add操做了),又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。webapp
總之,就是讓這個文件回到最近一次git commit或git add時的狀態。ide
git checkout -- file
命令中的--很重要,沒有--,就變成了「切換到另外一個分支」的命令 gitlab
5.git刪除文件
git rm file,git commit 後文件file將從版本庫中刪除。若是誤刪,可用git checkout -- file
命令將文件恢復到最新版本。其實質是用版本庫裏的版本文件替換工做區的版本。學習
6.從遠程倉庫克隆
git clone url #git clone git@gitlab.alaxiaoyou.com:root/ops-configuration.git
Git 支持多種協議:
https速度較慢
git(ssh支持)速度快
關聯遠程gitlab項目:git remote add origin git@192.168.17.108:root/Joe-Project.git
將本地項目更新推送到遠程gitlab中:git push -u origin master
#-u本地與遠程分支關聯起來union。將當前master分支推送到遠程。
查看遠端地址 git remote -v
7.分支管理
建立一新的本地dev分支,並切換到dev分支:$ git checkout -b dev
切換到本地master分支:$ git checkout master
切換到遠程master分支:$ git checkout --track origin/master
查看當前分支:$ git branch
git checkout --track origin/prepare #切換到遠程prepare分支
git checkout --track -b master origin/master #基於遠程分支origin/master建立本地master分支
列出當前全部分支,表當前分支。
$ git branch
合併分支。git merge 命令用於合併指定分支到當前分支。
$ git checkout master $ git merge dev $ git branch -d dev
切換到master後,將分支dev合併到當前master分支,並刪除dev分支。
Fast-forward指 快進模式 合併,分支合併速度快。但會丟掉分支信息。
強制禁用Fast-forward模式,merge時生成一新的commit,可在分支歷史上找到分支信息。$ git merge --no-ff -m "merge with no-ff" dev
刪除本地dev分支:$ git branch -d dev
強制刪除本地dev分支:$ git branch -D dev
刪除遠程release分支:$ git branch -r . $ git branch -r -d origin release 或 $ git push --delete origin release
用git命令操做遠程master分支替換release分支:
git clone git@gitlab.alaxiaoyou.com:root/webapp.git #從遠程倉庫中clone下來 cd webapp/ #進入到目錄下 git branch -r #查看遠程的全部分支,看release git push --delete origin release 或 git branch -r -d origin/release #刪除遠程release分支 git checkout -b release #本地建立release分支 git push origin release #將本地release分支push到遠程
到gitlab中web查看 master分支 和 release分支 ,兩個分支 compare branches 一下。 master and release are the same出現。
8.分支管理策略
實際開發中,master分支很是穩定,僅用來發布新版本。幹活都在dev分支上,dev合併到分支上。
bug分支管理:在新建的bug分支上修改bug,以前正在開發操做的dev分支上這個工做現場可先「儲藏」起來,可用git stash命令。等bug分支修復完以後再回來到dev上繼續工做。
git stash list
查看剛纔dev分支工做現場去哪兒?用 git stash pop
可將Git把stash內容存在某個地方的工做現場恢復。用git stash pop
恢復的同時把stash的內容刪除。
開發一新功能feature,最好新建一分支feature分支。
列出全部本地分支和遠程分支:git branch -a
列出全部遠程分支:git branch -r
重命名分支:git branch -m
$ git branch -m oldbranch newbranch
-M用來強制重命名
在本地建立和遠程分支對應的分支dev,使用git checkout -b dev origin/dev
,本地和遠程的dev分支名稱最好一致。
從本地推送分支dev,使用git push origin dev
,若是推送失敗,先用git pull抓取遠程的新的提交。
9.遠程倉庫
從遠程倉庫clone時,實際是Git自動把本地的master分支和遠程的master分支對應起來了。而且,遠程倉庫的默認名稱是origin。
查看遠程倉庫信息:
$ git remote 或 $ git remote -v
將本地分支master推送到遠程庫:$ git push origin master
10.標籤tag管理
標籤tag是Git的版本庫的快照,實質是指向某個commit的指針。
打標籤:$ git tag v1.0 或 $ git tag v1.0 commit id
##指定對某次的提交commit打tag,如不指定commit id,默認爲HEAD。
參數: -a指定標籤名; -m文字說明
查看標籤:$ git tag
查看標籤信息:$ git show v1.0
標籤tag刪除:$ git tag -d v1.0
建立的標籤只存儲在本地,不會推送到遠程。
將某個標籤本地推送到遠程:$ git push origin v2.0
或一次性推送:$ git push origin --tags
若是標籤tag已推送到遠程倉庫gitlab中,刪除標籤需兩步:
刪除本地:$ git tag -d v2.0
遠程刪除:$ git push origin :refs/tags/v2.0
git自定義:$ git config --global color.ui true
Git 回退示例:
Git 回退到某個版本並提交到遠程代碼倉庫(release分支操做)
1.本地版本回退
git pull;git branch release git log --pretty=oneline #查看提交commit的歷史,找到commit ID git reset --hard 4c77f4b6ee4a(commit ID )
2.提交到遠程代碼倉庫
新建temp臨時分支
git checkout -b temp git push origin temp:temp #代碼push到temp分支
刪除分支
git push origin --delete release #刪除遠端release分支 git branch -d release #刪除本地release分支
新建主分支
git checkout -b release #新建主分支並切換到 release主分支 git push origin release #提交主分支
刪除暫存分支
git branch -d temp git push origin --delete temp