Git入門(men)之(zhi)Git實例操作(zuo)
時(shi)間:2018-09-25 來源:未(wei)知(zhi)
要點一覽:
· 1.工作場景介紹
· 2.操作介紹(shao)
· 3.總結
1.工作場景介紹
本(ben)文實(shi)現一(yi)個本(ben)地代碼(ma)管(guan)理,和實(shi)現遠程代碼(ma)提交(jiao)的教(jiao)程!
我們(men)實現對本(ben)地文(wen)件(jian)的版本(ben)管理,以及遠(yuan)程推送和(he)分(fen)支管理!
2.操作介紹
我(wo)們先(xian)創(chuang)建一個本地代碼倉庫:

命令:
$git init
//初始化代碼庫,作(zuo)為我們本地代碼的倉庫
接(jie)下來(lai)我(wo)們就來(lai)開(kai)始(shi)自己的(de)工作:
【1】、初始化一個倉庫
首先先自己創建(jian)一個工作目錄:
$mkdir work_space
進入該目錄,獲得代碼庫:
$git clone <本地(di)代(dai)碼庫路徑>
$git clone <本地代(dai)碼庫路徑(jing)> <目標目錄名>
實例如下:
命令1:
$git clone <代(dai)碼庫(ku)路徑>

命令2: 可以自(zi)己制定本地(di)代碼庫路徑,如果該(gai)路徑不存(cun)在時(shi),則會自(zi)動(dong)創(chuang)建(jian)
$git clone <代碼庫路徑>

此時我(wo)們(men)就獲得了(le)一(yi)個自己的代碼庫(ku),之(zhi)后我(wo)們(men)就可以在其中(zhong)進行自己的開發,可以借助于git實現自己的代碼管(guan)理了(le):

這兩個(ge)目(mu)錄類似于兩個(ge)開發人(ren)員
自己可(ke)以選(xuan)擇一個進入(ru),進行操作
我們進入mygit目(mu)錄,此時我們可以先查看一下當前(qian)的倉庫狀態信息(xi):

上面提示,當前(qian)倉庫沒(mei)有任何要(yao)提交(jiao)的(de)東西(xi),上圖中(zhong)關于分支的(de)概念我們在(zai)后(hou)面會進行說明!
沒有認可東(dong)西提交(jiao)是(shi),因為我(wo)們沒有編(bian)寫任何文件,這里我(wo)們就(jiu)編(bian)輯一個文件,
程(cheng)序很簡(jian)單: 實現(xian)一個(ge)加(jia)法的操作
/*main.c*/
#include
int add(int a,int b)
{
int c = a + b;
return c;
}
int main(int argc,const char * argv[])
{
int a = 10,b = 20;
printf(" a + b = %d\n",add(a,b));
return 0;
}
編譯后,我們通過git status 命令再來(lai)查看 倉庫狀態,如下圖所示:

從(cong)提示信(xin)息(xi)我們可以(yi)看到(dao),main.c a.out 都是(shi)"未被(bei)跟(gen)(gen)蹤(zong)的(de)文件(jian)",所謂(wei)”未被(bei)跟(gen)(gen)蹤(zong)的(de)文件(jian)“即,還沒有納入git管理的(de)文件(jian)
但(dan)是通常我們進(jin)行代碼(ma)提交時,或是代碼(ma)倉庫不需要可執行的文件,那么(me)怎么(me)辦呢!
git 提供了一種方式可以指定哪(na)些類型的文(wen)件不被(bei)提交!
操作:
創建忽略文件
$ touch .gitignore
.gitignore文件中記錄要排除(chu)文件的名(ming)字,可以使用*、?、正則表達式
這是我們的.gitignore 文件(jian)的的內容,如果(guo)還有(you)需要忽略的可以在其中進行(xing)添加

好(hao),做(zuo)好(hao)這些(xie)之后(hou),我們可以(yi)來講我們的代碼(ma)添(tian)加到git的管理中了!
【2】、跟蹤文件
命令:
$git add .

這樣就實現了(le)將我們的(de)代碼加入(ru)git的(de)版本管理中了(le)!
現(xian)在我們實現(xian)的(de)只是將
"工作目(mu)錄"下的內(nei)容 --添加到-->暫存(cun)區,但是還沒有 提(ti)交到"代碼倉庫中"。
【3】、提交到代碼庫
命令:
$git commit -m ”提(ti)交信息“

查看提交(jiao)記錄(lu):
$git log
//只顯(xian)示提交信息(xi)的第(di)一行
$git log --pretty=short

