GIT

學(xué)號(hào):19021211263

一魁莉、SVN與Git的最主要的區(qū)別

說(shuō)起git自然想到SVN,我剛接觸到的版本控制工具是SVN募胃,SVN是集中式版本控制系統(tǒng)旗唁,版本庫(kù)是集中放在中央服務(wù)器的,干活的時(shí)候痹束,先要從中央服務(wù)器哪里得到最新的版本检疫,干完活后,需要把自己做完的活推送到中央服務(wù)器祷嘶。中央服務(wù)器就好比是一個(gè)圖庫(kù)屎媳,你要改一本書,必須先從圖庫(kù)借出來(lái)论巍,然后回到家自己改烛谊,改完了,再放回圖庫(kù)。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)還可以肛度,帶寬夠大,速度夠快湃崩,如果在互聯(lián)網(wǎng)下,如果網(wǎng)速慢的話接箫,就耽誤事了攒读。
  Git是分布式版本控制系統(tǒng),它沒(méi)有中央服務(wù)器的辛友,每個(gè)人的電腦就是一個(gè)完整的版本庫(kù)薄扁,工作的時(shí)候就不需要聯(lián)網(wǎng)了剪返,因?yàn)榘姹径际窃谧约旱碾娔X上。既然每個(gè)人的電腦都有一個(gè)完整的版本庫(kù)邓梅,那多個(gè)人如何協(xié)作呢脱盲?比如說(shuō)自己在電腦上改了文件A,其他人也在電腦上改了文件A日缨,這時(shí)钱反,你們兩之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了匣距。
  和集中式版本控制系統(tǒng)相比面哥,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€(gè)人電腦里都有完整的版本庫(kù)毅待,某一個(gè)人的電腦壞掉了不要緊尚卫,隨便從其他人那里復(fù)制一個(gè)就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問(wèn)題尸红,所有人都沒(méi)法干活了吱涉。
Git基本常用命令如下:

二、常用的git命令

--文件目錄操作命令

mkdir *   創(chuàng)建一個(gè)空目錄 *指目錄名
pwd       顯示當(dāng)前目錄的路徑外里。
cat *     查看*文件內(nèi)容
git rm *  刪除**文件

--git初始化操作

git init                   把當(dāng)前的目錄變成git倉(cāng)庫(kù)怎爵,生成隱藏.git文件。
git remote add origin url  把本地倉(cāng)庫(kù)的內(nèi)容推送到GitHub倉(cāng)庫(kù)级乐。
git clone git@url/test.git 從遠(yuǎn)程庫(kù)克隆
git add *                  把x文件添加到暫存區(qū)去疙咸。
git commit –m "*"          提交文件 –m 后面的是注釋县匠。  

--git 克隆分支

git clone xxx.git                最簡(jiǎn)單直接的命令
git clone xxx.git "指定目錄"      clone到指定目錄
git clone -b branchname xxx.git  clone時(shí)創(chuàng)建新的分支替代默認(rèn)Origin HEAD(master)

--clone 遠(yuǎn)程分支

git clone 命令默認(rèn)的只會(huì)建立master分支风科,如果你想clone指定的某一遠(yuǎn)程分支(如:dev)的話,可以如下:

1. 查看所有分支(包括隱藏的) git branch -a 顯示所有分支

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master

2. 在本地新建同名的("dev")分支乞旦,并切換到該分支

git checkout -t origin/dev 該命令等同于:
git checkout -b dev origin/dev

--查看命令

git status        查看倉(cāng)庫(kù)狀態(tài)
git diff  *       查看X文件修改了那些內(nèi)容  
git log           查看歷史記錄
git reflog        查看歷史記錄的版本號(hào)id(記錄你的每一次命令,不論是否提交)
git log --pretty=oneline 如果信息量太多可以進(jìn)行比較好的列表顯示  

--版本回退

git reset –hard HEAD^       回退到上一個(gè)版本
git reset --hard HEAD~第幾個(gè) 如果想回退到第3個(gè)版本贼穆,使用git reset –hard HEAD~3
git reset --hard 057d       回退到某一個(gè)具體的版本號(hào)

