Github常見操作和常見錯誤!
學習了一下github的基本命令,弄了大半天了,唉,結合網友的一些資料,總結了一大堆!
一、如果輸入$ 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文件的內容
4、找到你的github的安裝路徑,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一個名為gitconfig的文件,打開它把里面的[remote "origin"]那一行刪掉就好了!
二、如果輸入$ ssh -T git@github.com
出現錯誤提示:Permission denied (publickey).因為新生成的key不能加入ssh就會導致連接不上github。
解決辦法如下:
1、先輸入$ ssh-agent,再輸入$ ssh-add ~/.ssh/id_key,這樣就可以了。2、如果還是不行的話,輸入ssh-add ~/.ssh/id_key 命令后出現報錯Could not open a connection to your authentication agent.解決方法是key用Git Gui的ssh工具生成,這樣生成的時候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token等配置都用命令行來做。
3、最好檢查一下在你復制id_rsa.pub文件的內容時有沒有產生多余的空格或空行,有些編輯器會幫你添加這些的。
三、如果輸入$ git push origin master
提示出錯信息:error:failed to push som refs to .......
解決辦法如下:
1、先輸入$ git pull origin master //先把遠程服務器github上面的文件拉下來
2、再輸入$ git push origin master
3、如果出現報錯 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在本地創建一個項目的過程
$ 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的任何地方。
4.1 當你安裝Git后首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
4.2 你的編輯器(Your Editor)
現在,你的標識已經設置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時會使用該文本編輯器。缺省情況下,Git使用你的系統的缺省編輯器,這通常可能是vi 或者 vim。如果你想使用一個不同的文本編輯器,例如Emacs,你可以做如下操作:
$ git config --global core.editor emacs
4.3 檢查你的設置(Checking Your Settings)
如果你想檢查你的設置,你可以使用 git config --list 命令來列出Git可以在該處找到的所有的設置:
$ git config --list
你也可以查看Git認為的一個特定的關鍵字目前的值,使用如下命令 git config {key}:
$ git config user.name
4.4 獲取幫助(Getting help)
如果當你在使用Git時需要幫助,有三種方法可以獲得任何git命令的手冊頁(manpage)幫助信息:
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
例如,你可以運行如下命令獲取對config命令的手冊頁幫助:
$ git help config
六、push到github時,每次都要輸入用戶名和密碼的問題
在github.com上 建立了一個小項目,可是在每次push 的時候,都要輸入用戶名和密碼,很是麻煩
原因是使用了https方式 push
在termail里邊 輸入 git remote -v
可以看到形如一下的返回結果
origin https://github.com/dengVictor/learngit.git (fetch)
origin https://github.com/dengVictor/learngit.git (push)
下面把它換成ssh方式的。
1. git remote rm origin
2. git remote add origin git@github.com/dengVictor/learngit.git
3. git push origin
七、常用命令
假如你現在新創建了一個項目,想把它提交到github上面?
假設你創建好了一個項目,并切換到項目的根目錄下面:
$ git status //查看當前項目下所有文的狀態,如果第一次,你會發現都紅顏色的,因為它還沒有交給git/github管理。
$ git add . //(.)點表示當前目錄下的所有內容,交給git管理,也就是提交到了git的本地倉庫。
Ps:git的強大之處就是有一個本地倉庫的概念,在沒有網絡的情況下可以先將更新的內容提交到本地倉庫。
$ git commit –m”discription ” //對你更新或修改了哪些內容做一個描述。
$ git remote add origin git@github.com:xiahouzuoxin/zx-libsvm.git
// 如果你是第一次提交項目,這一句非常重要,這是你本地的當前的項目與遠程的哪個倉庫建立連接。
Ps: origin可以改為別人的名字,但是在你下一次push(提交)時,也要用你修改之后的名字。
$ git remote -v //查看你當前項目遠程連接的是哪個倉庫地址。
$ git push -u origin master //將本地的項目提交到遠程倉庫中。
------------------------------------------------------------
假如,你回到了家,想把公司提交的項目克隆到本地?
如果你是第一次想把github上面的項目克隆到本地或者要克隆別人的項目到地。
$ git clone git@github.com:xiahouzuoxin/zx-libsvm.git
//在git下面切換到想存放此項目的文件目錄下,運行這條命令就可以將項目克隆下來。
假如本地已經存在了這個項目,而倉庫中又有一新的更新,如何把更的合并到本地的項目中?
$ git fetch origin //取得遠程更新,這里可以看做是準備要取了
$ git merge origin/master //把更新的內容合并到本地分支/master
-------------------------------------------
項目中刪除了一些文件,如何提交?
假如遠程倉庫中已經存了aaa這個文件,我fetch了下來,并刪除了aaa這個文件,想再push上到遠程倉庫中,并使遠程倉庫中的項目被新的修改覆蓋(也就是遠程倉庫中 的aaa也被刪除)
$ git status //可以看到我們刪除的哪些文件
$ git add . //刪除之后的文件提交git管理。
$ git rm src/com/hzh/hibernate/dao/aaa.java //移除我們刪除的那個文件,不然git不允許我們往遠程倉庫提交。
Ps: 如果你想刪除的是某個目錄(java包),這里想移除整個目錄的內容。
$ git rm src/com/hzh/hibernate/bbb/ -r // -r 會把bbb/目錄下的所有內容一次性移動。
------------------------------------------------------------------------
遠程創建了一個新倉庫,本地創建了一個新項目,如何使新的項目與倉庫對應起來?
其實,這個也很簡單,只是我當時對那些命令不太理解,所以比較模糊,不知如何對應。
$ git remote add origin git@github.com:xiahouzuoxin/zx-libsvm.git
//還是這個命令,在你push項目之前加上這一句就OK了。
git@github.com:xiahouzuoxin/zx-libsvm.git 就是你常見的新倉庫的地址啊。git切換到新項目下,在push之前,加上這一句,我們創建的新倉庫就與新項目建立了連 接。