一.各種命令介紹:
git pull:從其他的版本庫(既可以是遠程的也可以是本地的)將代碼更新到本地,例如:'git pull origin master'就是將origin這個版本庫的代碼更新到本地的master主枝,該功能類似于SVN的update
git add:是將當前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中,這也是提交之前所需要執行的一步,例如'git add app/model/user.rb'就會增加app/model/user.rb文件到Git的索引中
git rm:從當前的工作空間中和索引中刪除文件,例如'git rm app/model/user.rb'
git commit:提交當前工作空間的修改內容,類似于SVN的commit命令,例如'git commit -m "story #3, add user model"',提交的時候必須用-m來輸入一條提交信息
git push:將本地commit的代碼更新到遠程版本庫中,例如'git push origin'就會將本地的代碼更新到名為orgin的遠程版本庫中
git log:查看歷史日志
git revert:還原一個版本的修改,必須提供一個具體的Git版本號,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本號都是生成的一個哈希值、
二.使用步驟及流程
創建新倉庫
git init
檢出倉庫
件來人肉合并這些 沖突(conflicts) 了。改完之后,你需要執行如下命令以將它們標記為合并成功:
git add <filename>
在合并改動之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch>
串創建一個本地倉庫的克隆版本
git clone /path/to/repositoty
如果是遠程服務器上的倉庫
git clone username@host:/path/to/repository
件。已添加到緩存區的改動,以及新件,都不受影響。
假如你想要丟棄你所有的本地改動與提交,可以到服務器上獲取最新的版本并將你本地主分支指向到它:
git fetch origin
git reset --hard origin/master
你的本地倉庫由 git 維護的三棵“樹”組成。第一個是你的 工作目錄,它持有實際件;第二個是 緩存區(Index),它像個緩存區域,臨時保存你的改動;最后是 HEAD,指向你最近一次提交后的結果。
添加與提交
你可以計劃改動(把它們添加到緩存區),使用如下命令:
git add <filename>
git add *
這是 git 基本工作流程的第一步;使用如下命令以實際提交改動:
git commit -m "代碼提交信息"
現在,你的改動已經提交到了 HEAD,但是還沒到你的遠端倉庫。推送改動
你的改動現在已經在本地倉庫的 HEAD 中了。執行如下命令以將這些改動提交到遠端倉庫:
git push origin master
可以把 master 換成你想要推送的任何分支。
如果你還沒有克隆現有倉庫,并欲將你的倉庫連接到某個遠程服務器,你可以使用如下命令添加:
git remote add origin <server>
如此你就能夠將你的改動推送到所添加的服務器上去
分支
分支是用來將特性開發絕緣開來的。在你創建倉庫的時候,master 是“默認的”。在其他分支上進行開發,完成后再將它們合并到主分支上
創建一個叫做“feature_x”的分支,并切換過去:
git checkout -b feature_x
切換回主分支:
git checkout master
再把新建的分支刪掉:
git branch -d feature_x
除非你將分支推送到遠端倉庫,不然該分支就是 不為他人所見的:
git push origin <branch>
更新與合并
要更新你的本地倉庫至最新改動,執行:
git pull
以在你的工作目錄中 獲取(fetch) 并 合并(merge) 遠端的改動。
要合并其他分支到你的當前分支(例如 master),執行:
git merge <branch>
兩種情況下,git 都會嘗試去自動合并改動。不幸的是,自動合并并非次次都能成功,并可能導致 沖突(conflicts)。 這時候就需要你修改這些文件來人肉合并這些 沖突(conflicts) 了。改完之后,你需要執行如下命令以將它們標記為合并成功:
git add <filename>
在合并改動之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch>
替換本地改動
假如你做錯事(自然,這是不可能的),你可以使用如下命令替換掉本地改動:
git checkout -- <filename>
此命令會使用 HEAD 中的最新內容替換掉你的工作目錄中的文件。已添加到緩存區的改動,以及新文件,都不受影響。
假如你想要丟棄你所有的本地改動與提交,可以到服務器上獲取最新的版本并將你本地主分支指向到它:
git fetch origin
git reset --hard origin/master
三.錯誤匯總
1.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 .
2.git push origin master出錯:error: failed to push some refs to
很明顯是:
本地沒有update到最新版本的項目(git上有README.md文件沒下載下來)
本地直接push所以會出錯。
【解決過程】
1.看到提示里面,感覺是本地的代碼不是最新的。
所以覺得應該是類似于svn中的,先update一下,再去commit,估計就可以了。
所以先去pull試試:
git pull --rebase origin master
解決!
3.Git: cannot checkout branch - error: pathspec '…' did not match any file(s) known to git
解決方案:傳送門
4.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 origingit@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的任何地方。
配置相關信息:
2.1 當你安裝Git后首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
2.2 你的編輯器(Your Editor)
現在,你的標識已經設置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時會使用該文本編輯器。缺省情況下,Git使用你的系統的缺省編輯器,這通常可能是vi 或者 vim。如果你想使用一個不同的文本編輯器,例如Emacs,你可以做如下操作:
$ git config --global core.editor emacs
2.3 檢查你的設置(Checking Your Settings)
如果你想檢查你的設置,你可以使用 git config --list 命令來列出Git可以在該處找到的所有的設置:
$ git config --list
你也可以查看Git認為的一個特定的關鍵字目前的值,使用如下命令 git config {key}:
$ git config user.name
2.4 獲取幫助(Getting help)
如果當你在使用Git時需要幫助,有三種方法可以獲得任何git命令的手冊頁(manpage)幫助信息:
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
例如,你可以運行如下命令獲取對config命令的手冊頁幫助:
$ git help config
文章列表