github使用

一猖腕。fork項(xiàng)目以及保持同步


1拆祈,首先f(wàn)ork 別人的一個(gè)項(xiàng)目:

fork

2,在自己的賬戶(hù)下找到剛才的項(xiàng)目倘感,復(fù)制自己項(xiàng)目地址

github 指針HEAD

3放坏,clone到本地:

git clone


4,如果項(xiàng)目有依賴(lài)包老玛,還要安裝依賴(lài)包淤年。一般 bower install 即可(有bower.json文件時(shí))。

5蜡豹,fork 之后保持同步(windows環(huán)境)

? ? (1)git remote -v? ;

這個(gè)命令用于查看所有遠(yuǎn)程庫(kù)(remote repo)的遠(yuǎn)程url, 如果只輸入git remote就是列出所有遠(yuǎn)程庫(kù)麸粮。

origin 自己github上的項(xiàng)目

(2)發(fā)現(xiàn)沒(méi)有原作者的項(xiàng)目地址,git命令:?

git remote add upstream ?原作者項(xiàng)目url镜廉;

git remote add upstream

這個(gè)命令用于添加原作者remote repo(遠(yuǎn)程庫(kù)), 該操作只需操作一次即可 這個(gè)時(shí)候輸入git remote -v,會(huì)得到結(jié)果:

(3)可以用git status命令查看當(dāng)前改動(dòng)弄诲;

(4)保持同步:

git fetch('拿來(lái)、取來(lái)') upstream('上游娇唯、上行')?

git fetch upstream

git checkout('檢驗(yàn)齐遵、檢出') master

git checkout master

接下來(lái)就是合并這兩個(gè)分支寂玲,將原作者項(xiàng)目的修改同步到自己這里(注意還是指本地項(xiàng)目,不是自己Github空間里的項(xiàng)目)梗摇。

git merge upstream/master

本地同步完成后拓哟,同步到自己的github上:

git push origin(‘起源、原點(diǎn)’) master

至此, origin的master branch已經(jīng)于原作者項(xiàng)目同步了伶授。

username and ?password
up-to-date

保持同步的小結(jié):

保持同步可以用四個(gè)命令彰檬,按順序是:
git checkout master , ?git fetch upstream, git rebase, ?git push。


NOTE:


更新working branch(當(dāng)前工作的branch)


谎砾。之所以需要這么做, 是因?yàn)? 假設(shè)你開(kāi)發(fā)花了三天時(shí)間. 而三天之內(nèi)upstream上面更新過(guò). 然后, 如果你在這個(gè)時(shí)候提交PR, 理論上是不能merge的. Git會(huì)報(bào)錯(cuò), 因?yàn)樗l(fā)現(xiàn)你開(kāi)始工作的節(jié)點(diǎn)與upstream當(dāng)前的HEAD指針不同了.

逢倍。當(dāng)然, 如果這三天upstream上沒(méi)有任何更新, 你的PR就可以隨時(shí)merge, 因?yàn)槟愕拇a是基于未改動(dòng)的upstream master寫(xiě)的, 所以不會(huì)出現(xiàn)conflicts

。更新working branch, 相當(dāng)于: 把upstream master上的改動(dòng)應(yīng)用到當(dāng)前的working branch. 結(jié)果就是, 可以假裝你的working branch是基于改動(dòng)后的upstream master寫(xiě)的

景图。git checkout master, 然后git fetch upstream, 然后git merge 或git rebase

? ? ?..首先切換到master branch (origin的master branch)是獲取upstream上面所有的更新, 并獲取HEAD指針较雕。
? ? ?..理論上, git merge和git rebase 此時(shí) 都可以更新origin的master branch. 強(qiáng)烈推薦使用git rebase master. 原因見(jiàn)下文

。git checkout [workingBranch], 然后git merge master或git rebase master

? ? ?..這兩個(gè)命令都是把master branch(當(dāng)然, 是origin上的master branch)更新的內(nèi)容應(yīng)用到working branch上面.
? ? ?..區(qū)別在于, 使用git merge, 會(huì)讓你當(dāng)前在working branch上面已經(jīng)做的更改與upstream master的更改在timeline上出現(xiàn)分支. 而使用rebase, 會(huì)把你的更改加到upstream master更改的后面, 結(jié)果是整體時(shí)間軸呈線性的, 沒(méi)有分岔挚币。
? ? ?..也可以使用git rebase -i master來(lái)實(shí)現(xiàn)交互式rebase, 這一步驟一般是在提交PR之前做, 允許用戶(hù)squash commit (合并commit,把之前的幾次commit合為一個(gè))
? ? ?..如果自己當(dāng)前的branch有過(guò)改動(dòng)也沒(méi)關(guān)系, 在rebase的過(guò)程中, 會(huì)讓你處理conflicts, 處理好之后用git add [files]提交改動(dòng)后的特定文件或者用git add .提交全部文件,即可完成rebase

