Git知識學習

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
Git知識學習web

查看分支合併狀況,歷史提交的commit id:
$ git log --graph --pretty=oneline --abbrev-commit
歷史版本回退,git reset --hard HEAD^ (HEAD當前版本,HEAD^上一版本)

git reset --hard commit id
Git知識學習windows

查看歷史命令,git reflog可肯定回到哪一個版本
Git知識學習app

3.工做區和暫存區
git add命令其實是把文件修改添加到暫存區stage。
git commit 提交更改命令是將暫存區stage全部內容提交到當前分支,通常是master分支。Git建立版本庫時會建立惟一master分支。
git commit -a 提交全部的更改。
工做區和版本庫裏最新版本的區別。
git diff HEAD -- git-file1.txt
Git知識學習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
Git知識學習

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知識學習

合併分支。git merge 命令用於合併指定分支到當前分支。

$ git checkout master
   $ git merge dev
   $ git branch -d dev

切換到master後,將分支dev合併到當前master分支,並刪除dev分支。
Git知識學習

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的內容刪除。
Git知識學習
開發一新功能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
Git知識學習

10.標籤tag管理
標籤tag是Git的版本庫的快照,實質是指向某個commit的指針。
打標籤:$ git tag v1.0 或 $ git tag v1.0 commit id ##指定對某次的提交commit打tag,如不指定commit id,默認爲HEAD。
Git知識學習
參數: -a指定標籤名; -m文字說明

查看標籤:
$ git tag

查看標籤信息:
$ git show v1.0
Git知識學習

標籤tag刪除:
$ git tag -d v1.0

建立的標籤只存儲在本地,不會推送到遠程。
將某個標籤本地推送到遠程:
$ git push origin v2.0
或一次性推送:
$ git push origin --tags
Git知識學習

若是標籤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
相關文章
相關標籤/搜索