linux下git的安裝和使用

linux下git的安裝和使用

最近在使用github庶灿,感覺不錯往踢。在windows下菲语,可使用github提供的windows客戶端(http://windows.github.com/)山上。很傻瓜佩憾,很方便干花。如何使用抡驼?詳見:http://www.cr173.com/html/15618_1.html致盟。(有圖是王道)最近發(fā)現(xiàn),在公司電腦上安裝github的windows客戶端時杯道,可能由于公司網(wǎng)絡(luò)限速和限流量限得太死党巾,怎么也安裝不成功齿拂。在家的github windows的圖形客戶端的同步也經(jīng)常出問題。沒辦法叹侄,也只能通過文本界面來連接github了趾代。如果已在windows系統(tǒng)中成功安裝github的客戶端,則除了可使用圖形客戶端外飘哨,還可使用github bash這個文本客戶端芽隆。在我電腦上,當圖形客戶端同步出現(xiàn)問題時腕扶,文客戶端還是能同步成功的。如果安裝不上github的客戶端代虾,還可安裝其他的git bash來連接github学辱,如msysgit (http://msysgit.github.io/)等。因為以上軟件都是以git為基礎(chǔ)的抬吟,所以語法與linux使用的命令相同。

在linux下我僅使用了文本界面统抬,所以安裝了個文本形式的git客戶來連接github火本。

1. 安裝git

我用的是centos系統(tǒng),在使用yum install git時聪建,系統(tǒng)提示沒有找到git包钙畔。所以,僅能通過以下方法來安裝git金麸。方法詳見:http://www.cnblogs.com/Neddy/archive/2011/02/28/1967548.html擎析。以上方法中有一個問題:方法中給出的git的下載源http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz似乎無效了,于是挥下,我在網(wǎng)上的這里下載了個git的最新安裝包揍魂,安裝到了centos上。Linux下git的官方網(wǎng)址為:http://git-scm.com/download棚瘟,可能因為我網(wǎng)慢打不開现斋,不知道讀者您那里如何。如果打不開偎蘸,可以在網(wǎng)上其他地方找找安裝包步责,應(yīng)該可以找到的。

2. 使用git連接github

使用git連接github時禀苦,需要將linux下產(chǎn)生的一個ssh公鑰放到github上蔓肯。具體步驟詳見:http://blog.sina.com.cn/s/blog_6b706e15010199p1.html。主要命令有:

1

ssh-keygen -t rsa -C"mail@mail.com"

然后系統(tǒng)提示輸入文件保存位置等信息振乏,連續(xù)敲三次回車即可蔗包,生成的SSH key文件保存在中~/.ssh/id_rsa.pub文件中。

用文本編輯工具打開該文件慧邮,在linux下可以用cat命令顯示id_rsa.pub中的內(nèi)容(cat ?~/.ssh/id_rsa.pub)调限,讓后復(fù)制其內(nèi)容。

接著拷貝.ssh/id_rsa.pub文件內(nèi)的所以內(nèi)容误澳,將它粘帖到github帳號管理中的添加SSH key界面中耻矮。

注意,使用vim讀取git_home/.ssh/id_rsa.pub中的公鑰內(nèi)容時忆谓,可能會有較多的空格和換行裆装,復(fù)制到github網(wǎng)站上時必需刪除。所以建議使用cat來讀取ssh公鑰。將ssh公鑰成功加入github后哨免,可使用命令ssh -T git@github.com來驗證是否成功茎活。如果出現(xiàn)象:hi xxx. You've successfully authenticated, but GitHub does not provide shell access.則說明連接成功。

非常不幸琢唾,我未能連接成功载荔。可使用命令ssh -Tv git@github.com來查找failure的原因采桃。通過詳細的debug過程懒熙,我發(fā)現(xiàn)象我把自己的ssh密鑰信息放到了/home/admin/.ssh/下,而測試時使用的賬戶是root普办,尋找ssh密鑰的路徑為root/.ssh工扎,所以permission denied的啦。su到admin下泌豆,就可以連接成功啦~~

3. 使用git與github管理代碼

3.1 新建一個repository

這里就使用github官網(wǎng)上的教程吧。請保證git的版本至少為1.7.10吏饿,否則可能無法成功踪危。詳細如何使用,請參見:https://help.github.com/articles/set-up-git猪落。linux下無法新建一個repo贞远,只能對github中已有的repo進行修改。所以笨忌,當要新建一個repo時蓝仲,必須在github.com上新建,再通過linux下的git向此repo中新添內(nèi)容官疲。

3.2 修改repo中的代碼

github的官網(wǎng)上也有修改repo代碼的教程袱结。詳情請參見:https://help.github.com/articles/fork-a-repo。簡要步驟如下:

$git clone https://github.com/username/Spoon-Knife.git

$cd Spoon-Knife

$git add filename.py#添加文件到版本庫

$git commit-m'add filename.py to src'#提交途凫,產(chǎn)生版本記錄垢夹,注意代碼依然在本地

$vim README.md#修改Spoon-Knife中的README.md文件內(nèi)容

$git commit-m'modify the README.md'#提交,產(chǎn)生版本記錄维费,注意代碼依然在本地

$git [remote] rm filename1.py#刪除repo中的filename1.py文件

$git commit-m'delete filename1.py'#提交果元,產(chǎn)生版本記錄,注意代碼依然在本地

$git push origin#將修改提交到github上

3.3 常用git命令

git help                                 #可查看git的常用命令

git config--globaluser.name"Your Name Here"#設(shè)置commit的署名

git config--globaluser.email"your_email@example.com"#設(shè)置commit的email

git config [--local|--global|--system] --list/-l          #查看本地的global信息

git config [--local|--global|--system] --unset[-all] user.name  #刪除user.name信息犀盟。如果user.name對應(yīng)多個值而晒,可用unset-all來刪除

git remote add XXX https://github.com/username/repo_name.git    #設(shè)置github的連接

git clone git://github.com/your_account/aimed_repo.git       #復(fù)制一個repo到本地

git remote -v                               #查看本地設(shè)置的url連接信息

git status                                 #查看當前工作的

branch git branch                             #查看本地所有的

branch git branch -a                           #查看遠程的所有分支

git branch -d branch_name                       ? #刪除本地branch_name這一分支

git push origin --delete branch_name                   #刪除名為branch_name的遠程分支

git checkout branch_name                         #切換到名為branch_name的分支上

git chechout -b branch_name                      ? #在本地新建一個名為branch_nam的分支

git diff test_branch_name                       ? #查看當前branch與test_branch_name中代碼的區(qū)別

git mv filename newfilename                      #文件重命名

git push XXX branch_name                        #上傳指定的branch到遠端

git pull                                  #將遠程上的版本與本地版本進行合并,相當于get fetch + git merge

git reset --hard                             #將剛才進行的git pull所進行的操作取消阅畴,恢復(fù)本地版本合并前的原貌

4. 如何刪除github上的repository

github頁面上刪除repo的功能比較隱蔽倡怎,得在這里表一表。比如,想刪除了一個名為python的repo诈胜。則需先點擊進入“python”豹障,單擊“Settings”,找到“Delete this repository”焦匈,確認刪除即可血公。注意,github上的repo刪除后就不能恢復(fù)了哦~~

5. git clone/push時出現(xiàn)錯誤提示:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing ...

這是由于ssl認證出問題引起的錯誤缓熟。有兩種簡單的解決方法:

1. 使用命令累魔,成功執(zhí)行后,便可正常使用git clone和git push了

git config --global http.sslVerifyfalse

2. 使用命令够滑,但每次clone 和 push時都需要帶上env的部分垦写。

env GIT_SSL_NO_VERIFY=truegit clone https://github.com/XXXX/xxxxx.git

6. git push時出現(xiàn)錯誤non-fast-forward時怎么辦?(來自:http://blog.csdn.net/chain2012/article/details/7476493

當要push代碼到git時彰触,出現(xiàn)提示:

error:failed to push some refs to ...

Dealing with “non-fast-forward” errors

From time to time you may encounter this error while pushing:

$?git?push?origin?master

To?../remote/

!?[rejected]????????master?->?master?(non-fast?forward)

error:?failed?to?push?some?refs?to?'../remote/'

To prevent you from losing history, non-fast-forward updates were rejected

Merge the remote changes before pushing again. ?See the 'non-fast forward'

section of 'git push --help' for details.

This error can be a bit overwhelming at first, do not fear. Simply put, git cannot make the change on the remote without losing commits, so it refuses the push. Usually this is caused by another user pushing to the same branch. You can remedy this by fetching and merging the remote branch, or using pull to perform both at once.

In other cases this error is a result of destructive changes made locally by using commands like git commit --amend or git rebase. While you can override the remote by adding --force to the push command, you should only do so if you are absolutely certain this is what you want to do. Force-pushes can cause issues for other users that have fetched the remote branch, and is considered bad practice. When in doubt, don’t force-push.

問題(Non-fast-forward)的出現(xiàn)原因在于:git倉庫中已經(jīng)有一部分代碼梯投,所以它不允許你直接把你的代碼覆蓋上去。于是你有2個選擇方式:

1况毅,強推分蓖,即利用強覆蓋方式用你本地的代碼替代git倉庫內(nèi)的內(nèi)容

git push -f

2,先把git的東西fetch到你本地然后merge后再push

$ git fetch

$ git merge

這2句命令等價于

$?git?pull

可是尔许,這時候又出現(xiàn)了如下的問題:

上面出現(xiàn)的 [branch "master"]是需要明確(.git/config)如下的內(nèi)容

[branch "master"]

remote = origin

merge = refs/heads/master

這等于告訴git2件事:

1么鹤,當你處于master branch, 默認的remote就是origin。

2味廊,當你在master branch上使用git pull時蒸甜,沒有指定remote和branch,那么git就會采用默認的remote(也就是origin)來merge在master branch上所有的改變

如果不想或者不會編輯config文件的話余佛,可以在bush上輸入如下命令行:

$?git?config?branch.master.remote?origin

$?git?config?branch.master.merge?refs/heads/master

之后再重新git pull下柠新。最后git push你的代碼吧。it works now~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辉巡,一起剝皮案震驚了整個濱河市登颓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌红氯,老刑警劉巖框咙,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痢甘,居然都是意外死亡喇嘱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門塞栅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來者铜,“玉大人,你說我怎么就攤上這事∽餮蹋” “怎么了愉粤?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拿撩。 經(jīng)常有香客問我衣厘,道長,這世上最難降的妖魔是什么压恒? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任影暴,我火速辦了婚禮,結(jié)果婚禮上探赫,老公的妹妹穿的比我還像新娘型宙。我一直安慰自己,他們只是感情好伦吠,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布妆兑。 她就那樣靜靜地躺著,像睡著了一般毛仪。 火紅的嫁衣襯著肌膚如雪搁嗓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天潭千,我揣著相機與錄音谱姓,去河邊找鬼借尿。 笑死刨晴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的路翻。 我是一名探鬼主播狈癞,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼茂契!你這毒婦竟也來了蝶桶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤掉冶,失蹤者是張志新(化名)和其女友劉穎真竖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厌小,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡恢共,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了璧亚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讨韭。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出透硝,到底是詐尸還是另有隱情狰闪,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布濒生,位于F島的核電站埋泵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甜攀。R本人自食惡果不足惜秋泄,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望规阀。 院中可真熱鬧恒序,春花似錦、人聲如沸谁撼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厉碟。三九已至喊巍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箍鼓,已是汗流浹背崭参。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留款咖,地道東北人何暮。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像铐殃,于是被迫代替她去往敵國和親海洼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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