(內(nèi)部分享)Git常用命令和團隊協(xié)作開發(fā)

此內(nèi)容為內(nèi)部分享,大多內(nèi)容為口述畜侦,無需詳看

Why

  • 自己
  • 團隊

什么是Git

Git是Linux發(fā)明者Linus開發(fā)的一款新時代免費暴浦、開源的分布式版本控制系統(tǒng)捷枯。

Github與Git關系

引用一下stormzhang 初識 GITHUB的一段話

Git 是一款免費洲尊、開源的分布式版本控制系統(tǒng),他是著名的 Linux 發(fā)明者 Linus Torvalds 開發(fā)的奈偏。說到版本控制系統(tǒng)坞嘀,估計很多人都用過 SVN ,只不過 Git 是新時代的產(chǎn)物惊来,如果你還在用 SVN 來管理你的代碼丽涩,那就真的有些落伍了。不管是學習 GitHub 裁蚁,還是以后想從事編程行業(yè)矢渊,Git 都可以算是必備技能了,所以從現(xiàn)在開始建議你先去學習熟悉下 Git 枉证,后面我會有文章推薦一些適合新手的 Git 學習資料給你們矮男。

而 GitHub 上面說了,主要提供基于 git 的版本托管服務室谚。也就是說現(xiàn)在 GitHub 上托管的所有項目代碼都是基于 Git 來進行版本控制的毡鉴,所以 Git 只是 GitHub 上用來管理項目的一個工具而已,GitHub 的功能可遠不止于此秒赤!

Git與SVN區(qū)別

SVN屬于集中式版本控制系統(tǒng)猪瞬。

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

Git常用命令

本地

  • help //幫助
  • init //初始化倉庫
  • status //查看當前工作區(qū)和暫存區(qū)狀態(tài)
  • add //添加修改至暫存區(qū)
  • commit //提交暫存區(qū)的修改
  • log //查看提交日志信息
  • reflog //查看所有分支的所有操作記錄

branch(分支)

git branch branch-name #創(chuàng)建分支
git branch -d branch-name #刪除指定分支
git branch -D branch-name #強制刪除指定分支

checkout (檢出,也具有撤銷功能)

git checkout branch-name #檢出分支
git checkout tag-name #檢出tag
git checkout commit_id #檢出某次commit
git checkout -- file #撤銷還未add進暫存區(qū)的文件

場景:當你改亂了工作區(qū)某個文件的內(nèi)容入篮,還未add至暫存區(qū)陈瘦,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file潮售。

merge & rebase(合并)

#merge(合并)
git checkout master #切換回master分支
git merge featureA  #合并目標分支

#rebase(復位基底的)
git checkout master #切換回master分支
git rebase featureA #合并目標分支

分支圖形講解

引用一下stormzhang GIT 進階

rebase 跟 merge 的區(qū)別你們可以理解成有兩個書架甘晤,你需要把兩個書架的書整理到一起去,第一種做法是 merge 饲做,比較粗魯暴力,就直接騰出一塊地方把另一個書架的書全部放進去遏弱,雖然暴力盆均,但是這種做法你可以知道哪些書是來自另一個書架的;第二種做法就是 rebase 漱逸,他會把兩個書架的書先進行比較泪姨,按照購書的時間來給他重新排序,然后重新放置好饰抒,這樣做的好處就是合并之后的書架看起來很有邏輯肮砾,但是你很難清晰的知道哪些書來自哪個書架的。

只能說各有好處的袋坑,不同的團隊根據(jù)不同的需要以及不同的習慣來選擇就好仗处。

reset(回退)

git reset HEAD^ #回退至上一版本, 并重置緩存區(qū)
git reset HEAD~10 #回退至10個版本之前, 并重置緩存區(qū)
git reset --soft HEAD #回退時不重置緩存區(qū)和工作區(qū)
git reset --mixed HEAD #回退時重置緩存區(qū), 默認選項
git reset --hard HEAD #回退時重置緩存區(qū)和工作區(qū)
git reset #不指定HEAD, 用來清空緩存區(qū)的修改
git reset filename #清空緩存區(qū)指定文件的修改
git reset --hard #不指定HEAD, 用來清空工作區(qū)和緩存區(qū)的修改

場景:當你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改婆誓,分兩步吃环,第一步用命令git reset HEAD file,就回到了checkout場景

tag(標簽)

git tag tag-name #在最新提交的commit上打標簽
git tag tag-name commit_id #指定某次commit上打標簽
git tag -a tag-name -m "message" #在最新提交的commit上打標簽并添加說明信息
git show tag-name #查看tag信息

config(配置)

#必須配置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

#alias(別名)
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch

#炫酷
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

diff(比較差異)

git diff <$id1> <$id2>   # 比較兩次提交之間的差異
git diff <branch1>..<branch2> # 在兩個分支之間比較 
git diff --staged   # 比較暫存區(qū)和版本庫差異

clean(清除未跟蹤的文件)

