Github上傳項目步驟和常見問題

1.在GitHub上建立項目

登錄GitHub后队橙,你可以在右邊靠中那里找到一個按鈕“New Repository”,點擊過后,填入項目名稱傲茄、說明和網(wǎng)址過后就可以創(chuàng)建了,然后會出現(xiàn)一個提示頁面沮榜,記下類似git@github.com:XXX/XXX.git的地址盘榨,這個就是你這個項目的地址了。

2.配置Git以及上傳代碼

安裝Git成功后蟆融,如果是Windows下草巡,選擇Git Bash,在命令行中完成一切型酥,可能開始有點麻煩山憨,不過就那幾條命令行,用幾次就記住啦弥喉。首先初始設(shè)置Git:

1 git config --global user.name "Your Real Name"
2 git config --global user.email you@email.address

然后開始進行最麻煩的一步了郁竟,你需要上傳文件到GitHub的Git系統(tǒng)上,得需要一個SSH密匙來認證档桃,下面就開始生成密鑰和提交密鑰枪孩。打開Git Bash,創(chuàng)建SSH key:

1 ssh-keygen -C 'your@email.address' -t rsa

然后要你輸入SSH密匙的存放位置,可以不管藻肄,直接回車使用默認路徑蔑舞。再輸入你想要的密碼,SSH key就生成了∴谕停現(xiàn)在你需要將這個Key提交到GitHub攻询,首先打開Key保存的位置,里面會有三個文件州弟,找到id_rsa.pub钧栖,用文本編輯器打開低零,復(fù)制里面的全部字符。到GitHub拯杠,在右上方工具欄里找到Account Settings掏婶。在這個頁面上有一個SSH Public Keys標簽,選擇Add another public key潭陪。Title可以隨便填一個雄妥,Key就粘貼剛才的字符,提交依溯。

完成這些工作后老厌,就可以上傳自己的代碼了。找到自己要分享上傳的代碼文件夾黎炉,右擊選擇Git Bash枝秤,或者在Git Bash中進入這個文件夾。建立一個倉庫:

1 git init

選擇要添加進倉庫的文件:

1 git add .

一般如果你想分享這個文件夾里的所有代碼慷嗜,就在 add后面加“.”淀弹,上面的例子就是這樣,如果傳指定的庆械,只需要把“.”改為文件名即可垦页,現(xiàn)在只是選擇了要加入倉庫的文件,下面才是添加進入倉庫:

1 git commit -m 'Test'

-m后面跟一個參數(shù)干奢,表示說明,將代碼提交到GitHub后盏袄,將會在代碼文件信息上顯示這個說明忿峻,如下圖標記的地方。

搞了這么久辕羽,現(xiàn)在才開始把本地倉庫上傳到GitHub了逛尚,下面兩行命令搞定問題:

首先需要pull下代碼,才能push上傳成功

(git pull origin master)

繼續(xù)下面的操作

1 git remote add origin git@github.com:XXX/XXX.git

2 git pull origin master

3 git push -u origin master

這個git@github.com:XXX/XXX.git就是上面創(chuàng)建項目是生成的地址〉笤福現(xiàn)在打開你的項目網(wǎng)址绰寞,你就可以發(fā)現(xiàn)你的代碼已經(jīng)展示出來了。如果你要更新代碼的話铣口,就重復(fù)上面的吧滤钱。

如果提交了敏感信息,比如代碼中設(shè)置的自己的密碼什么的忘刪除就上傳上去了怎么辦脑题?重新修改過后上傳依然有歷史記錄件缸,而使用Git刪除歷史記錄貌似很麻煩,于是就采用刪除項目吧叔遂,刪除了再重新上傳他炊。刪除項目需要在GitHub網(wǎng)站上右上方找到admin按鈕争剿,進去后右邊最下面有個刪除的按鈕,這樣就可以刪除了痊末。

二蚕苇、 Git 常用命令

  1. 遠程倉庫相關(guān)命令

檢出倉庫: $ git clone git://github.com/jquery/jquery.git

查看遠程倉庫:$ git remote -v

添加遠程倉庫:$ git remote add [name] [url]

刪除遠程倉庫:$ git remote rm [name]

