開發工具鏈-git(github)核心教程

一、git簡介


概述

官網

git是先進的分佈式版本控制系統,有沒有網都可以工作,相對svn來說更方便、數據更不易丟失。

參考文獻

廖雪峯git教程 Git教程 GIT官方文檔

二、git安裝


Mac OS X上安裝git

1.方法一:通過homebrew安裝git (使用 Homebrew 可以安裝 Apple 沒有預裝但你需要的東西)
安裝brew:$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
安裝git: $ brew install git
具體方法請參考homebrew的文檔:http://brew.sh/

2.方法二:安裝xcode
從AppStore安裝Xcode,Xcode集成了Git,xcode主要用於mac和ios app開發,佔用空間比較大。只用git的話,推薦方法一。

Linux上安裝git

在 Fedora 上用 yum 安裝:
$ yum install git-core

在 Ubuntu 這類 Debian 體系的系統上,可以用 apt-get 安裝:
$ apt-get install git

Windows上安裝Git

下載git: https://git-scm.com/downloads
安裝:初學者選擇默認選項,一路next到安裝結束即可

三、命令行使用git


創建版本庫

在這裏插入圖片描述
1.創建一個空目錄:
$ mkdir gittest
$ cd gittest

pwd命令用於顯示當前目錄(這個蠻常用的)
注意:爲了避免遇到各種莫名其妙的問題,請確保目錄名不包含中文
 
2.通過git init命令把這個目錄變成Git可以管理的倉庫
$ git init

這是創建版本庫的核心命令,它其實新建了一個隱藏的git目錄,ls -ah命令可以顯示這個隱藏的.git目錄

添加文件到版本庫

首先確保文件已在gittest(版本庫目錄)中,另外強烈建議使用標準的UTF-8編碼。
1.用命令git add告訴Git,把文件添加到倉庫
$ git add gitAddHelloWorld.txt

“沒有消息就是好消息”,說明添加成功。

2.用命令git commit告訴Git,把文件提交到倉庫,引號中是本次版本註釋說明,建議註釋簡明扼要,方便查找。
$ git commit -m “這裏寫的是註釋:git add demo”

刪除文件

用命令git rm刪掉,並且git commit:
git rm <filename>
git commit -m “刪除原因”
誤刪可用git checkout 還原(見下文)

檢出文件

git checkout – <fileName>
該命令其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”
假如你想丟棄你在本地的所有改動與提交,可以到服務器上獲取最新的版本歷史,並將你本地主分支指向它:
git fetch origin
git reset --hard origin/master

查看狀態

查看倉庫狀態:
git status
查看文件修改狀態:
$ git diff gitAddHelloworld.txt

查看記錄

查看歷史版本記錄:
git log 命令顯示從最近到最遠的提交日誌
如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上–pretty=oneline參數
$ git log --pretty=oneline
查看命令記錄:
$ git reflog

回退版本

回退到最近版本:HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,上n個版本,可以簡寫成HEAD~n。
$ git reset --hard HEAD^
根據版本號commit id回退:
$ git reset --hard <commit id前幾位>

還原單個文件:

git reset HEAD <file> ,它可以把暫存區的修改撤銷掉(unstage),重新放回工作區

 

遠程倉庫(github)


GitHub是提供Git倉庫託管服務的網站,註冊一個GitHub賬號,就可以免費獲得Git遠程倉庫。

克隆倉庫

本地倉庫克隆:
git clone /path/to/repository
遠程倉庫克隆:
git clone username@host:/path/to/repository
例如:$ git clone https://github.com/jquery/jquery.git
該命令會在本地主機生成一個目錄,與遠程主機的版本庫同名。如果要指定不同的目錄名,可以將目錄名作爲git clone命令的第二個參數。
$ git clone <版本庫的網址> <本地目錄名>

推送改動

關聯一個遠程庫:
git remote add origin git@server-name:path/repo-name.git
第一次推送master分支的所有內容:
git push -u origin master
此後,每次本地提交後,推送最新修改到遠程庫:
git push origin master

分支(多人協作)

分支是用來將特性開發絕緣開來的。在你創建倉庫的時候,master 是"默認的"分支。在其他分支上進行開發,完成後再將它們合併到主分支上。