--撤銷修改

git checkout file-name 恢復(fù)某個(gè)已修改的文件(撤銷未提交的修改):
git revert HEAD        還原最近一次提交的修改:
git revert commit-id   還原指定版本的修改

--分支管理

git branch                   查看本地所有的分支
git branch -a                查看遠(yuǎn)程所有的分支
git branch name              創(chuàng)建分支
git branch –d dev            刪除dev分支
git push origin --delete dev 刪除遠(yuǎn)程的dev分支
git branch -m dev develop    重命名分支
git checkout –b dev          創(chuàng)建dev分支 并切換到dev分支上
git merge dev                在當(dāng)前分支上合并dev分支代
git push origin zyf-dev      把當(dāng)前新疆的zyf-dev分支推送到遠(yuǎn)程庫(kù)(遠(yuǎn)程倉(cāng)庫(kù)沒(méi)有給分支則會(huì)新建立該分支)
git checkout — *                     把XX文件在工作區(qū)的修改全部撤銷。
git checkout master                  切換回master分支
git push --set-upstream origin dev   提交修改并創(chuàng)建遠(yuǎn)程分支dev

--tag相關(guān)操作

git tag         列出所有的tag
git tag name    打輕量標(biāo)簽 name
git tag -d name 刪除本地的tag
git push origin --delete tag name  刪除遠(yuǎn)程的tag
git show name        查看tag信息
git push origin name 將tag提交到遠(yuǎn)程

--隱藏的文件

git stash       把當(dāng)前的工作隱藏起來(lái) 等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作
git stash list  查看所有被隱藏的文件列表
git stash apply 恢復(fù)被隱藏的文件兰粉,但是內(nèi)容不刪除
git stash drop  刪除文件
git stash pop   恢復(fù)文件的同時(shí) 也刪除文件

--查看遠(yuǎn)程庫(kù)信息(git remote的用法)

git remote       查看遠(yuǎn)程庫(kù)的信息
git remote –v    查看遠(yuǎn)程庫(kù)的詳細(xì)信息
git remote add  name url          添加遠(yuǎn)程倉(cāng)庫(kù)
git remote rename oldname newname 重命名倉(cāng)庫(kù)
git remote rm                     刪除倉(cāng)庫(kù)

--將遠(yuǎn)程分支拉取到本地

1 方法一:git checkout -b 本地分支名x origin/遠(yuǎn)程分支名x
2 方式二:git fetch origin 遠(yuǎn)程分支名x:本地分支名x

--git pull操作

# git pull命令的作用是故痊,取回遠(yuǎn)程主機(jī)某個(gè)分支的更新,再與本地的指定分支合并玖姑,基本的格式如下愕秫。
$ git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>

# 取回origin主機(jī)的next分支,與本地的master分支合并焰络,需要寫成下面這樣
$ git pull origin next:master

# 如果遠(yuǎn)程分支是與當(dāng)前分支合并戴甩,則冒號(hào)后面的部分可以省略。
$ git pull origin next

# 上面命令表示闪彼,取回origin/next分支甜孤,再與當(dāng)前分支合并。實(shí)質(zhì)上,這等同于先做git fetch缴川,再做git merge茉稠。
$ git fetch origin
$ git merge origin/next

# 在某些場(chǎng)合,Git會(huì)自動(dòng)在本地分支與遠(yuǎn)程分支之間把夸,建立一種追蹤關(guān)系(tracking)而线。比如,在git clone的時(shí)候恋日,所有本地分支默認(rèn)與遠(yuǎn)程主機(jī)的同名分支吞获,建立追蹤關(guān)系,也就是說(shuō)谚鄙,本地的master分支自動(dòng)”追蹤”origin/master分支各拷。
# Git也允許手動(dòng)建立追蹤關(guān)系。
git branch --set-upstream master origin/next

# 上面命令指定master分支追蹤origin/next分支闷营。如果當(dāng)前分支與遠(yuǎn)程分支存在追蹤關(guān)系烤黍,git pull就可以省略遠(yuǎn)程分支名。
$ git pull origin