git clean -d   # 刪除未跟蹤目錄以及目錄下的文件洋幻,如果目錄下包含其他git倉庫文件郁轻,并不會刪除(-dff可以刪除)。
git clean -f   # 如果 git cofig 下的 clean.requireForce 為true文留,那么clean操作需要-f(--force)來強制執(zhí)行好唯。
git clean -i   # 進入交互模式
git clean -n   # 查看將要被刪除的文件,并不實際刪除文件

stash(儲藏)

git stash 或 git stash save #儲藏修改的跟蹤文件與暫存改動
git stash list #查看儲藏的列表
git stash apply stash@{x} #回復儲藏燥翅,可以不指定id骑篙,代表最近的儲藏
git stash drop stash@{x} #刪除儲藏,可以不指定id权旷,代表最近的儲藏

git stash pop stash@{x} #回復并刪除儲藏替蛉,可以不指定id,代表最近的儲藏

遠程

clone(克隆)

#ssh協(xié)議
git clone git@xxx:xxx/xxx.git

#https協(xié)議
git clone https://github.com/Walkud/OptUI.git

Git支持多種協(xié)議拄氯,包括https躲查,但通過ssh支持的原生git協(xié)議速度最快。

使用https除了速度慢以外译柏,還有個最大的麻煩是每次推送都必須輸入口令

push(推送)

git push origin branch-name #推送至遠程倉庫對應分支上

pull(抓取)

git pull <remote> <branch>

remote(遠程)

git remote #查看倉庫
git remote -v  #顯示倉庫更詳細信息

忽略文件

Git工作區(qū)的根目錄下創(chuàng)建一個特殊的.gitignore文件镣煮,然后把要忽略的文件名填進去,Git就會自動忽略這些文件鄙麦。

.gitignore文件模板配置參考

場景

誤提交或需求變更場景

已經(jīng)提交了不合適的修改到版本庫時典唇,只能使用版本回退。HEAD指向的版本就是當前版本胯府,因此介衔,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id骂因。
穿梭前炎咖,用git log可以查看提交歷史,以便確定要回退到哪個版本寒波。

要重返未來乘盼,用git reflog查看命令歷史,以便確定要回到未來的哪個版本俄烁。

團隊協(xié)作

資料

Git官方網(wǎng)站

Git官方中文Book

廖雪峰 Git教程

Git忽略文件模板

Git圖形化客戶端官方推薦

Git常用命令

代碼回滾:Reset绸栅、Checkout、Revert的選擇

問題

項目初期在某人一個分支上添加一個庫后页屠,怎么把該庫單獨提交到公共分支上

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粹胯,一起剝皮案震驚了整個濱河市蓖柔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矛双,老刑警劉巖渊抽,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異议忽,居然都是意外死亡懒闷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門栈幸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愤估,“玉大人,你說我怎么就攤上這事速址⊥嫜妫” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵芍锚,是天一觀的道長昔园。 經(jīng)常有香客問我,道長并炮,這世上最難降的妖魔是什么默刚? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮逃魄,結(jié)果婚禮上荤西,老公的妹妹穿的比我還像新娘。我一直安慰自己伍俘,他們只是感情好邪锌,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著癌瘾,像睡著了一般觅丰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妨退,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天妇萄,我揣著相機與錄音,去河邊找鬼碧注。 笑死,一個胖子當著我的面吹牛糖赔,可吹牛的內(nèi)容都是我干的萍丐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼放典,長吁一口氣:“原來是場噩夢啊……” “哼逝变!你這毒婦竟也來了基茵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤壳影,失蹤者是張志新(化名)和其女友劉穎拱层,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宴咧,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡根灯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掺栅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烙肺。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖氧卧,靈堂內(nèi)的尸體忽然破棺而出桃笙,到底是詐尸還是另有隱情,我是刑警寧澤沙绝,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布搏明,位于F島的核電站,受9級特大地震影響闪檬,放射性物質(zhì)發(fā)生泄漏星著。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一谬以、第九天 我趴在偏房一處隱蔽的房頂上張望强饮。 院中可真熱鬧,春花似錦为黎、人聲如沸邮丰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪廉。三九已至,卻和暖如春炕檩,著一層夾襖步出監(jiān)牢的瞬間斗蒋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工笛质, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泉沾,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓妇押,卻偏偏與公主長得像跷究,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敲霍,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,644評論 9 163
  • 本片內(nèi)容轉(zhuǎn)自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃兒閱讀 4,921評論 2 88
  • Android開發(fā)中的MVP架構 這篇文章背后的故事 原文鏈接 MVP Architecture in Andro...
    mimimomo閱讀 739評論 0 15
  • 這是現(xiàn)實俊马。哎丁存。 在別人面前,每個家庭都是互相關愛柴我,互相理解解寝,互相支持的。這種美好情景只出現(xiàn)在理想世界艘儒。關上門聋伦,只有...
    by小微閱讀 258評論 1 0
  • 陌陌是陌生人社交,現(xiàn)在是在通過群組活動去沉淀關系轉(zhuǎn)化為半熟人關系彤悔,而微信是熟人關系的封閉系統(tǒng)嘉抓,卻要打造連接一切的開...
    公子F閱讀 173評論 0 1