實用技術第3篇——git的使用

源代碼管理工具——git

什么是git?

  • git是一款開源的分布式版本控制工具
  • 在世界上所有的分布式版本控制工具中,git是最快、最簡單、最流行的

其他版本控制工具

  • CVS

    • 最早的開源、免費的集中式版本控制工具
    • 自身設計有問題,會造成提交文件不完整,版本庫莫名其妙損壞的情況
  • SVN

    • 修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制工具
  • ClearCase

    • 收費的集中式版本控制工具,安裝比Windows還大,運行特別慢
    • 能用ClearCase的一般是世界500等大企業
  • VSS

    • 微軟的集中式版本控制工具,集成在VisualStudio中

集中式和分布式版本比較

集中式版本控制

image

分布式版本控制

image

git和SVN的簡單對比

  • 速度
    • 在很多情況下,git的速度遠遠比SVN快
  • 結構
    • SVN是集中式管理,git是分布式管理
  • 其他
    • SVN使用分支比較笨拙,git可以輕松擁有無限個分支
    • SVN必須聯網才能正常工作,git支持本地版本控制工作
    • 舊版本的SVN會在每一個目錄置放一個.svn,git只會在根目錄擁有一個.git

git和SVN的工作流程圖

SVN的工作流程

image

git的工作流程
image

  • 分布式和集中式的最大區別在于:在分布式下
    • 開發者可以本地提交
    • 每個開發者機器上都有一個服務器的數據庫

使用git

  • Mac上比較好用的git圖形界面客戶端

  • SourceTree

  • GitHub

  • pXcode

  • git常用指令

git help —— git指令幫助手冊
查看其他指令的做法 —— git help其他指令
git config —— git的配置信息相關(修改的是.git/config文件)
配置用戶名 —— git config“user.name”用戶名(用于跟蹤修改記錄)
配置郵箱 —— git config“user.email”郵箱(用于多人開發間的溝通)
查看配置信息 —— git config–l
編輯配置信息 —— git config–e(用vim編輯,:wq是退出vim編輯器)
設置指令的別名 —— git configalias.別名 原指令名稱
設置帶參數指令的別名 —— git configalias.別名 “原指令名稱 參數”
將此設置應用到整個系統中 —— git config––gloabal
git status —— 查文件的狀態
查看某個文件的狀態 —— git status文件名
查看當前路徑所有文件的狀態 —— git status

git log —— 查看文件的修改日志
查看某個文件的修改日志 —— git log文件名
查看當前路徑所有文件的修改日志 —— git log
用一行的方式查看簡單的日志信息 —— git log––pretty=oneline
查看最近的N次修改 —— git log–N(N是一個整數)

git diff —— 查看文件最新改動的地方
查看某個文件的最新改動的地方 —— git diff文件名
查看當前路徑所有文件最新改動的地方 —— git diff
git init —— 初始化一個空的本地倉庫,生成一個.git目錄,用于維護版本信息
在當前路徑初始化倉庫 —— git init
在其他路徑初始化倉庫 —— git init倉庫路徑

git add —— 將工作區的文件保存到暫緩區
保存某個文件到暫緩區—— git add文件名
保存當前路徑的所有文件到暫緩區 —— git add.(注意,最后是一個點 .)

git commit —— 將暫緩區的文件提交到當前分支
提交某個文件到分支 —— git commit -m ”注釋”文件名
保存當前路徑的所有文件到分支 —— git commit -m ”注釋”
git reset —— 版本回退(建議加上––hard參數,git支持無限次后悔)
回退到上一個版本 —— git reset––hard HEAD^
回退到上上一個版本 —— git reset––hard HEAD^^
回退到上N個版本 —— git reset––hard HEAD~N(N是一個整數)
回退到任意一個版本 —— git reset––hard 版本號(版本號用7位即可)

git reflog —— 查看指令使用記錄(能夠查看所有的版本號)
git rm —— 刪除文件(刪完之后要進行commit操作,才能同步到版本庫)
git clone —— 下載遠程倉庫到本地

下載遠程倉庫到當前路徑 —— git clone倉庫的URL
下載遠程倉庫到特定路徑 —— git clone倉庫的URL存放倉庫的路徑

git pull —— 下載遠程倉庫的最新信息到本地倉庫
git push —— 將本地的倉庫信息推送到遠程倉庫

工作原理

  • 工作區(Working Directory):倉庫文件夾里除.git目錄以外的內容

  • 版本庫(Repository):.git目錄,用于存儲記錄版本信息

    • 暫緩區(stage)
    • 分支(master):git自動創建的第一個分支
    • HEAD指針:用于指向當前分支
  • gitadd和gitcommit的原理

    • gitadd:把文件修改添加到暫存區
    • gitcommit:把暫存區的所有內容提交到當前分支
圖1

image

遠程倉庫

如果是多人團隊開發,最好還是搭建一個遠程倉庫

  • 搭建遠程倉庫的途徑
    • 自己搭建一個git服務器:費時費力
    • 在GitHub上托管項目:公開項目免費、私有項目收費,很多第三方開源項目
    • 在oschina上托管項目:完全免費,在國內訪問速度快(推薦使用)

第1種:** 搭建GitHub遠程倉庫 – 配置SSH Key**

步驟一

  • 注冊一個GitHub帳號
  • 打開“AccountSettings"
  • 配置Mac的SSHKey的公鑰(用于限制提交)

步驟二
查看ssh版本 ssh–v 打開終端, ssh-keygen一路enter下。 在Mac上生成SSHKey(在終端輸入下面指令) cd~/.ssh ssh-keygen-t rsa-C "你的郵箱地址” 然后一直敲回車

然后就會在~/.ssh目錄下生成SSKKey的秘鑰對 id_rsa:私鑰,不可泄露 id_rsa.pub:公鑰,可以公開(將這個文件的內容粘貼到GitHub上)

利用cat指令可以查看文件的內容 catid_rsa.pub

步驟三

  • 添加倉庫
    • 新建工程
    • 配置倉庫名稱、倉庫描述
    • 選擇忽略文件的類型

創建完成

第2種: 搭建oschina遠程倉庫

  • 注冊一個oschina帳號
  • 新建項目
    • 配置名稱、介紹
    • 初始化項目
  • 獲取倉庫地址
  • 創建倉庫

創建完成

附錄:

// 顯示隱藏文件夾
# 顯示隱藏文件
 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
# 不顯示隱藏文件
 defaults write com.apple.finder AppleShowAllFiles No && killall Finder
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容

  • 聲明:這篇文章來源于廖雪峰老師的官方網站,我僅僅是作為學習之用 Git簡介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 3,972評論 3 27
  • 最近,房地產的大火又一次將全國大部分城市燃燒起來,與以往不同的是,除了北上廣深的“好戲連臺”和南京、杭州、武漢等熱...
    061a71a33958閱讀 587評論 1 0
  • 說實話,來參加這次教育學習活動,并非本意,而是學校領導安排的。沒辦法,躲...
    螢火蟲菇娘閱讀 440評論 0 1
  • 29.zslsww 這張照片是2016年12月27日晚在開州漢豐湖畔拍攝的。當天晚上在工作下班后我們一起相約...
    zslsww閱讀 307評論 0 1
  • 廈門以前有個詩意的名字——鷺島。我相信在遙遠的時代,這里白鷺翻飛,漁歌互答。從元明一直到...
    吳獻敏閱讀 414評論 0 0