至此, origin上的working branch已經(jīng)與原作者沒(méi)有沖突, 可以隨時(shí)merge亮蒋。


關(guān)于push


。首先配置一下全局環(huán)境, git config --global push.default simple

妆毕。第一次push到some branch的時(shí)候用一次git push -u origin [someBranch] (效果等同于git push --set-upstream origin [someBranch]). 以后再要push到這個(gè)branch只需要git push就可以了, 前提是, 你在這個(gè)branch上.


關(guān)于branch


慎玖。本地刪除branch是git branch -d xxx.
? ? ? ?..如果有未提交的內(nèi)容, 想強(qiáng)行刪除branch, 就是git branch -D xxx. 謹(jǐn)慎使用, 這樣會(huì)讓你的未提交內(nèi)容丟失

。如果想在Github里刪除名為dev的branch, 命令是git push origin :dev


Commit


笛粘。git commit是把當(dāng)前的改動(dòng)放到Staging area(一個(gè)緩沖區(qū))

趁怔。記得使用git commit -m "[commitMessage]"

Commit Message的寫(xiě)法:

? ? ? ⌒角埃基本格式: 類(lèi)型: [主題]

? ? ? ?润努。類(lèi)型分為如下幾種:

feat: Feature的縮寫(xiě), 新的功能或特性

fix: bug的修復(fù)

docs: 文件修改, 比如修改應(yīng)用了ngDoc的項(xiàng)目的ngDoc內(nèi)容

style: 格式修改. 比如改變縮進(jìn), 空格, 刪除多余的空行, 補(bǔ)上漏掉的分號(hào). 總之, 就是不影響代碼含義和功能的修改

refractor: 代碼重構(gòu). 一些不算修復(fù)bug也沒(méi)有加入新功能的代碼修改

perf: Performance的縮寫(xiě), 提升代碼性能

test: 測(cè)試文件的修改

chore: 其他的小改動(dòng). 一般為僅僅一兩行的改動(dòng), 或者連續(xù)幾次提交的小改動(dòng)屬于這種

? ? ? ?。作用域:

這個(gè)參數(shù)用來(lái)描述這次改動(dòng)發(fā)生的位置.
比如更改了css文件, 就可以把"css"放在這里. 比如更改了JS文件, 可以把"js"放在這里
對(duì)于多個(gè)作用域, 可以用逗號(hào)分隔. 比如"html, png"

? ? ? ?示括。主題:

簡(jiǎn)略描述改動(dòng)了什么
用英文寫(xiě), 用現(xiàn)在時(shí), 不要用過(guò)去時(shí). 最開(kāi)頭不需要大寫(xiě)
中間可以有逗號(hào), 但結(jié)尾不要有句號(hào)
細(xì)節(jié)寫(xiě)在PR的詳細(xì)內(nèi)容里, 不需要寫(xiě)在這里

? ? ? ?铺浇。示例

改動(dòng)1: 在JS文件里修復(fù)了一個(gè)可能會(huì)使HTML不顯示結(jié)果的bug
git commit -m "fix(js) fix a bug that may cause rendering issue of HTML"

改動(dòng)2: 在HTML里面加入了處理瀏覽器兼容性的代碼
git commit -m "feat(html) add code for browser compatibility"

改動(dòng)3: 優(yōu)化了AngularJS名為mainSvc的Service異步發(fā)送HTTP request性能
git commit -m "perf($service) enhance async perf of mainSvc sending HTTP request"

Pull Request

標(biāo)題采用默認(rèn)設(shè)置即可. 默認(rèn)為commit (或squash之后commit) 的commit message。詳細(xì)內(nèi)容欄:

在第一行加上引號(hào)內(nèi)的內(nèi)容, "- [ ] LGTM". 別人review你的代碼之后就在這兒給你打個(gè)勾, lgtm是look good to me的縮寫(xiě).

Review別人代碼的時(shí)候, 如果覺(jué)得沒(méi)問(wèn)題, 打鉤之后在底下評(píng)論"LGTM"

支持Markdown和Emoji

查看別人的PR

review別人PR的時(shí)候, 建議下載到本地, 查看后再確定是否通過(guò)

項(xiàng)目路徑中找到.git/config, 在upstream底下加上: fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*

配置好之后, git fetch upstream

在github上找到你想要review的PR的編號(hào), 如果是3, 就在本地, git checkout pr/3, 然后就可以看到改動(dòng)之后的代碼了

Log與Reflog

git log用來(lái)查詢(xún)r(jià)epo的版本變動(dòng)情況. 如果有需要的話, 可以通過(guò)commit ref來(lái)恢復(fù)

建議使用git log --oneline --decorate --graph作為查詢(xún)命令

