如何建立本地共享的代碼托管倉庫

最近建了新項(xiàng)目田藐,為方便代碼托管,將代碼放在本地一臺(tái)公用mac盒子上進(jìn)行托管兑徘,方便其他組員共同管理代碼刚盈。
簡(jiǎn)單總結(jié)下使用,方便其他成員使用和之后任務(wù)交接調(diào)度:

//打開你的終端挂脑,首先遠(yuǎn)程連接公用的mac盒子藕漱,輸入盒子的密碼就可以連接
ssh git@172.16.16.153

如果連接失敗,說明你沒開啟遠(yuǎn)程的ssh 崭闲,可以參照Mac搭建Git服務(wù)器—開啟SSH

//通過下面兩個(gè)命令進(jìn)入指定文件夾中
ls  //查看當(dāng)前目錄下文件和文件夾
cd //進(jìn)入指定文件夾

如圖肋联,我進(jìn)入了名為repos的文件夾中

終端命令
//輸入如下命令,創(chuàng)建一個(gè).git文件刁俭,并初始化一個(gè)空的倉庫
mkdir  BaiShiTV.git
cd BaiShiTV.git
git --bare init

至此橄仍,完成了BaiShiTV.git初始化
接下來進(jìn)入本地項(xiàng)目,設(shè)置一下遠(yuǎn)程路徑

git remote add origin git@172.16.16.153:repos/BaiShiTV.git
git push origin master

注意:路徑最好不要包含中文字符牍戚。

本地項(xiàng)目設(shè)置遠(yuǎn)程路徑侮繁,并上傳

完成設(shè)置后,就可以通過xcode->source control進(jìn)行commit 如孝、push宪哩、pull,和創(chuàng)建分支第晰,merge分支等锁孟。

可以在終端輸入如下命令,下載遠(yuǎn)程代碼

git clone git@172.16.16.153:repos/BaiShiTV.git

怎么修改Git remote add時(shí)使用的遠(yuǎn)程倉庫

三種方式都可以茁瘦。

  • 修改命令
git remte origin set-url URL
  • 先刪后加
git remote rm origin 
git remote add origin git@github.com:Liutos/foobar.git 
  1. 直接修改config文件

git使用相關(guān)blog收藏

Git分支管理策略

跟多問題參考

git config --global user.name "xxx"
git config --global user.email "xxx@xxx.xxx"

git init ;在當(dāng)前目錄創(chuàng)建版本庫
git add xxx ; 添加xxx文件
git commit -m “comment” xxxx; 提交到倉庫

git status ;查看當(dāng)前的狀態(tài)及結(jié)果
git log ; 查看歷史記錄
git reflog ;查看每一次的log
git  --graph --pretty=oneline --abbrev-commit;按照一定的格式查看log

git reset --hard HEAD^; 恢復(fù)到當(dāng)前版本的上一版本
; HEAD指當(dāng)前版本 ^指上一版本

git add把文件添加到暫存區(qū)
git commit 提交更改品抽,把暫存區(qū)的所有修改提交到當(dāng)前分支
git checkout -- xxx; 讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)
git reset HEAD file可以把暫存區(qū)的修改撤銷掉,已經(jīng)add的文件腹躁,在commit之前可以恢復(fù)

刪除rm文件后桑包,使用git status查看狀態(tài),如果想恢復(fù)被刪除的文件可使用git checkout -- xxx纺非; 如果要真正的從版本庫里刪除哑了,請(qǐng)使用git rm xxx 并使用git commit提交文件
ssh-keygen -t rsa -C "xx@xx.xx"; 生成ssh的公鑰和私鑰

1.本地與遠(yuǎn)程庫的關(guān)聯(lián)及上傳
1.1 .創(chuàng)建一個(gè)新的版本庫赘方,然后與github上新建的repo關(guān)聯(lián)起來
create a new repository on the command line