到現在(zai)我(wo)們(men)基本上(shang)就完成對代碼的(de)管理,但(dan)是這還不夠,我(wo)們(men)優(you)勢需(xu)要在(zai)項目中添(tian)加(jia)新的(de)功(gong)能,但(dan)是,有不影響(xiang)原有的(de),此時我(wo)們(men)需(xu)要借助于分(fen)支的(de)功(gong)能的(de)來實現
【4】、分支操作
分支操作的相關(guan)命令:
分支操作:
// 顯示(shi)分支
$git branch
// 創建分支
$git branch <分支名>
// 切換分支
$git checkout <分支名(ming)>
$git chechout - //切換到上一個分支(zhi)
// 合并分支
$git merge --no-ff <分支(zhi)名(ming)>
//刪除分支
$git branch -d <分之(zhi)命名(ming)>
//分支重命名
$git branch -m <源分支(zhi)名> <目(mu)標分支(zhi)名>

之后切換到該分支下(xia),可以(yi)做自己的代碼開發

我們在(zai)該分支下進(jin)行了代碼的(de)修改,此時查看倉庫的(de)狀態(tai)
之(zhi)后我們(men)進(jin)行提交
命令:
// 一次性完成add 和(he) commit 操(cao)作
$git commit -am ”提交信息“
操(cao)作效果(guo)如下(xia):

對比分支(zhi)差異(yi):

之后進行分支合并操作:
命令:
//切換到主分支
$git cheout master
$git merge --no-ff my_branch
操作效(xiao)果如下,合并(bing)(bing)之后(hou)(hou)有相應的(de)提示(shi), --no-ff參數表示(shi)可以用普通(tong)模式(shi)合并(bing)(bing),合并(bing)(bing)后(hou)(hou)的(de)歷史(shi)有分支,能看出來(lai)曾(ceng)經做過合并(bing)(bing),而(er)fast forward合并(bing)(bing)就看不(bu)出來(lai)曾(ceng)經做過合并(bing)(bing)。

【5】、版本回溯
操作命令:
$git log //查看到當前為止的歷史(shi)日志!
$git reflog //獲得操作歷史,查看sha值(zhi).
$git resetr --hard <哈希值> //只需要前幾位就(jiu)可以

假如我們想回溯到 chang main.c 這個部分

當前就回溯到了該版本。自己可以查看自己的源代碼進行對比
【6】、遠程操作
相關命令
$git remote
$git fetch
$git pull //獲取新的(de)遠程(cheng)倉(cang)庫分支
$git push //推送至(zhi)遠程倉庫
首先我們現在 開(kai)源(yuan)的(de)代碼托(tuo)管(guan)網站上建(jian)立(li)一個(ge)同名的(de)項目
我之前已(yi)有(you)賬號,相關的注冊等教程可(ke)參考網上資源!


之后我們獲(huo)得(de)地址:
git@git.oschina.net:smartIOT/mygit.git
首先(xian)需要為本地倉庫(ku)添加一個遠程倉庫(ku)的地址:
$git remote add orgin git@git.oschina.net:smartIOT/mygit.git
之后進行推送
$git push -u origin master
出現如下提示:

這是(shi)因(yin)為(wei) git 鏈接方式我們使用的(de)(de)(de)是(shi)ssh方式,需要(yao)公(gong)鑰(yao)的(de)(de)(de)的(de)(de)(de)驗(yan)證
公鑰(yao)的添加(jia)方(fang)式如下,需(xu)要在我(wo)們(men)的 開(kai)源 的代(dai)碼托管賬戶中進行添加(jia)!
SSH Keys
SSH key 可以讓你(ni)在(zai)你(ni)的(de)電腦和 Git @ OSC 之(zhi)間(jian)建立安全的(de)加密連(lian)接。
你可以按(an)如(ru)下命令來生成(cheng)sshkey
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"# Creates a new ssh key using the provided email
# Generating public/private rsa key pair...
查看(kan)你的public key,并把他添加(jia)到 Git @ OSC //git.oschina.net/keys
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
添(tian)加后,在終(zhong)端(duan)(Terminal)中輸入
ssh -T git@git.oschina.net
若返回
Welcome to Git@OSC, yourname!
則證(zheng)明添加(jia)成功。
添加(jia)之后我們(men)進行強制推送:

顯示已推(tui)送成功,之(zhi)后(hou)到(dao)我們的 賬戶查看(kan),顯示已經(jing)提交上來了!

$git clone git@git.oschina.net:smartIOT/mygit.git

3.總結
1.主(zhu)要(yao)熟悉,整個(ge)工作流程(cheng)(cheng)和操作流程(cheng)(cheng),建立整體概念(nian),方便后續的學習(xi)和深(shen)入!
2.git的相關命令
n git init
n git add
n git commit 配(pei)合
n git status 使用
n git branch
n git remote
n git log
n git relog
n git pull
n git push
git clone

