Github使用方法及常見錯誤

第一步:固然是先安裝

windows上安裝git  http://msysgit.github.io/

配置你的username 和emaillinux

$ git config --global user.name "Yourname"
$ git config --global user.email "email@example.com"

建立版本庫git

$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit

第二步,經過git init命令把這個目錄變成git能夠管理的倉庫

$ git init

Initialized empty Git repository in /Users/michael/learngit/.git/github

瞬間Git就把倉庫建好了,並且告訴你是一個空的倉庫(empty Git repository),細心的讀者能夠發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,否則改亂了,就把Git倉庫給破壞了。
若是你沒有看到.git目錄,那是由於這個目錄默認是隱藏的,用bootstrap

ls -ahwindows

命令就能夠看見。服務器

如今咱們編寫一個readme.txt文件,內容以下:app

Git is a version control system.
Git is free software.

必定要放到learngit目錄下(子目錄也行),由於這是一個Git倉庫,放到其餘地方Git再厲害也找不到這個文件。框架

和把大象放到冰箱須要3步相比,把一個文件放到Git倉庫只須要兩步。ssh

第一步,用命令git add告訴Git,把文件添加到倉庫

$ git add readme.txt

第二步,用命令git commit告訴Git,把文件提交到倉庫:

$ git commit -m "wrote a readme file"

[master (root-commit)cb926e7] wrote a readme file 1 file changed, 2
insertions(+) create mode 10064 readme.txt編輯器

git commit命令,-m後面輸入的是本次提交的說明,能夠輸入任意內容,固然最好是有意義的,這樣就能從歷史記錄裏方便地找到改動記錄

git commit命令執行成功後會告訴你,1個文件改動(咱們新添加的readme.txt文件),插入了兩行內容(readme.txt有兩行內容)

爲何Git添加文件須要add,commit一共兩步呢?由於commit能夠一次提交不少文件,因此你能夠屢次add不一樣的文件,好比:

$ git add file1.txt

$ git add file2.txt file3.txt

$ git commit -m "add 3 files"

咱們已經成功地添加並提交了一個readme.txt文件,如今,是時候繼續工做了,因而,咱們繼續修改readme.txt文件,改爲以下內容:

遠程倉庫

第1步:建立SSH Key 在用戶主目錄下,看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,若是已經有了,可直接跳到下一步。若是沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

第2步:登錄GitHub,打開「Account settings」,「SSH Keys」頁面:
而後,點「Add SSH Key」,填上任意Title,在Key文本框裏粘貼id_rsa.pub文件的內容:
點「Add Key」,你就應該看到已經添加的Key:

ps: id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,能夠放心地告訴任何人。

目前,在GitHub上的這個learngit倉庫仍是空的,GitHub告訴咱們,能夠從這個倉庫克隆出新的倉庫,也能夠把一個已有的本地倉庫與之關聯,而後,把本地倉庫的內容推送到GitHub倉庫。

如今,咱們根據GitHub的提示,在本地的learngit倉庫下運行命令:

$ git remote add origin git@github.com:michaelliao/learngit.git

添加後,遠程庫的名字就是origin,這是Git默認的叫法,也能夠改爲別的,可是origin這個名字一看就知道是遠程庫。

下一步,就能夠把本地庫的全部內容推送到遠程庫上

$ git push -u origin master

Counting objects: 19, done. Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done. Writing objects: 100%
(19/19), 13.73 KiB, done. Total 23 (delta 6), reused 0 (delta 0) To
git@github.com:michaelliao/learngit.git

  • [new branch] master -> master Branch master set up to track remote branch master from origin.

把本地庫的內容推送到遠程,用git push命令,其實是把當前分支master推送到遠程。

因爲遠程庫是空的,咱們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。

從如今起,只要本地做了提交,就能夠經過命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,如今,你就擁有了真正的分佈式版本庫!

SSH警告

當你第一次使用Git的clone或者push命令鏈接GitHub時,會獲得一個警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be

  1. RSA key fingerprint is xx.xx.xx.xx.xx. Are you sure you

  2. to continue connecting (yes/no)?

這是由於Git使用SSH鏈接,而SSH鏈接在第一次驗證GitHub服務器的Key時,須要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車便可。

Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任列表裏了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
從遠程庫克隆:
要克隆一個倉庫,首先必須知道倉庫的地址,而後使用git clone命令克隆。

Git支持多種協議,包括https,但經過ssh支持的原生git協議速度最快。

如何參與一個開源項目呢?好比人氣極高的bootstrap項目,這是一個很是強大的CSS框架,你能夠訪問它的項目主頁https://github.com/twbs/bootstrap,點「Fork」就在本身的帳號下克隆了一個bootstrap倉庫,而後,從本身的帳號下clone:

git clone git@github.com:michaelliao/bootstrap.git

必定要從本身的帳號下clone倉庫,這樣你才能推送修改。若是從bootstrap的做者的倉庫地址git@github.com:twbs/bootstrap.git克隆,由於沒有權限,你將不能推送修改。

小結