在這裏插入圖片描述
1.創建分支
創建一個叫做"leon"的分支,並切換過去:
git checkout -b leon
2.查看分支
git branch
若要查看各個分支最後一個提交對象的信息,運行
git branch -v
要從該清單中篩選出你已經(或尚未)與當前分支合併的分支,可以用 --merged 和 --no-merged 選項(Git 1.5.6 以上版本)
git branch --merged
3.切換回主分支
git checkout master
4.刪除分支
git branch -d leon
5.多人協作
推送分支:除非你將分支推送到遠端倉庫,不然該分支就是 不爲他人所見的,
git push origin
6.獲取更新:
git pull 該命令在你的工作目錄中獲取(fetch) 並 合併(merge) 遠端的改動。
7.合併分支:
合併其他分支到你的當前分支(例如 master)
git merge <其他branch>
8.解決衝突:
pull或merge時可能出現衝突,Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,需要我們手動修改,解決衝突之後,再提交。
9.預覽差異:
在合併改動之前,你可以使用如下命令預覽差異
git diff <source_branch> <target_branch>
10.合併情況:
合併完成後可以用帶參數的git log也可以看到分支的合併情況
git log --graph --pretty=oneline --abbrev-commit

分支策略

master-dev-personal分支

master分支: 僅用來發布新版本,最穩定;
dev分支: 團隊每個人都在dev分支上幹活,每個人都有personal分支,時不時地往dev分支上合併就可以了;該分支是不穩定的,到某個時候,比如1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;
pesonal分支(Bob、Michael): 個人分支,因爲創建、合併和刪除分支非常快,所以Git鼓勵使用分支完成某個任務,合併後再刪掉分支,這和直接在master分支上工作效果是一樣的,但過程更安全。
在這裏插入圖片描述
bug分支(保存和恢復工作現場)
修復bug時,我們會通過創建新的bug分支進行修復,然後合併,最後刪除;當手頭工作沒有完成時,先把工作現場git stash一下,然後去修復bug,修復後,再git stash pop,回到工作現場。

典型bug修復git流程:

$ git status // 查看當前狀態
$ git stash // 保護工作現場
$ git checkout master // 切回到主分支
$ git checkout -b issue-101 // 創建修復bug分支issue-101,開始修復bug
$ git add // bug修復完後,添加和本地提交
$ git commit -m “fix bug 101”

$ git checkout master // 切換到主分區
$ git merge --no-ff -m “merged bug fix 101” issue-101 // 合併bug分支
$ git branch -d issue-001 // 刪除bug分支
$ git checkout yourBranck // 切回自己的分支,恢復現場繼續工作
$ git stash list // 查看存儲的工作現場列表
恢復方式一:git stash pop 恢復的同時把stash內容也刪了
恢復方式二:git stash apply 恢復 ,但是恢復後,stash內容並不刪除

feature分支

開發一個新feature,最好新建一個分支
如果要丟棄一個沒有被合併過的分支,可以通過
git branch -D 強行刪除

 

標籤管理

  tag就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一起,我們常用作產品發佈的版本號。
1.創建標籤
git tag 用於新建一個標籤,默認爲HEAD,也可以指定一個commit id;
git tag -a -m “blablabla…” 可以指定標籤信息;
git tag -s -m “blablabla…” 可以用PGP簽名標籤;
git tag可以查看所有標籤。
$ git show v0.9 可以查看當前標籤信息
2.操作標籤
git push origin 可以推送一個本地標籤;
git push origin --tags可以推送全部未推送過的本地標籤;
git tag -d 可以刪除一個本地標籤;
git push origin :refs/tags/可以刪除一個遠程標籤。

 

eclipse中使用git


下列將結合github講解eclipse中使用git, 其他ide中使用git大同小異。

step1: 克隆倉庫
新建或搜索一個github遠程倉庫,複製其url (ssh或https , 這裏我們暫時先選擇https,ssh之後補充)
在這裏插入圖片描述

eclipse中打開git資源庫,git clone資源庫:複製url然後一路next即可
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這裏可以選擇資源庫克隆存放位置

在這裏插入圖片描述
step2:導入工程
資源庫目錄/Working Tree -> Import Projects
在這裏插入圖片描述

在這裏插入圖片描述

[常見問題] 導入工程出現紅叉或歎號

原因分析:markers選項卡其實會說明原因,一般是jdk或server的jar包問題
在這裏插入圖片描述
解決方案:
右鍵項目->Build Path->configure build path
將有問題的jar包替換爲eclipse已配置的可用的jar包即可
在這裏插入圖片描述
在這裏插入圖片描述
step3:體驗常見的版本控制功能

  • (1)Add to Index:添加文件到版本庫
  • (2)Commit:提交修改本地倉庫
  • (3)Push:推送至遠程倉庫,位置 Push Head 或者 Commit…->Commit and Push
  • (4)pull:拉取遠程庫
  • (5)synchronize workspace:與本地版本庫同步; Advance->sysnchronize:與遠程倉庫同步
  • (6)reset:回退/還原至某一版本;單個文件還原:右鍵文件->repalce with -> 相應版本(如Head)
    在這裏插入圖片描述

後記:個人項目用git, 公司項目用svn, 魚與熊掌兼得,棒~ :)

Thank you for reading.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章