git reflog用來(lái)查詢(xún)本地的操作歷史. 確切一點(diǎn)說(shuō), 是查詢(xún)HEAD的變化情況. 每一次HEAD變動(dòng), 都會(huì)記錄在reflog里


二垛膝。Creating Project Pages manually

原文:https://help.github.com/articles/creating-project-pages-manually/#make-a-fresh-clone

1鳍侣,Make a fresh clone

$ git clone github.com/user/repository.git ? ? (# clone our repository)

git clone?

2,Create a gh-pages branch

$ cd repository

$ git checkout --orphan('孤兒‘) gh-pages?
(# Creates our branch, without any parents (it's an orphan!))
(Switched to a new branch 'gh-pages')

$ git rm -rf . ?
(# Remove all files from the old working tree)
(rm '.gitignore' ?···)

git checkout --orphan gh-pages
git rm -rf .

3吼拥,Add content and push

Now you have an empty working directory. You can create some content in this branch and push it to GitHub. For example:

$ echo "My Page">index.html

$ git add index.html

$ git commit -a -m "First pages commit"

$ git push origin gh-pages

4倚聚,Load your new GitHub Pages site

After your push to thegh-pagesbranch, your Project Pages site will be available at 'http(s)://<username>.github.io/<projectname>' .

二(續(xù))Creating Pages with the automatic generator

https://help.github.com/articles/creating-pages-with-the-automatic-generator/


三。github提供的提示


1扔罪,create a new repository on the command line

echo "# git-testing" >> README.md
git initgit add README.md
git commit -m "first commit"
git remote add origin https://github.com/kingrychen/git-testing.git(示例)
git push -u origin master

2秉沼,push an existing repository from the command line

git remote add origin https://github.com/kingrychen/git-testing.gitgit
push -u origin master

3,import code from another repository

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唬复,隨后出現(xiàn)的幾起案子矗积,更是在濱河造成了極大的恐慌,老刑警劉巖敞咧,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棘捣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡休建,警方通過(guò)查閱死者的電腦和手機(jī)乍恐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)测砂,“玉大人茵烈,你說(shuō)我怎么就攤上這事∑鲂” “怎么了呜投?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)存璃。 經(jīng)常有香客問(wèn)我仑荐,道長(zhǎng),這世上最難降的妖魔是什么纵东? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任粘招,我火速辦了婚禮,結(jié)果婚禮上偎球,老公的妹妹穿的比我還像新娘洒扎。我一直安慰自己,他們只是感情好甜橱,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布逊笆。 她就那樣靜靜地躺著栈戳,像睡著了一般岂傲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上子檀,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天镊掖,我揣著相機(jī)與錄音,去河邊找鬼褂痰。 笑死亩进,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缩歪。 我是一名探鬼主播归薛,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了主籍?” 一聲冷哼從身側(cè)響起习贫,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎千元,沒(méi)想到半個(gè)月后苫昌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幸海,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年祟身,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片物独。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袜硫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挡篓,到底是詐尸還是另有隱情父款,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布瞻凤,位于F島的核電站憨攒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阀参。R本人自食惡果不足惜肝集,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛛壳。 院中可真熱鬧杏瞻,春花似錦、人聲如沸衙荐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忧吟。三九已至砌函,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溜族,已是汗流浹背讹俊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煌抒,地道東北人仍劈。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像寡壮,于是被迫代替她去往敵國(guó)和親贩疙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子讹弯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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

  • 本文作者陳云峰,轉(zhuǎn)載請(qǐng)注明这溅。 這篇文章記錄個(gè)人常用的一些命令闸婴,和記不住的一些命令,轉(zhuǎn)載了并不斷更新芍躏。 Git官網(wǎng) ...
    陳云峰閱讀 2,805評(píng)論 0 24
  • Lesson 3: Using GitHub to Collaborate 3.1 Creating a GitH...
    赤樂(lè)君閱讀 6,038評(píng)論 3 11
  • 標(biāo)簽 :github 引言 本文主要講解Git的相關(guān)命令和基本用法邪乍,是根據(jù)Git常用命令學(xué)習(xí)手冊(cè)這篇博文進(jìn)行整理的...
    種花家的一員閱讀 1,269評(píng)論 0 0
  • 1. Git與Github的使用 任務(wù)目標(biāo): 如何在git新建項(xiàng)目 如何獲取ssh key 克隆項(xiàng)目 如何往Git...
    andreaxiang閱讀 594評(píng)論 0 1
  • 圖片發(fā)自簡(jiǎn)書(shū)App厚藍(lán)色的窗簾擋住灼人的斜陽(yáng),耳朵卻收聽(tīng)蟈鳴对竣,立夏中庇楞,一候便是螻蟈鳴,細(xì)思來(lái)否纬,17年吕晌,用不斷緩升的...
    山鹛閱讀 464評(píng)論 2 5