在GitHub上,能夠任意Fork開源倉庫;
本身擁有Fork後的倉庫的讀寫權限;
能夠推送pull request給官方倉庫來貢獻代碼。在安裝Git一節中,咱們已經配置了user.name和user.email,實際上,Git還有不少可配置項。好比,讓Git顯示顏色,會讓命令輸出看起來更醒目:
$ git config --global color.ui true
小結

忽略某些文件時,須要編寫.gitignore;
.gitignore文件自己要放到版本庫裏,而且能夠對.gitignore作版本管理!

常見錯誤總結

若是輸入

$ git remote add origin
git@github.com:djqiang(github賬號名)/gitdemo(項目名).git

提示出錯信息:

fatal: remote origin already exists.

解決辦法以下:

一、先輸入$ git remote rm origin

二、再輸入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不會報錯了!

三、若是輸入$ git remote rm origin 仍是報錯的話,

error: Could not remove config section 'remote.origin'

. 咱們須要修改gitconfig文件的內容

四、找到你的github的安裝路徑,個人是

C:UsersASUSAppDataLocalGitHubPortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8etc

五、找到一個名爲gitconfig的文件,打開它把裏面的[remote "origin"]那一行刪掉就行了!

若是輸入$ ssh -T git@github.com
出現錯誤提示:Permission denied (publickey).由於新生成的key不能加入ssh就會致使鏈接不上github。

解決辦法以下:

一、先輸入$ ssh-agent,再輸入$ ssh-add ~/.ssh/id_key,這樣就能夠了。

二、若是仍是不行的話,輸入ssh-add ~/.ssh/id_key 命令後出現報錯

Could not open a connection to your authentication agent

.解決方法是key用Git Gui的ssh工具生成,這樣生成的時候key就直接保存在ssh中了,不須要再ssh-add命令加入了,其它的user,token等配置都用命令行來作。

三、最好檢查一下在你複製id_rsa.pub文件的內容時有沒有產生多餘的空格或空行,有些編輯器會幫你添加這些的。

若是輸入$ git push origin master

提示出錯信息:

error:failed to push som refs to .......

解決辦法以下:

一、先輸入$ git pull origin master //先把遠程服務器github上面的文件拉下來

二、再輸入

$ git push origin master

三、若是出現報錯

fatal: Couldn't find remote ref master或者fatal: 'origin' does not
appear to be a git repository以及fatal: Could not read from remote
repository.

四、則須要從新輸入$ git remote add origingit@github.com:djqiang/gitdemo.git

提示出錯信息:

fatal: Unable to create '/path/my_proj/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

解決方法以下:

rm -f ./.git/index.lock

使用git在本地建立一個項目的過程

$ makdir ~/hello-world //建立一個項目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項目上去

gitconfig配置文件

Git有一個工具被稱爲git config,它容許你得到和設置配置變量;這些變量能夠控制Git的外觀和操做的各個方面。這些變量能夠被存儲在三個不一樣的位置:
1./etc/gitconfig 文件:包含了適用於系統全部用戶和全部庫的值。若是你傳遞參數選項’--system’ 給 git config,它將明確的讀和寫這個文件。
2.~/.gitconfig 文件 :具體到你的用戶。你能夠經過傳遞--global 選項使Git 讀或寫這個特定的文件。
3.位於git目錄的config文件 (也就是 .git/config) :不管你當前在用的庫是什麼,特定指向該單一的庫。每一個級別重寫前一個級別的值。所以,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值。
在Windows系統中,Git在$HOME目錄中查找.gitconfig文件(對大多數人來講,位於C:Documents and Settings$USER下)。它也會查找/etc/gitconfig,儘管它是相對於Msys 根目錄的。這多是你在Windows中運行安裝程序時決定安裝Git的任何地方。

warning: LF will be replaced by CRLF

問題解決方法

windows中的換行符爲 CRLF, 而在linux下的換行符爲LF,因此在執行add . 時出現提示,解決辦法:

$ rm -rf .git

// 刪除.git
$ git config --global core.autocrlf false //禁用自動轉換 (兩個虛線)

而後從新執行:

$ git init
$ git add .

總結

當咱們想要在gitub上的不一樣倉庫推送代碼的時候,先在gitub新建repository,在本地新建文件夾,又能夠被稱爲work directory,cd directory,而後git init 爲了防止 錯誤, 輸入$ git remote add origin git@github.com:xiaoxiongmila/gitdemo.git 就不會報錯了!git add demo git commit -m "demo說明" 接着 先輸入$ git pull origin master //先把遠程服務器github上面的文件拉下來
下一步,就能夠把本地庫的全部內容推送到遠程庫上 $ git push -u origin master
把本地庫的內容推送到遠程,用git push命令,其實是把當前分支master推送到遠程。

因爲遠程庫是空的,咱們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。

從如今起,只要本地做了提交,就能夠經過命令:

$ git push origin master

第二次往相同的倉庫裏面添加文件,就直接cd directory git add directory git commit -m 「文件說明」 git push origin master就能夠了,,無論你行不行,反正我是行了^-^PS: 遇到錯誤必定不要放棄,,堅持就是勝利!~~

相關文章
相關標籤/搜索