一、如果輸入$ git remote add origin git@github.com:djqiang(github帳號(hào)名)/gitdemo(項(xiàng)目名).git
提示出錯(cuò)信息:fatal: remote origin already exists.
解決辦法如下:
1、先輸入$ git remote rm origin
2、再輸入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不會(huì)報(bào)錯(cuò)了!
3、如果輸入$ git remote rm origin 還是報(bào)錯(cuò)的話,error: Could not remove config section 'remote.origin'. 我們需要修改gitconfig文件的內(nèi)容
4、找到你的github的安裝路徑,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一個(gè)名為gitconfig的文件,打開(kāi)它把里面的[remote "origin"]那一行刪掉就好了!
二、如果輸入$ ssh -T git@github.com 出現(xiàn)錯(cuò)誤提示:Permission denied (publickey).因?yàn)樾律傻膋ey不能加入ssh就會(huì)導(dǎo)致連接不上github。
解決辦法如下:
1、先輸入$ ssh-agent,再輸入$ ssh-add ~/.ssh/id_key,這樣就可以了。
2、如果還是不行的話,輸入ssh-add ~/.ssh/id_key 命令后出現(xiàn)報(bào)錯(cuò)Could not open a connection to your authentication agent.解決方法是key用Git Gui的ssh工具生成,這樣生成的時(shí)候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token等配置都用命令行來(lái)做。
3、最好檢查一下在你復(fù)制id_rsa.pub文件的內(nèi)容時(shí)有沒(méi)有產(chǎn)生多余的空格或空行,有些編輯器會(huì)幫你添加這些的。
三、如果輸入$ git push origin master 提示出錯(cuò)信息:error:failed to push som refs to .......
解決辦法如下:
1、先輸入$ git pull origin master //先把遠(yuǎn)程服務(wù)器github上面的文件拉下來(lái)
2、再輸入$ git push origin master
3、如果出現(xiàn)報(bào)錯(cuò) 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 origin git@github.com:djqiang/gitdemo.git
四、使用git在本地創(chuàng)建一個(gè)項(xiàng)目的過(guò)程
$ makdir ~/hello-world //創(chuàng)建一個(gè)項(xiàng)目hello-world
$ cd ~/hello-world //打開(kāi)這個(gè)項(xiàng)目
$ 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 //連接遠(yuǎn)程github項(xiàng)目
$ git push -u origin master //將本地項(xiàng)目更新到github項(xiàng)目上去
五、gitconfig配置文件
Git有一個(gè)工具被稱為git config,它允許你獲得和設(shè)置配置變量;
這些變量可以控制Git的外觀和操作的各個(gè)方面。
這些變量可以被存儲(chǔ)在三個(gè)不同的位置:
1./etc/gitconfig 文件:包含了適用于系統(tǒng)所有用戶和所有庫(kù)的值。如果你傳遞參數(shù)選項(xiàng)’--system’ 給 git config,它將明確的讀和寫這個(gè)文件。
2.~/.gitconfig 文件 :具體到你的用戶。你可以通過(guò)傳遞--global 選項(xiàng)使Git 讀或?qū)戇@個(gè)特定的文件。
3.位于git目錄的config文件 (也就是 .git/config) :無(wú)論你當(dāng)前在用的庫(kù)是什么,特定指向該單一的庫(kù)。每個(gè)級(jí)別重寫前一個(gè)級(jí)別的值。因此,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個(gè)值。 在Windows系統(tǒng)中,Git在$HOME目錄中查找.gitconfig文件(對(duì)大多數(shù)人來(lái)說(shuō),位于C:\Documents and Settings$USER下)。它也會(huì)查找/etc/gitconfig,盡管它是相對(duì)于Msys 根目錄的。這可能是你在Windows中運(yùn)行安裝程序時(shí)決定安裝Git的任何地方。
配置相關(guān)信息:
4.1 當(dāng)你安裝Git后首先要做的事情是設(shè)置你的用戶名稱和e-mail地址。這是非常重要的,因?yàn)槊看蜧it提交都會(huì)使用該信息。它被永遠(yuǎn)的嵌入到了你的提交中:$ git config --global user.name "John Doe"$ git config --global user.email johndoe@example.com
4.2 你的編輯器(Your Editor)現(xiàn)在,你的標(biāo)識(shí)已經(jīng)設(shè)置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時(shí)會(huì)使用該文本編輯器。缺省情況下,Git使用你的系統(tǒng)的缺省編輯器,這通??赡苁莢i 或者 vim。如果你想使用一個(gè)不同的文本編輯器,例如Emacs,你可以做如下操作:$ git config --global core.editor emacs
4.3 檢查你的設(shè)置(Checking Your Settings)如果你想檢查你的設(shè)置,你可以使用 git config --list 命令來(lái)列出Git可以在該處找到的所有的設(shè)置:$ git config --list 你也可以查看Git認(rèn)為的一個(gè)特定的關(guān)鍵字目前的值,使用如下命令 git config {key}:$ git config user.name
4.4 獲取幫助(Getting help)如果當(dāng)你在使用Git時(shí)需要幫助,有三種方法可以獲得任何git命令的手冊(cè)頁(yè)(manpage)幫助信息:$ git help <verb>$ git <verb> --help$ man git-<verb>例如,你可以運(yùn)行如下命令獲取對(duì)config命令的手冊(cè)頁(yè)幫助:$ git help config
六、push到github時(shí),每次都要輸入用戶名和密碼的問(wèn)題
在github.com上 建立了一個(gè)小項(xiàng)目,可是在每次push 的時(shí)候,都要輸入用戶名和密碼,很是麻煩 原因是使用了https方式 push 在termail里邊 輸入 git remote -v 可以看到形如一下的返回結(jié)果
origin https://github.com/dengVictor/learngit.git (fetch)
origin https://github.com/dengVictor/learngit.git (push)
下面把它換成ssh方式的。
- git remote rm origin
- git remote add origin git@github.com/dengVictor/learngit.git
- git push origin
七、常用命令
假如你現(xiàn)在新創(chuàng)建了一個(gè)項(xiàng)目,想把它提交到github上面? 假設(shè)你創(chuàng)建好了一個(gè)項(xiàng)目,并切換到項(xiàng)目的根目錄下面:
$ git status //查看當(dāng)前項(xiàng)目下所有文的狀態(tài),如果第一次,你會(huì)發(fā)現(xiàn)都紅顏色的,因?yàn)樗€沒(méi)有交給git/github管理。
$ git add . //(.)點(diǎn)表示當(dāng)前目錄下的所有內(nèi)容,交給git管理,也就是提交到了git的本地倉(cāng)庫(kù)。 Ps:git的強(qiáng)大之處就是有一個(gè)本地倉(cāng)庫(kù)的概念,在沒(méi)有網(wǎng)絡(luò)的情況下可以先將更新的內(nèi)容提交到本地倉(cāng)庫(kù)。
$ git commit –m”discription ” //對(duì)你更新或修改了哪些內(nèi)容做一個(gè)描述。
$ git remote add origin git@github.com:xiahouzuoxin/zx-libsvm.git // 如果你是第一次提交項(xiàng)目,這一句非常重要,這是你本地的當(dāng)前的項(xiàng)目與遠(yuǎn)程的哪個(gè)倉(cāng)庫(kù)建立連接。 Ps: origin可以改為別人的名字,但是在你下一次push(提交)時(shí),也要用你修改之后的名字。
$ git remote -v //查看你當(dāng)前項(xiàng)目遠(yuǎn)程連接的是哪個(gè)倉(cāng)庫(kù)地址。
$ git push -u origin master //將本地的項(xiàng)目提交到遠(yuǎn)程倉(cāng)庫(kù)中。 ------------------------------------------------------------ 假如,你回到了家,想把公司提交的項(xiàng)目克隆到本地? 如果你是第一次想把github上面的項(xiàng)目克隆到本地或者要克隆別人的項(xiàng)目到地。
$ git clone git@github.com:xiahouzuoxin/zx-libsvm.git //在git下面切換到想存放此項(xiàng)目的文件目錄下,運(yùn)行這條命令就可以將項(xiàng)目克隆下來(lái)。
假如本地已經(jīng)存在了這個(gè)項(xiàng)目,而倉(cāng)庫(kù)中又有一新的更新,如何把更的合并到本地的項(xiàng)目中?
$ git fetch origin //取得遠(yuǎn)程更新,這里可以看做是準(zhǔn)備要取了
$ git merge origin/master //把更新的內(nèi)容合并到本地分支/master ------------------------------------------- 項(xiàng)目中刪除了一些文件,如何提交? 假如遠(yuǎn)程倉(cāng)庫(kù)中已經(jīng)存了aaa這個(gè)文件,我fetch了下來(lái),并刪除了aaa這個(gè)文件,想再push上到遠(yuǎn)程倉(cāng)庫(kù)中,并使遠(yuǎn)程倉(cāng)庫(kù)中的項(xiàng)目被新的修改覆蓋(也就是遠(yuǎn)程倉(cāng)庫(kù)中 的aaa也被刪除)
$ git status //可以看到我們刪除的哪些文件
$ git add . //刪除之后的文件提交git管理。
$ git rm src/com/hzh/hibernate/dao/aaa.java //移除我們刪除的那個(gè)文件,不然git不允許我們往遠(yuǎn)程倉(cāng)庫(kù)提交。 Ps: 如果你想刪除的是某個(gè)目錄(java包),這里想移除整個(gè)目錄的內(nèi)容。
$ git rm src/com/hzh/hibernate/bbb/ -r // -r 會(huì)把bbb/目錄下的所有內(nèi)容一次性移動(dòng)。 ------------------------------------------------------------------------ 遠(yuǎn)程創(chuàng)建了一個(gè)新倉(cāng)庫(kù),本地創(chuàng)建了一個(gè)新項(xiàng)目,如何使新的項(xiàng)目與倉(cāng)庫(kù)對(duì)應(yīng)起來(lái)? 其實(shí),這個(gè)也很簡(jiǎn)單,只是我當(dāng)時(shí)對(duì)那些命令不太理解,所以比較模糊,不知如何對(duì)應(yīng)。
$ git remote add origin git@github.com:xiahouzuoxin/zx-libsvm.git //還是這個(gè)命令,在你push項(xiàng)目之前加上這一句就OK了。 git@github.com:xiahouzuoxin/zx-libsvm.git 就是你常見(jiàn)的新倉(cāng)庫(kù)的地址啊。git切換到新項(xiàng)目下,在push之前,加上這一句,我們創(chuàng)建的新倉(cāng)庫(kù)就與新項(xiàng)目建立了連接。