echo "# learngit" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:wsljmlin/learngit.git
git push -u origin master ; 第一次上傳弱左,代碼從本地分支上傳到遠(yuǎn)程
由于遠(yuǎn)程庫是空的窄陡,我們第一次推送master分支時(shí),加上了-u參數(shù)拆火,Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支跳夭,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來
之后上傳使用git push origin master即可

1.2 把一個(gè)本地的版本庫與遠(yuǎn)程的關(guān)聯(lián)起來
push an existing repository from the command line

git remote add origin git@github.com:wsljmlin/learngit.git
git push -u origin master


從遠(yuǎn)程庫克隆一個(gè)本地庫
git clone git@githubxxxx/xx.git

分支管理
git checktout -b dev; 創(chuàng)建dev分支并切換過去
相當(dāng)于git branch dev && git checkout dev

git branch; 查看所有的分支以及當(dāng)前所片的分支
git merge dev; 把dev分支的工作成果合并到當(dāng)前分支上
其中fast-forward指合并是“快速模式”
git branch -d dev; 刪除dev分支

解決沖突
多是兩個(gè)分支的最新版本不一致在提交時(shí)引起的们镜,在提交后的文件帶<<<和>>>的币叹,直接修改再提交就可以解決沖突

合并分支時(shí),如果可能模狭,Git會(huì)用Fast forward模式颈抚,但這種模式下,刪除分支后嚼鹉,會(huì)丟掉分支信息.
如果要強(qiáng)制禁用Fast forward模式贩汉,Git就會(huì)在merge時(shí)生成一個(gè)新的commit,這樣锚赤,從分支歷史上就可以看出分支信息
git merge --no-ff -m "merge with no-ff" dev; 不使用快速模式merge匹舞,可以看到分支信息

分支管理基本原則:
1.1 master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來發(fā)布新版本线脚,平時(shí)不能在上面干活
1.2干活都在dev分支上赐稽,也就是說,dev分支是不穩(wěn)定的酒贬,到某個(gè)時(shí)候又憨,比如1.0版本發(fā)布時(shí),再把dev分支合并到master上锭吨,在master分支發(fā)布1.0版本
1.3 團(tuán)隊(duì)人都有自己的分支蠢莺,然后再合并到dev分支


bug分支
1.1 使用git stash儲(chǔ)存當(dāng)前工作區(qū)
1.2 新建bug分支進(jìn)行bug修改并合并到master分支
1.3 回到工作dev分支,使用git stash pop
git stash list零如; 查看緩存區(qū)中的內(nèi)容
1.4 你可以多次stash躏将,恢復(fù)的時(shí)候,先用git stash list查看考蕾,然后恢復(fù)指定的stash祸憋,用命令:git stash apply stash@{0}

git branch -D xx; 強(qiáng)行刪除xx分支

多人協(xié)作
git remote ; 查看遠(yuǎn)程庫的信息
git log origin/master
git log origin/dev --oneline
git remote -v; 查看遠(yuǎn)程庫更詳細(xì)的信息,顯示可推送和抓取的origin的地址
git push origin dev; 把本地的dev分支推送到遠(yuǎn)端(會(huì)在遠(yuǎn)端創(chuàng)建dev分支)
分支管理:
1. master分支是主分支肖卧,因此要時(shí)刻與遠(yuǎn)程同步蚯窥;
2. dev分支是開發(fā)分支,團(tuán)隊(duì)所有成員都需要在上面工作,所以也需要與遠(yuǎn)程同步拦赠;
3. bug分支只用于在本地修復(fù)bug巍沙,就沒必要推到遠(yuǎn)程了,除非老板要看看你每周到底修復(fù)了幾個(gè)bug荷鼠;
4.feature分支是否推到遠(yuǎn)程句携,取決于你是否和你的小伙伴合作在上面開發(fā)。

你的小伙伴要在dev分支上開發(fā)允乐,就必須創(chuàng)建遠(yuǎn)程origin的dev分支到本地矮嫉,于是他用這個(gè)命令創(chuàng)建本地dev分支:
$ git checkout -b dev origin/dev