--git 設(shè)置大小寫敏感

Windows上的Git默認(rèn)是大小寫不敏感的傻盟,這樣多平臺(tái)寫作就可能會(huì)出現(xiàn)問(wèn)題速蕊。Win上的Git設(shè)置為大小寫敏感的命令如下

git config core.ignorecase false  

--git 設(shè)置忽略文件或文件夾權(quán)限修改

git config core.filemode false

--創(chuàng)建追蹤分支

不帶任何參數(shù)的git push,默認(rèn)只推送當(dāng)前分支娘赴,這叫做simple方式规哲。此外,還有一種matching方式诽表,會(huì)推送所有有對(duì)應(yīng)的遠(yuǎn)程分支的本地分支唉锌。Git 2.0版本之前,默認(rèn)采用matching方法竿奏,現(xiàn)在改為默認(rèn)采用simple方式袄简。如果要修改這個(gè)設(shè)置,可以采用git config命令泛啸。

$ git config --global push.default matching
# 或者
$ git config --global push.default simple (最好使用這種方式)

$ git branch --track master origin/master //在使用 git branch 命令時(shí)加上 '--track' 參數(shù), 來(lái)手動(dòng)創(chuàng)建一個(gè)追蹤分支

--切換git 命令提示中文到英文

// ubuntu裝的git不知道怎么就出現(xiàn)全中文的提示,不太好,果斷切換到中文了,切換方法如下:// 1:寫入
echo "alias git='LANG=en_GB git'" >> ~/.bashrc

// 2:生效
source ~/.bashrc

--git 刪除未添加到版本中的文件或者文件夾

git checkout 只能回退在版本中的修改或者刪除, 對(duì)于新添加的文件是沒(méi)有作用的, 也就是說(shuō), 新建的文件或者文件夾是:Untracked files, 要?jiǎng)h除或者清理掉這些文件,需要使用 git clean 命令:

// 刪除 untracked files
git clean -f

// 連 untracked 的目錄也一起刪掉
git clean -fd

// 連 gitignore的untrack 文件/目錄也一起刪掉 (一般這個(gè)是用來(lái)刪掉編譯出來(lái)的 .o一類的文件)
git clean -xfd

// 在使用清理 git clean之前绿语,建議加上 -n 來(lái)先看看會(huì)刪掉哪些文件,防止重要文件被誤刪
git clean -nxfd
git clean -nf
git clean -nfd

三候址、常出錯(cuò)誤

1:There is no tracking information for the current branch

? 則說(shuō)明本地分?支和遠(yuǎn)程分?支的鏈接關(guān)系沒(méi)有創(chuàng)建吕粹,用命令:
? git branch --set-upstream branch-name origin/branch-name。

2: ![rejected] dev -> dev (non-fast-forward) ... Updates were rejected because the tip of your current branch

? 推送失敗岗仑,因?yàn)檫h(yuǎn)程代碼的最新提交和你試圖推送的提交有沖突匹耕,解決辦法也很簡(jiǎn)單,先用git pull把最新的提交從origin/dev抓下來(lái)赔蒲,然后泌神,在本地合并良漱,解決沖突,再推送

3:CONFLICT (content): Merge conflict in

? 這回git pull成功欢际,但是合并有沖突母市,需要手動(dòng)解決,解決的方法和分支管理中的解決沖突一樣损趋。解決后患久,提交,再push:

4: You are not currently on a branch, so I cannot use any

解決辦法:git checkout master

5:Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded

6:在執(zhí)行 git push 時(shí)可能會(huì)看到如下消息:

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
  git config --global push.default simpl

解決辦法:‘matching’ 參數(shù)是 Git 1.x 的默認(rèn)行為浑槽,如果你執(zhí)行 git push 但沒(méi)有指定分支蒋失,它將 push 所有你本地的分支到遠(yuǎn)程倉(cāng)庫(kù)中對(duì)應(yīng)匹配的分支。而 Git 2.x 默認(rèn)的是 simple桐玻,意味著執(zhí)行 git push 沒(méi)有指定分支時(shí)篙挽,只有當(dāng)前分支會(huì)被 push 到你使用 git pull 獲取的代碼。
根據(jù)提示镊靴,修改git push:

git config --global push.default matching

再次執(zhí)行g(shù)it push 就行了铣卡。

7:You asked to pull from the remote 'origin', but did not specify: a branch. Because this is not the default configured remote for your current branch, you must specify a branch on the command line

解決辦法:找到:.git/config 修改如下

[branch "master"]
  remote = origin
  merge = refs/heads/master

8:ERROR: Permission to user1/test.git denied to user2 fatal: The remote end hung up unexpectedly

賬戶沖突,下面有針對(duì)講解

9: 添加的ssh不起作用

ssh 的添加一定要在root用戶權(quán)限在添加偏竟,其他的權(quán)限不起作用煮落,切記!

四踊谋、經(jīng)驗(yàn)之談

1:git revert 和 git reset的區(qū)別

git reset 是把HEAD向后移動(dòng)了一下蝉仇,而git revert是HEAD繼續(xù)前進(jìn),
只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反殖蚕,能夠抵消要被revert的內(nèi)容轿衔。

這樣在版本回退的時(shí)候就比較的好,比如本地dev分支嫌褪,遠(yuǎn)程master分支呀枢,某一次的上線發(fā)現(xiàn)線上有重大的bug胚股,然后你reset本地代碼到前一個(gè)版本笼痛,在你git push 的時(shí)候git會(huì)報(bào)一個(gè)錯(cuò)誤:“說(shuō)你的本地分支版本低于遠(yuǎn)程master分支的版本,讓你先去pull 下來(lái)代碼琅拌,再提交”缨伊,這就不行了,你pull下來(lái)的代碼還是最新版有bug的代碼进宝,不進(jìn)行pull代碼刻坊,master分支又不讓你提交。解決這個(gè)問(wèn)題還得使用 revert 來(lái)進(jìn)行 “回退”操作党晋,為什么加引號(hào)呢谭胚,是因?yàn)檫@種回退是向前提交一次中和了上次的修改徐块,這就比較好了,這樣你revert之后相當(dāng)于指針向前移動(dòng)一次灾而,本地版本dev高于遠(yuǎn)程master版本胡控,這時(shí)你就可以git push 本地代碼到遠(yuǎn)程了。也就是說(shuō)旁趟,git reset 對(duì)未提交到(git push)遠(yuǎn)程的修改做回滾比較好昼激,如果要回滾本地,同時(shí)想遠(yuǎn)程也回滾锡搜,就要用到revert

五橙困、常用修改

1:避免每次提交都輸入用戶名和密碼

? 原因是使用了https方式 puh 在termail里邊 輸入 git remote -v 可以看到形如一下的返回結(jié)果

origin https://github.com/git/librarysystem.git(fetch)
origin https://github.com/git/librarysystem.git(push)

? 下面把它換成ssh方式的。

git remote rm origin
git remote add origin git@github.com:yu/demo.git
git push origin

2:添加忽略文件 .gitignore