修改遠程倉庫:$ git remote set-url --push [name] [newUrl]

拉取遠程倉庫:$ git pull [remoteName] [localBranchName]

推送遠程倉庫:$ git push [remoteName] [localBranchName]

*如果想把本地的某個分支test提交到遠程倉庫,并作為遠程倉庫的master分支凿叠,或者作為另外一個名叫test的分支涩笤,如下:

$git push origin test:master // 提交本地test分支作為遠程的master分支

$git push origin test:test // 提交本地test分支作為遠程的test分支

2)分支(branch)操作相關(guān)命令

查看本地分支:$ git branch

查看遠程分支:$ git branch -r

創(chuàng)建本地分支:$ git branch [name] ----注意新分支創(chuàng)建后不會自動切換為當前分支

切換分支:$ git checkout [name]

創(chuàng)建新分支并立即切換到新分支:$ git checkout -b [name]

刪除分支:$ git branch -d [name] ---- -d選項只能刪除已經(jīng)參與了合并的分支,對于未有合并的分支是無法刪除的幔嫂。如果想強制刪除一個分支辆它,可以使用-D選項

合并分支:$ git merge [name] ----將名稱為[name]的分支與當前分支合并

創(chuàng)建遠程分支(本地分支push到遠程):$ git push origin [name]

刪除遠程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name]

*創(chuàng)建空的分支:(執(zhí)行命令之前記得先提交你當前分支的修改,否則會被強制刪干凈沒得后悔)

$git symbolic-ref HEAD refs/heads/[name]

$rm .git/index

$git clean -fdx

3)版本(tag)操作相關(guān)命令

查看版本:$ git tag

創(chuàng)建版本:$ git tag [name]

刪除版本:$ git tag -d [name]

查看遠程版本:$ git tag -r

創(chuàng)建遠程版本(本地版本push到遠程):$ git push origin [name]

刪除遠程版本:$ git push origin :refs/tags/[name]

合并遠程倉庫的tag到本地:$ git pull origin --tags

上傳本地tag到遠程倉庫:$ git push origin --tags

創(chuàng)建帶注釋的tag:$ git tag -a [name] -m 'yourMessage'

  1. 子模塊(submodule)相關(guān)操作命令

添加子模塊:$ git submodule add [url] [path]

如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs

初始化子模塊:$ git submodule init ----只在首次檢出倉庫時運行一次就行

更新子模塊:$ git submodule update ----每次更新或切換分支后都需要運行一下

刪除子模塊:(分4步走哦)

  1. $ git rm --cached [path]

  2. 編輯“.gitmodules”文件履恩,將子模塊的相關(guān)配置節(jié)點刪除掉

  3. 編輯“ .git/config”文件锰茉,將子模塊的相關(guān)配置節(jié)點刪除掉

  4. 手動刪除子模塊殘留的目錄

5)忽略一些文件容达、文件夾不提交

在倉庫根目錄下創(chuàng)建名稱為“.gitignore”的文件巩搏,寫入不需要的文件夾名或文件课梳,每個元素占一行即可侯嘀,如

target

bin

*.db

三至耻、 Git 命令詳解

現(xiàn)在我們有了本地和遠程的版本庫脑融,讓我們來試著用用Git的基本命令:

git pull:從其他的版本庫(既可以是遠程的也可以是本地的)將代碼更新到本地宫蛆,例如:'git pull origin master'就是將origin這個版本庫的代碼更新到本地的master主枝茸俭,該功能類似于SVN的update

git add:是將當前更改或者新增的文件加入到Git的索引中全谤,加入到Git的索引中就表示記入了版本歷史中肤晓,這也是提交之前所需要執(zhí)行的一步,例如'git add app/model/user.rb'就會增加app/model/user.rb文件到Git的索引中认然,該功能類似于SVN的add

git rm:從當前的工作空間中和索引中刪除文件补憾,例如'git rm app/model/user.rb',該功能類似于SVN的rm卷员、del

git commit:提交當前工作空間的修改內(nèi)容盈匾,類似于SVN的commit命令,例如'git commit -m story #3, add user model'毕骡,提交的時候必須用-m來輸入一條提交信息削饵,該功能類似于SVN的commit

