要點一覽:
· 1.工作場景介紹
· 2.操作介紹
· 3.總結
1.工作場景介紹
本文實現一個本地代碼管理,和實現遠程代碼提交的教程!
我們實現對本地文件的版本管理,以及遠程推送和分支管理!
2.操作介紹
我們先創建一個本地代碼倉庫:
命令:
$git init
//初始化代碼庫,作為我們本地代碼的倉庫
接下來我們就來開始自己的工作:
【1】、初始化一個倉庫
首先先自己創建一個工作目錄:
$mkdir work_space
進入該目錄,獲得代碼庫:
$git clone <本地代碼庫路徑>
$git clone <本地代碼庫路徑> <目標目錄名>
實例如下:
命令1:
$git clone <代碼庫路徑>
命令2: 可以自己制定本地代碼庫路徑,如果該路徑不存在時,則會自動創建
$git clone <代碼庫路徑>
此時我們就獲得了一個自己的代碼庫,之后我們就可以在其中進行自己的開發,可以借助于git實現自己的代碼管理了:
這兩個目錄類似于兩個開發人員
自己可以選擇一個進入,進行操作
我們進入mygit目錄,此時我們可以先查看一下當前的倉庫狀態信息:
上面提示,當前倉庫沒有任何要提交的東西,上圖中關于分支的概念我們在后面會進行說明!
沒有認可東西提交是,因為我們沒有編寫任何文件,這里我們就編輯一個文件,
程序很簡單: 實現一個加法的操作
/*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 命令再來查看 倉庫狀態,如下圖所示:
從提示信息我們可以看到,main.c a.out 都是"未被跟蹤的文件",所謂”未被跟蹤的文件“即,還沒有納入git管理的文件
但是通常我們進行代碼提交時,或是代碼倉庫不需要可執行的文件,那么怎么辦呢!
git 提供了一種方式可以指定哪些類型的文件不被提交!
操作:
創建忽略文件
$ touch .gitignore
.gitignore文件中記錄要排除文件的名字,可以使用*、?、正則表達式
這是我們的.gitignore 文件的的內容,如果還有需要忽略的可以在其中進行添加
好,做好這些之后,我們可以來講我們的代碼添加到git的管理中了!
【2】、跟蹤文件
命令:
$git add .
這樣就實現了將我們的代碼加入git的版本管理中了!
現在我們實現的只是將
"工作目錄"下的內容 --添加到-->暫存區,但是還沒有 提交到"代碼倉庫中"。
【3】、提交到代碼庫
命令:
$git commit -m ”提交信息“
查看提交記錄:
$git log
//只顯示提交信息的第一行
$git log --pretty=short
到現在我們基本上就完成對代碼的管理,但是這還不夠,我們優勢需要在項目中添加新的功能,但是,有不影響原有的,此時我們需要借助于分支的功能的來實現
【4】、分支操作
分支操作的相關命令:
分支操作:
// 顯示分支
$git branch
// 創建分支
$git branch <分支名>
// 切換分支
$git checkout <分支名>
$git chechout - //切換到上一個分支
// 合并分支
$git merge --no-ff <分支名>
//刪除分支
$git branch -d <分之命名>
//分支重命名
$git branch -m <源分支名> <目標分支名>
之后切換到該分支下,可以做自己的代碼開發
我們在該分支下進行了代碼的修改,此時查看倉庫的狀態
之后我們進行提交
命令:
// 一次性完成add 和 commit 操作
$git commit -am ”提交信息“
操作效果如下:
對比分支差異:
之后進行分支合并操作:
命令:
//切換到主分支
$git cheout master
$git merge --no-ff my_branch
操作效果如下,合并之后有相應的提示, --no-ff參數表示可以用普通模式合并,合并后的歷史有分支,能看出來曾經做過合并,而fast forward合并就看不出來曾經做過合并。
【5】、版本回溯
操作命令:
$git log //查看到當前為止的歷史日志!
$git reflog //獲得操作歷史,查看sha值.
$git resetr --hard <哈希值> //只需要前幾位就可以
假如我們想回溯到 chang main.c 這個部分
當前就回溯到了該版本。自己可以查看自己的源代碼進行對比
【6】、遠程操作
相關命令
$git remote
$git fetch
$git pull //獲取新的遠程倉庫分支
$git push //推送至遠程倉庫
首先我們現在 開源的代碼托管網站上建立一個同名的項目
我之前已有賬號,相關的注冊等教程可參考網上資源!
之后我們獲得地址:
git@git.oschina.net:smartIOT/mygit.git
首先需要為本地倉庫添加一個遠程倉庫的地址:
$git remote add orgin git@git.oschina.net:smartIOT/mygit.git
之后進行推送
$git push -u origin master
出現如下提示:
這是因為 git 鏈接方式我們使用的是ssh方式,需要公鑰的的驗證
公鑰的添加方式如下,需要在我們的 開源 的代碼托管賬戶中進行添加!
SSH Keys
SSH key 可以讓你在你的電腦和 Git @ OSC 之間建立安全的加密連接。
你可以按如下命令來生成sshkey
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"# Creates a new ssh key using the provided email
# Generating public/private rsa key pair...
查看你的public key,并把他添加到 Git @ OSC //git.oschina.net/keys
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
添加后,在終端(Terminal)中輸入
ssh -T git@git.oschina.net
若返回
Welcome to Git@OSC, yourname!
則證明添加成功。
添加之后我們進行強制推送:
顯示已推送成功,之后到我們的 賬戶查看,顯示已經提交上來了!
$git clone git@git.oschina.net:smartIOT/mygit.git
3.總結
1.主要熟悉,整個工作流程和操作流程,建立整體概念,方便后續的學習和深入!
2.git的相關命令
n git init
n git add
n git commit 配合
n git status 使用
n git branch
n git remote
n git log
n git relog
n git pull
n git push
git clone