? .gitignore配置文件用于配置不需要加入版本管理的文件耕餐。
? 配置語(yǔ)法: "/" 開頭表示目錄凡傅; "" 通配多個(gè)字符; "?" 通配單個(gè)字符 "[]" 包含單個(gè)字符的匹配列表肠缔; "!" 表示不忽略(跟蹤)匹配到的文件或目錄像捶;
? 說(shuō)明:git 對(duì)于 .ignore 配置文件是按行從上到下進(jìn)行規(guī)則匹配的,意味著如果前面的規(guī)則匹配的范圍更大桩砰,則后面的規(guī)則將不會(huì)生效拓春;
? 示例:(1) foder/
忽略目錄foder下的全部?jī)?nèi)容,不管是根目錄下的 /foder/ 目錄,還是某個(gè)子目錄 /list/foder/ 目錄亚隅,都會(huì)被忽略硼莽。
?    (2) /foder/* 說(shuō)明:忽略根目錄下的 /foder/ 目錄的全部?jī)?nèi)容;
?    (3) /*!.gitignore
? !/fw/bin/
? !/fw/sf/
? 說(shuō)明:忽略全部?jī)?nèi)容煮纵,但是不忽略 .gitignore文件,根目錄下的 /fw/bin/ 和 /fw/sf/
? 注意問(wèn)題: .gitignore文件只對(duì)還沒(méi)有加入版本管理的文件起作用懂鸵,如果之前已經(jīng)用git把要忽略的文件納入了版本庫(kù),就不起作用了行疏。

3:如何在同一臺(tái)電腦上使用兩個(gè)git賬戶

問(wèn)題描述:作為程序員有時(shí)候是有多個(gè)的項(xiàng)目匆光,而且每個(gè)項(xiàng)目git的用戶名,郵箱等酿联,都不一樣终息。就我來(lái)說(shuō),我在github上有一個(gè)賬號(hào)贞让,自己開發(fā)一些東西周崭,同時(shí)我參與的也有項(xiàng)目需要連接別人的github賬號(hào),在我電腦上只有一個(gè)git客戶端喳张,本地一個(gè)身份用戶续镇,開始的時(shí)候我自己開發(fā)是用ssh方式,參與的項(xiàng)目的是用https連接销部,但是https每次都需要輸入密碼摸航,非常不方便制跟,所以想轉(zhuǎn)成ssh連接,利用命令:

git remote rm origin
git remote add origin git@github.com:yu/demo.git
git push origin

轉(zhuǎn)換成功酱虎,不幸的是push的時(shí)候出錯(cuò)了:ERROR: Permission to user1 denied to
這種情況的解決方式是方法凫岖,使用本地托管多個(gè)個(gè)ssh的密鑰,不同的賬號(hào)是用不同的密匙逢净。

第一步:生成SSH Key

具體說(shuō)明:

$ ssh-keygen -t rsa -C "your_email@youremail.com"
  Creates a new ssh key using the provided email Generating public/private rsa key pair.
  #輸入將要保存的路徑哥放,我的默認(rèn)為當(dāng)前路徑(/c/Users/zhaoyafei/.ssh/id_rsa),但是不能使用默認(rèn)文件id_rsa,要添加新賬戶就要生起一個(gè)成新的好記的名字爹土,例如id_rsa_work
  Enter file in which to save the key (/c/Users/zhaoyafei/.ssh/id_rsa):
  #輸入回車后提示輸入一個(gè)類似于密碼的號(hào)甥雕,直接回車就行
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

第二步:識(shí)別新的私鑰

? 默認(rèn)SSH只會(huì)讀取id_rsa,所以為了讓SSH識(shí)別新的私鑰胀茵,需要將其添加到SSH agent

1 ssh-add ~/.ssh/id_rsa_work
2  //該命令如果報(bào)錯(cuò):Could not open a connection to your authentication agent.可執(zhí)行 ssh-agent bash 命令后再執(zhí)行ssh-add -l 看是否成功社露。

第三步:修改config文件

? 該文件用于配置私鑰對(duì)應(yīng)的服務(wù)器。內(nèi)容如下:

# Default github (默認(rèn)的)
      Host github.com
      HostName github.com
      User git
      IdentityFile ~/.ssh/id_rsa

# second user(work@gmail.com)
      Host github_work
      HostName github.com
      User git
      IdentityFile ~/.ssh/id_rsa_work

這樣配置琼娘,也就是使用hostname為github.com會(huì)根據(jù)用戶名的不同峭弟,去使用不用的private key脱拼。github上瞒瘸,也可以添加對(duì)應(yīng)的公鑰熄浓。其實(shí)這個(gè)配置是關(guān)于ssh的與git無(wú)關(guān),只是git使用的方式是ssh的方式赌蔑。Host可隨意俯在,方便自己記憶娃惯,后續(xù)在添加remote是還需要用到。

第四步:將SSH key輸入到GitHub網(wǎng)站中

? 將生成的id_rsa_work.pub輸入到GitHub網(wǎng)站中就可以了趾浅,輸入完成后單擊Add key后愕提,會(huì)看到git-tutorial已經(jīng)被添加進(jìn)去了。 配置完成后潮孽,在連接非默認(rèn)帳號(hào)的github倉(cāng)庫(kù)時(shí),遠(yuǎn)程庫(kù)的地址要對(duì)應(yīng)地做一些修改,比如現(xiàn)在添加abc帳號(hào)下的一個(gè)倉(cāng)庫(kù)test佛舱,則需要這樣添加:git remote add test git@github-work:abc/test.git #并非原來(lái)的git@github.com:abc/test.git 這樣每次連接都會(huì)使用id_rsa_abc與服務(wù)器進(jìn)行連接挨决。

注意:github根據(jù)配置文件的user.email來(lái)獲取github帳號(hào)顯示author信息脖祈,所以對(duì)于多帳號(hào)用戶一定要記得將user.email改為相應(yīng)的email(work@mail.com)。我遇到的問(wèn)題是本地單一用戶盖高,鏈接不同的github賬號(hào)眼虱,所以用戶配置可以采用全局配置。如果不同本地用戶(不同的身份標(biāo)識(shí)撞蚕,即需要本地使用不同的用戶名)过牙,那么git就不要使用有–global的配置,可以按照下面的方法:

# 1)設(shè)置局部的user.name和user.email
git config user.name "xxxxxx"
git config user.email "xxx@xxx.com"
# 2)設(shè)置全局的user.name和user.email
git config --global user.name "xxxxxx"
git config –-global user.email ""

六刀疙、題外話(相關(guān)概念)

Git - 版本控制工具

Git是一個(gè)開源的分布式版本控制系統(tǒng)扫倡,用以有效、高速的處理從很小到非常大的項(xiàng)目版本管理镊辕。Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件。Torvalds 開始著手開發(fā) Git 是為了作為一種過(guò)渡方案來(lái)替代 BitKeeper石咬,后者之前一直是 Linux 內(nèi)核開發(fā)人員在全球使用的主要源代碼工具卖哎。開放源碼社區(qū)中的有些人覺(jué)得 BitKeeper 的許可證并不適合開放源碼社區(qū)的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統(tǒng)焕窝。盡管最初 Git 的開發(fā)是為了輔助 Linux 內(nèi)核開發(fā)的過(guò)程维贺,但是我們已經(jīng)發(fā)現(xiàn)在很多其他自由軟件項(xiàng)目中也使用了 Git它掂。例如 最近就遷移到 Git 上來(lái)了,很多 Freedesktop 的項(xiàng)目也遷移到了 Git 上虐秋。

Github - 一個(gè)網(wǎng)站客给,提供給用戶空間創(chuàng)建git倉(cāng)儲(chǔ),保存用戶的一些數(shù)據(jù)文檔或者代碼等

作為開源代碼庫(kù)以及版本控制系統(tǒng)靶剑,Github目前擁有140多萬(wàn)開發(fā)者用戶桩引。隨著越來(lái)越多的應(yīng)用程序轉(zhuǎn)移到了云上,Github已經(jīng)成為了管理軟件開發(fā)以及發(fā)現(xiàn)已有代碼的首選方法休涤。如前所述笛辟,作為一個(gè)分布式的版本控制系統(tǒng),在Git中并不存在主庫(kù)這樣的概念捷凄,每一份復(fù)制出的庫(kù)都可以獨(dú)立使用围来,任何兩個(gè)庫(kù)之間的不一致之處都可以進(jìn)行合并。GitHub可以托管各種git庫(kù)桶错,并提供一個(gè)web界面胀蛮,但與其它像 SourceForge或Google Code這樣的服務(wù)不同,GitHub的獨(dú)特賣點(diǎn)在于從另外一個(gè)項(xiàng)目進(jìn)行分支的簡(jiǎn)易性退腥。為一個(gè)項(xiàng)目貢獻(xiàn)代碼非常簡(jiǎn)單:首先點(diǎn)擊項(xiàng)目站點(diǎn)的“fork”的按 鈕再榄,然后將代碼檢出并將修改加入到剛才分出的代碼庫(kù)中困鸥,最后通過(guò)內(nèi)建的“pull request”機(jī)制向項(xiàng)目負(fù)責(zé)人申請(qǐng)代碼合并。已經(jīng)有人將GitHub稱為代碼玩家的MySpace购城。

GitLab - 基于Git的項(xiàng)目管理軟件

GitLab 是一個(gè)用于倉(cāng)庫(kù)管理系統(tǒng)的開源項(xiàng)目虐译。使用Git作為代碼管理工具,并在此基礎(chǔ)上搭建起來(lái)的web服務(wù)侮攀。三者都是基于git的厢拭,可以說(shuō)是git的衍生品。

更多有趣內(nèi)容歡迎訪問(wèn)我的個(gè)人博客畦贸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末薄坏,一起剝皮案震驚了整個(gè)濱河市寨闹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沈善,老刑警劉巖椭蹄,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绳矩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡哨啃,警方通過(guò)查閱死者的電腦和手機(jī)写妥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門珍特,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事酬姆“履纾” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)桦卒。 經(jīng)常有香客問(wèn)我方灾,道長(zhǎng),這世上最難降的妖魔是什么裕偿? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任击费,我火速辦了婚禮,結(jié)果婚禮上谆棱,老公的妹妹穿的比我還像新娘圆仔。我一直安慰自己,他們只是感情好个从,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布嗦锐。 她就那樣靜靜地躺著沪曙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碳默。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天髓废,我揣著相機(jī)與錄音慌洪,去河邊找鬼柔逼。 笑死割岛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的维咸。 我是一名探鬼主播惠爽,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼婚肆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了用僧?” 一聲冷哼從身側(cè)響起赞咙,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎院仿,沒(méi)想到半個(gè)月后速和,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡排惨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年若贮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蠢沿。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舷蟀,死狀恐怖面哼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情匈子,我是刑警寧澤闯袒,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布政敢,位于F島的核電站,受9級(jí)特大地震影響唾那,放射性物質(zhì)發(fā)生泄漏褪尝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一昌罩、第九天 我趴在偏房一處隱蔽的房頂上張望灾馒。 院中可真熱鬧,春花似錦轨功、人聲如沸容达。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柒昏。三九已至,卻和暖如春氏涩,著一層夾襖步出監(jiān)牢的瞬間有梆,已是汗流浹背泥耀。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留首繁,地道東北人陨囊。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓蜘醋,卻偏偏與公主長(zhǎng)得像咏尝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胎食,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • Git有很多優(yōu)勢(shì)厕怜,其中之一就是遠(yuǎn)程操作非常簡(jiǎn)便蕾总。本文詳細(xì)介紹5個(gè)Git命令,它們的概念和用法递雀,理解了這些內(nèi)容蚀浆,你就...
    bondPang閱讀 1,328評(píng)論 0 6
  • Git 安裝和使用教程 Git介紹 分布式:Git版本控制系統(tǒng)是一個(gè)分布式的系統(tǒng),是用來(lái)保存工程源代碼歷史狀態(tài)的命...
    無(wú)名_ff98閱讀 1,627評(píng)論 0 3
  • Git教程 一赎败、Git簡(jiǎn)介 1.1. Git的誕生1.2.集中式的vs分布式 二蠢甲、安裝Git 三、創(chuàng)建版本庫(kù) 四搞糕、...
    曹淵說(shuō)創(chuàng)業(yè)閱讀 947評(píng)論 0 2
  • Add & Commit git init 初始化一個(gè) Git 倉(cāng)庫(kù)(repository)曼追,即把當(dāng)前所在目錄變成...
    冬絮閱讀 4,832評(píng)論 0 9
  • 2016.12.4 雖然14年開發(fā)第一個(gè)項(xiàng)目時(shí)就已經(jīng)接觸了git,當(dāng)時(shí)xcode已經(jīng)開始支持git礼殊,在github...
    張小明閱讀 402評(píng)論 1 0