git push:將本地commit的代碼更新到遠程版本庫中,例如'git push origin'就會將本地的代碼更新到名為orgin的遠程版本庫中

git log:查看歷史日志未巫,該功能類似于SVN的log

git revert:還原一個版本的修改窿撬,必須提供一個具體的Git版本號,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20'叙凡,Git的版本號都是生成的一個哈希值

上面的命令幾乎都是每個版本控制工具所公有的尤仍,下面就開始嘗試一下Git獨有的一些命令:

git branch:對分支的增、刪狭姨、查等操作宰啦,例如'git branch new_branch'會從當前的工作版本創(chuàng)建一個叫做new_branch的新分支苏遥,'git branch -D new_branch'就會強制刪除叫做new_branch的分支,'git branch'就會列出本地所有的分支

git checkout:Git的checkout有兩個作用赡模,其一是在不同的branch之間進行切換田炭,例如'git checkout new_branch'就會切換到new_branch的分支上去;另一個功能是還原代碼的作用漓柑,例如'git checkout app/model/user.rb'就會將user.rb文件從上一個已提交的版本中更新回來教硫,未提交的內(nèi)容全部會回滾

git rebase:用下面兩幅圖解釋會比較清楚一些,rebase命令執(zhí)行后辆布,實際上是將分支點從C移到了G瞬矩,這樣分支也就具有了從C到G的功能

git reset:將當前的工作目錄完全回滾到指定的版本號,假設(shè)如下圖锋玲,我們有A-G五次提交的版本景用,其中C的版本號是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20(git log可以得到),我們執(zhí)行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么結(jié)果就只剩下了A-C三個提交的版本

git stash:將當前未提交的工作存入Git工作棧中惭蹂,時機成熟的時候再應(yīng)用回來伞插,這里暫時提一下這個命令的用法,后面在技巧篇會重點講解

git config:利用這個命令可以新增盾碗、更改Git的各種設(shè)置媚污,例如'git config branch.master.remote origin'就將master的遠程版本庫設(shè)置為別名叫做origin版本庫,后面在技巧篇會利用這個命令個性化設(shè)置你的Git廷雅,為你打造獨一無二的 Git

git tag:可以將某個具體的版本打上一個標簽耗美,這樣你就不需要記憶復(fù)雜的版本號哈希值了,例如你可以使用'git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20'來標記這個被你還原的版本航缀,那么以后你想查看該版本時幽歼,就可以使用 revert_version標簽名,而不是哈希值了

Git 之所以能夠提供方便的本地分支等特性谬盐,是與它的文件存儲機制有關(guān)的。Git存儲版本控制信息時使用它自己定義的一套文件系統(tǒng)存儲機制诚些,在代碼根目錄下有一個.git文件夾飞傀,會有如下這樣的目錄結(jié)構(gòu):

有幾個比較重要的文件和目錄需要解釋一下:HEAD文件存放根節(jié)點的信息,其實目錄結(jié)構(gòu)就表示一個樹型結(jié)構(gòu)诬烹,Git采用這種樹形結(jié)構(gòu)來存儲版本信息砸烦,那么HEAD就表示根;refs目錄存儲了你在當前版本控制目錄下的各種不同引用(引用指的是你本地和遠程所用到的各個樹分支的信息)绞吁,它有heads幢痘、remotes、stash家破、tags四個子目錄颜说,分別存儲對不同的根购岗、遠程版本庫、Git棧和標簽的四種引用门粪,你可以通過命令'git show-ref'更清晰地查看引用信息喊积;logs目錄根據(jù)不同的引用存儲了日志信息。因此玄妈,Git只需要代碼根目錄下的這一個.git目錄就可以記錄完整的版本控制信息乾吻,而不是像SVN那樣根目錄和子目錄下都有.svn目錄。那么下面就來看一下Git與SVN的區(qū)別吧

<pre class="best-text mb-10" style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; color: rgb(57, 57, 57); font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(250, 247, 239);">一些可能遇到的問題解決:

如果輸入$ git remote add origin git@github.com:djqiang(github帳號名)/gitdemo(項目名).git
提示出錯信息:fatal: remote origin already exists.
解決辦法如下:
1拟蜻、先輸入$ git remote rm origin
2绎签、再輸入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不會報錯了!
3酝锅、如果輸入$ git remote rm origin 還是報錯的話诡必,error: Could not remove config section ‘remote.origin’. 我們需要修改gitconfig文件的內(nèi)容
4、找到你的github的安裝路徑屈张,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5擒权、找到一個名為gitconfig的文件,打開它把里面的[remote "origin"]那一行刪掉就好了阁谆!

如果輸入$ ssh -T git@github.com
出現(xiàn)錯誤提示:Permission denied (publickey).因為新生成的key不能加入ssh就會導(dǎo)致連接不上github碳抄。
解決辦法如下:
1、先輸入$ ssh-agent场绿,再輸入$ ssh-add ~/.ssh/id_key剖效,這樣就可以了。
2焰盗、如果還是不行的話璧尸,輸入ssh-add ~/.ssh/id_key 命令后出現(xiàn)報錯Could not open a connection to your authentication agent.解決方法是key用Git Gui的ssh工具生成,這樣生成的時候key就直接保存在ssh中了熬拒,不需要再ssh-add命令加入了爷光,其它的user,token等配置都用命令行來做澎粟。
3蛀序、最好檢查一下在你復(fù)制id_rsa.pub文件的內(nèi)容時有沒有產(chǎn)生多余的空格或空行,有些編輯器會幫你添加這些的活烙。

如果輸入$ git push origin master
提示出錯信息:error:failed to push som refs to …….
解決辦法如下:
1徐裸、先輸入$ git pull origin master //先把遠程服務(wù)器github上面的文件拉下來
2、再輸入$ git push origin master
3啸盏、如果出現(xiàn)報錯 fatal: Couldn’t find remote ref master或者fatal: ‘origin’ does not appear to be a git repository以及fatal: Could not read from remote repository.
4重贺、則需要重新輸入$ git remote add origingit@github.com:djqiang/gitdemo.git
使用git在本地創(chuàng)建一個項目的過程
$ makdir ~/hello-world //創(chuàng)建一個項目hello-world
$ cd ~/hello-world //打開這個項目
$ git init //初始化
$ touch README
$ git add README //更新README文件
$ git commit -m ‘first commit’ //提交更新,并注釋信息“first commit”
$ git remote add origin git@github.com:defnngj/hello-world.git //連接遠程github項目
$ git push -u origin master //將本地項目更新到github項目上去</pre>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市气笙,隨后出現(xiàn)的幾起案子次企,更是在濱河造成了極大的恐慌,老刑警劉巖健民,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抒巢,死亡現(xiàn)場離奇詭異,居然都是意外死亡秉犹,警方通過查閱死者的電腦和手機蛉谜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崇堵,“玉大人型诚,你說我怎么就攤上這事≡Ю停” “怎么了狰贯?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赏廓。 經(jīng)常有香客問我涵紊,道長,這世上最難降的妖魔是什么幔摸? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任摸柄,我火速辦了婚禮,結(jié)果婚禮上既忆,老公的妹妹穿的比我還像新娘驱负。我一直安慰自己,他們只是感情好患雇,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布跃脊。 她就那樣靜靜地躺著,像睡著了一般苛吱。 火紅的嫁衣襯著肌膚如雪酪术。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天翠储,我揣著相機與錄音绘雁,去河邊找鬼。 笑死彰亥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的衰齐。 我是一名探鬼主播任斋,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了废酷?” 一聲冷哼從身側(cè)響起瘟檩,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澈蟆,沒想到半個月后墨辛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡趴俘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年睹簇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寥闪。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡太惠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疲憋,到底是詐尸還是另有隱情凿渊,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布缚柳,位于F島的核電站埃脏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏秋忙。R本人自食惡果不足惜彩掐,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翰绊。 院中可真熱鬧佩谷,春花似錦、人聲如沸监嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裁奇。三九已至桐猬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刽肠,已是汗流浹背溃肪。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留音五,地道東北人惫撰。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像躺涝,于是被迫代替她去往敵國和親厨钻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

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