Git常用命令及日常開發(fā)

前言

本文目的是通過記錄Git的知識點讓自己印象更深刻同時分享給大家。當然文中可能會有一些錯誤损痰,也希望大家能指出問題福侈!我也是通過學習Git教程后,總結(jié)了git的介紹以及日常開發(fā)中常用的命令和步驟卢未。

一.Git介紹

Git是分布式版本控制系統(tǒng)肪凛,它相較集中式版本控制系統(tǒng)有什么優(yōu)點?如下圖所示:


集中式版本控制系統(tǒng)

分布式版本控制系統(tǒng)

從上圖可以看出辽社,集中式的版本庫存放在“中央服務器”伟墙,當某個人干完活之后推送到版本庫,然后其他人提交時滴铅,先更新下來解決沖突后再提交戳葵。這其實基本能滿足開發(fā)的需求,但是集中式還有個缺點就是必須聯(lián)網(wǎng)才能工作汉匙,并且提交大文件需要一定的時間拱烁。分布式就是為了解決如何在沒網(wǎng)的時候開發(fā)生蚁?如何能提高開發(fā)效率?使用git開發(fā)時戏自,每個人的電腦都是一個版本庫邦投,所以不用考慮聯(lián)網(wǎng)問題,只有當要提交到遠程版本庫時才需要聯(lián)網(wǎng)擅笔,并且提交的速度遠遠超過其他版本控制系統(tǒng)尼摹。當然就想圖中看到的一樣,每個人的電腦不用經(jīng)過遠程版本庫就可以推送給對方(前提是同一局域網(wǎng))剂娄,但是這個比較麻煩蠢涝,通常都是用遠程版本庫推送的。

這里簡單介紹下Git的工作原理 :


原理圖
  • 工作區(qū):你開發(fā)時新增阅懦、修改的文件全部在工作區(qū)和二,如果沒有使用命令之前,它是不會提交到本地版本庫的耳胎。
  • 版本庫:版本庫其實是在你那個項目目錄下的一個隱藏文件夾(.git)惯吕,它里面包括了暫存區(qū)(stage)和默認主分支(master)。
  • 暫存區(qū)(stage):當工作區(qū)的文件修改后 怕午,你可以用命令git add提交到暫存區(qū)废登,現(xiàn)在還沒有到master分支上,也就是說你現(xiàn)在的版本庫其實和遠程版本庫還是一樣的郁惜。
  • 主分支(master):暫存區(qū)的內(nèi)容通過git commit提交到主分支堡距,這時候版本庫和遠程版本庫已經(jīng)不同了。
    當然分支是一個非常強大的功能兆蕉,它可以創(chuàng)建多個分支羽戒。分支的作用是:假設你準備開發(fā)一個新功能,但是需要兩周才能完成虎韵,第一周你寫了50%的代碼易稠,如果立刻提交,由于代碼還沒寫完包蓝,不完整的代碼庫會導致別人不能干活了驶社。如果等代碼全部寫完再一次提交,又存在丟失每天進度的巨大風險〔馕現(xiàn)在有了分支亡电,就不用怕了。你創(chuàng)建了一個屬于你自己的分支绳泉,別人看不到逊抡,還繼續(xù)在原來的分支上正常工作,而你在自己的分支上干活零酪,想提交就提交冒嫡,直到開發(fā)完畢后,再一次性合并到原來的分支上四苇,這樣孝凌,既安全,又不影響別人工作月腋。

二.Git常用命令

1.提交過程

git status(查看當前分支狀態(tài))
git add xxx(提交該文件到暫存區(qū))
git commit -m “xxx”(提交暫存區(qū)的所有內(nèi)容到當前分支并注釋)
git pull origin xxx(更新遠程版本庫到本地)
git push origin xxx(提交到遠程版本庫)

2.分支命令

git branch(查看所有分支)
git branch <name>(創(chuàng)建分支)
git checkout <name>(切換分支)
git checkout -b <name>(創(chuàng)建+切換分支)
git merge <name>(合并某分支到當前分支)
git branch -d <name>(刪除分支)
git log --graph(查看分支合并圖)    

3.版本庫相關命令

git init(創(chuàng)建本地版本庫)
git remote add origin git@github.com:xxxx/xxx.git(關聯(lián)本地和遠程倉庫)
git clone git@github.com: xxxx/xxx.git(克隆遠程倉庫)
git pull origin xxx(更新遠程版本庫)
git push origin xxx(提交到遠程版本庫)
git remote -v(查看遠程庫信息)