若你與小伙伴的上傳遠(yuǎn)端有沖突,可以先使用git pull把最新的版本更新下來牍疏,再合并解決沖突
如果git pull也失敗了蠢笋,原因應(yīng)該是沒有指定本地dev分支與遠(yuǎn)程origin/dev分支的鏈接,根據(jù)提示麸澜,設(shè)置dev和origin/dev的鏈接:
$ git branch --set-upstream dev origin/dev
然后再git pull解決完再使用上傳
多人協(xié)作的工作模式通常是這樣:
1.1 首先挺尿,可以試圖用git push origin branch-name推送自己的修改奏黑;
1.2 如果推送失敗炊邦,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并熟史;
1.3 如果合并有沖突馁害,則解決沖突,并在本地提交蹂匹;
1.4 沒有沖突或者解決掉沖突后碘菜,再用git push origin branch-name推送就能成功!
1.5 如果git pull提示“no tracking information”限寞,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建忍啸,用命令git branch --set-upstream branch-name origin/branch-name。

標(biāo)簽管理
git tag; 查看當(dāng)前分支的所有tag
git tag v1.0; 設(shè)置當(dāng)前版本的tag
git tag v1.0 Id; 設(shè)置id為Id的版gie本的tag
git show v1.0; 查看tag的版本信息
git tag -a v0.1 -m "version 0.1 released" ID; 創(chuàng)建帶有說明的標(biāo)簽

git tag -d v0.1 ; 刪除tag
git push origin v1.0; 將tag上傳上遠(yuǎn)端
git push origin --tags履植;一次性將所有tag上傳到遠(yuǎn)端
刪除遠(yuǎn)程標(biāo)簽先刪除本地再從遠(yuǎn)程刪除:
git tag -d v0.9 && git push origin :refs/tags/v0.9; 注意空格

git配置
忽略文件的原則是:
1.1 忽略操作系統(tǒng)自動(dòng)生成的文件计雌,比如縮略圖等;
1.2 忽略編譯生成的中間文件玫霎、可執(zhí)行文件等凿滤,也就是如果一個(gè)文件是通過另一個(gè)文件自動(dòng)生成的,那自動(dòng)生成的文件就沒必要放進(jìn)版本庫庶近,比如Java編譯產(chǎn)生的.class文件翁脆;
1.3 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件
自己定義.gitignore文件

配置別名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
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"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鼻种,一起剝皮案震驚了整個(gè)濱河市反番,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖罢缸,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件校读,死亡現(xiàn)場(chǎng)離奇詭異司倚,居然都是意外死亡澡刹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門温治,熙熙樓的掌柜王于貴愁眉苦臉地迎上來养铸,“玉大人雁芙,你說我怎么就攤上這事〕” “怎么了兔甘?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鳞滨。 經(jīng)常有香客問我洞焙,道長,這世上最難降的妖魔是什么拯啦? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任澡匪,我火速辦了婚禮,結(jié)果婚禮上褒链,老公的妹妹穿的比我還像新娘唁情。我一直安慰自己,他們只是感情好甫匹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布甸鸟。 她就那樣靜靜地躺著,像睡著了一般兵迅。 火紅的嫁衣襯著肌膚如雪抢韭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天恍箭,我揣著相機(jī)與錄音刻恭,去河邊找鬼。 笑死季惯,一個(gè)胖子當(dāng)著我的面吹牛吠各,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播勉抓,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贾漏,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了藕筋?” 一聲冷哼從身側(cè)響起纵散,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后伍掀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掰茶,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年蜜笤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了濒蒋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡把兔,死狀恐怖沪伙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情县好,我是刑警寧澤围橡,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站缕贡,受9級(jí)特大地震影響翁授,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晾咪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一收擦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禀酱,春花似錦炬守、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酣藻。三九已至曹洽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辽剧,已是汗流浹背送淆。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怕轿,地道東北人偷崩。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像撞羽,于是被迫代替她去往敵國和親阐斜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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