4.工作區(qū)命令

git stash(儲藏工作區(qū))
git stash pop(恢復工作區(qū))    

5.撤銷修改

git checkout --xxx(丟棄工作區(qū)某文件的修改)
git reset HEAD xxx(丟棄暫存區(qū)某文件的修改)
git reset --hard commit_id(回退到指定的版本號)

6.標簽管理

git tag(查看所有標簽)
git tag <name>(當前HEAD上打標簽)
git tag <name> commit_id(某個版本打標簽)
git push origin <tagname>(推送標簽)
git push origin --tags(推送全部未推送標簽)
git tag -d <tagname>(刪除本地標簽)

7.查看命令:

git log(--pretty=online)(查看提交日志)
git reflog(查看命令歷史)

8.配置命令(第一次使用Git時)

ssh-keygen -t rsa -C "email@example.com"(如果用戶主目錄下沒有.ssh文件夾則創(chuàng)建sshkey)
git config --global user.name "your name"(配置用戶名)
git config --global user.email "email@example.com"(配置郵箱)

三.日常開發(fā)注意點

  • clone注意點:如果一個項目有兩個分支蟀架,clone下來只有master,需要git checkout -b <name> origin/<name>(創(chuàng)建+切換)到另一個分支榆骚。

  • 分支使用策略:
    最好不要在master分支上開發(fā)片拍,需求如果是開發(fā)新功能則創(chuàng)建feature分支,如果是修改bug則創(chuàng)建bug分支妓肢,最后將修改完的分支merge到主分支上進行commit捌省。此時有可能出現(xiàn)一種情況:在feature分支上修改時,緊急需要修改bug碉钠,而feature還未開發(fā)完纲缓,這時無法checkout到master分支(因為工作區(qū)有修改的內(nèi)容),使用git stash儲藏再切換到master上創(chuàng)建新的bug分支喊废。

  • 完整的工作流程:

0.git clone git@github.com: xxxx/xxx.git(克隆遠程倉庫)
1.git checkout -b feature(當前分支是master)
2.在feature分支上修改文件
3.git add <name>(這里不建議用命令行祝高,配合AS使用效果更好)
4.git commit -m “xxx”(提交本地版本庫并注釋)
5.git checkout master-->git merge feature(切換分支并且合并到master分支上)
6.git pull origin master(更新遠程版本庫并合并)
7.如果有沖突則解決沖突
8.git push origin master

總結(jié)

本篇簡單介紹了git的工作原理、常用命令以及日常開發(fā)的注意點污筷。當然實踐是最重要的工闺,其實我自己對git的原理也是大概了解,你只要了解它是怎么工作的瓣蛀,然后通過實踐那些命令以及記錄在開發(fā)的時候遇到的問題斤寂,最后把它梳理成操作流程后就可以對git熟練使用了。后續(xù)開發(fā)過程中如果我用到新的命令以及注意事項會持續(xù)更新此文章揪惦。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遍搞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子器腋,更是在濱河造成了極大的恐慌溪猿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纫塌,死亡現(xiàn)場離奇詭異诊县,居然都是意外死亡,警方通過查閱死者的電腦和手機措左,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門依痊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事胸嘁∑堪冢” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵性宏,是天一觀的道長群井。 經(jīng)常有香客問我,道長毫胜,這世上最難降的妖魔是什么书斜? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮酵使,結(jié)果婚禮上荐吉,老公的妹妹穿的比我還像新娘。我一直安慰自己口渔,他們只是感情好样屠,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搓劫,像睡著了一般瞧哟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枪向,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天勤揩,我揣著相機與錄音,去河邊找鬼秘蛔。 笑死陨亡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的深员。 我是一名探鬼主播负蠕,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倦畅!你這毒婦竟也來了遮糖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤叠赐,失蹤者是張志新(化名)和其女友劉穎欲账,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芭概,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡赛不,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了罢洲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踢故。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出殿较,到底是詐尸還是另有隱情耸峭,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布斜脂,位于F島的核電站抓艳,受9級特大地震影響触机,放射性物質(zhì)發(fā)生泄漏帚戳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一儡首、第九天 我趴在偏房一處隱蔽的房頂上張望片任。 院中可真熱鬧,春花似錦蔬胯、人聲如沸对供。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽产场。三九已至,卻和暖如春舞竿,著一層夾襖步出監(jiān)牢的瞬間京景,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工骗奖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留确徙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓执桌,卻偏偏與公主長得像鄙皇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仰挣,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容