備註:
1.第一次使用Git必須註冊git賬號,2種方式註冊賬號,一種是用git命令,另一種是登錄github官網註冊。
2.第一次本地工程上傳至github上必須註冊SSH,因爲推送到遠程默認使用的是SSH形式
3.從github上抓取遠程工程有2種方式,一種是SSH形式另一種是https形式,默認情況下使用SSH形式,而且SSH形式比https形式快,具體實現方式如下:
SSH形式爲:git clone [email protected]:xx/xxx.git (xx表示你github登錄名,xxx.git表示該賬號下某個工程)
https形式爲:git clone https://github.com/xx/xxx.git (xx表示你github登錄名,xxx.git表示該賬號下某個工程)
以下爲初學者第一次使用git常用命令:
1.初始化配置(常用)
官網下載git並安裝,右擊“Git Bash Here” 進行git賬號註冊:
git config --global user.name "you name" 註冊git用戶名
git config --global user.email "[email protected]" 註冊git郵箱
git config --list 查看git配置
或者登錄github官網,註冊git賬號
把本地工程上傳到遠程github上則先創建SSH key,該方式提交代碼不需要輸入用戶名和密碼。github允許添加多個key,若是你自己筆記本操作,公司電腦操作,則需把每臺電腦的key添加到github上,那麼每臺電腦就可以往github上傳工程。
ssh-keygen -t rsa -C "[email protected]"
把生成的公鑰複製到github上,具體操作參考:http://blog.csdn.net/u014079773/article/details/49555989
2.創建工程並上傳至github遠程服務(重點)
第一次創建工程並提交至遠程服務首先登錄github官網創建遠程倉庫,點擊“Create A Repository”創建一個項目,點擊“New Repository”,然後“Project Name”輸入“learngit”,“Description”填寫描述, 在本地創建一個Github文件夾,在裏面再創建一個learngit文件夾,並將項目文件放進去,在“learngit”文件夾上右擊“Git bash”出現命令框
git init 初始化倉庫learngit
git add . 添加所有文件(add與“.”之間有空格,否則不識別的語法)
git commit -m 'version 1.2' 提交修改文件
git remote add origin [email protected]:somenone/learngit.git 提交遠程倉庫(用SSH的形式,關聯一個遠程倉庫)
git push -u origin master 推送遠程倉庫
備註:由於遠程庫是空的,我們第一次推送master
分支時,加上了-u
參數,Git不但會把本地的master
分支內容推送的遠程新的master
分支,還會把本地的master
分支和遠程的master
分支關聯起來,在以後的推送或者拉取時就可以簡化命令。
之後執行就是 git push origin master
3.修改本地文件上傳至遠程倉庫(重點)
修改好本地文件後在“learngit”文件夾上右擊“Git Bash Here”出現命令框
如果添加了內容則先要git add .
git commit -m "version 1.2" 提交修改
git commit -a -m "version1.2" 提交所有修改
git push origin master
4.文件管理
git add filename 修改文件提交到本地暫存區
git add . 修改所有文件提交到本地暫存區(注意add與“.”之間有個空格)
git commit -m "message" 提交修改
git commit -a -m "message" 提交所有修改
git checkout head readme.txt todo.txt 撤銷1,2文件修改
git checkout head . 撤銷所有文件修改
git status 查看當前文件狀態
git rm filename 刪除文件
git diff filename 查看修改文件具體內容即比較當前文件與暫存區文件差異
git reset filename 從暫存區恢復文件
git reset --hard HEAD^ 恢復最近一次提交過的狀態,即放棄上次提交後的所有本次修改
5.倉庫管理
git init 初始化倉庫
git clone [email protected]:someone/xxx.git 克隆遠程倉庫(SSH形式)
git clone https://github.com/someone/xx.git 克隆遠程倉庫(https形式)
git remote add origin [email protected]:someone/xxx.git 添加到到遠程倉庫master(SSH形式)
git push origin master 推送遠程倉庫
git push -u origin dev 首次將本地dev分支提交到遠程dev分支,並且track
git pull https://github.com/someone/xxx.git 更新遠程倉庫(https形式,要先選中倉庫)
git pull [email protected]:someone/xxx.git 更新遠程倉庫(SSH形式,要先選中倉庫)
git remote -v 查看遠程倉庫
git remote add origin [email protected]:someone/xx.git 添加遠程倉庫
git remote rm name 刪除遠程倉庫
$ git remote set-url --push origin [newUrl] 修改遠程倉庫
6.分支管理
git branch dev 創建一個分支dev
git chekcout dev 切換工作目錄到dev
git chekcout –b dev 創建dev分支並切換到dev
git branch 查看分支(當前分支前面會有一個"*")
git branch -a 查看所有分支
git merge dev 合併dev分支到當前分支master(必須切換到當前master分支纔可以合併分支,快速合併)
git branch –d dev 刪除dev分支(合併完成後沒有出現衝突刪除分支)
git branch -D dev 強制刪除爲合併的分支dev
git checkout –b dev origin/dev 建立本地的dev分支追蹤遠程倉庫的dev分支(本地分支最後與遠程分支一致)
git merge --no-ff -m "message" dev 合併dev分支到當前master分支(禁用"Fast-Forward"合並可以生成merge提交)
git merge origin/master 將遠程主分支合併到本地當前分支
git merge origin/dev 將遠程dev分支合併到本地dev分支
git push 推送所有分支
git push origin master 推送本地主分支推到遠程主分支
git push origin dev 推送本地dev分支到遠程dev分支
7.歷史記錄管理(常用)
git log 查看所有歷史記錄(從最近到最遠提交日誌,顯示詳細信息)
git log filename 查看指定文件每次提交記錄
git reflog 記錄每一次提交記錄(即查看所有分支所有記錄)
git log --graph 查看分支合併情況
8.暫存管理
git stash 暫存當前分支
git stash list 查看暫存分支
git stash apply 恢復暫存區但不刪除內容
git stash drop 刪除暫存區
git stash pop 恢復暫存區並刪除內容
9.標籤管理
git tag V1.0 創建標籤
git tag 查看標籤
git show V1.0 查看標籤信息
git tag -a V1.0 -m "version is 1.0" 創建帶有指定說明標籤(-a指定標籤名 -m指定說明文字)
git tag -d V1.0 刪除標籤
git push origin V1.0 推送某個標籤到遠程
git push origin --tags 推送所有標籤到遠程
git push origin:refs/tags/V1.0 刪除遠程標籤
10.忽略一些文件、文件夾不提交
在倉庫根目錄下創建名稱爲“.gitignore”的文件,寫入不需要的文件夾名或文件,每個元素佔一行即可,如
target
bin
*.db
總結:
Git 是一個很強大的分佈式版本管理工具,它不但適用於管理大型開源軟件的源代碼也可以管理私人的文檔和源代碼。
git提交倉庫在自己本地,每個人都可以擁有自己的本地倉庫,互不干擾,最後提交到遠程倉庫。
git config --global user.name "you name"
git config --gloabl user.email "[email protected]"
第一次使用git時,首先要進行用戶配置,這是爲了擁有git賬號,可以提交到遠程倉庫,然後在遠程倉庫github上註冊自己的賬號,那麼就可以在github上管理我們的項目。
git init:初始化本地倉庫,即是本地已經創建好的項目,然後執行該命令使得該項目變成git可管理的版本倉庫。
git add remote name url :若是你希望將本地初始化好的倉庫提交到遠程倉庫,那麼在遠程服務器上創建倉庫,進行本地倉庫與遠程倉庫關聯
git add:是將當前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中,這也是提交之前所需要執行的一步,例如'git add app/model/user.rb'就會增加app/model/user.rb文件到Git的索引中,該功能類似於SVN的add
git rm:從當前的工作空間中和索引中刪除文件,例如'git rm app/model/user.rb',該功能類似於SVN的rm、del
git commit:提交當前工作空間的修改內容,類似於SVN的commit命令,例如'git commit -m story #3, add user model',提交的時候必須用-m來輸入一條提交信息,該功能類似於SVN的commit
git push:將本地commit的代碼推送到遠程版本庫中,例如'git push origin master'就會將本地的代碼更新到名爲orgin的遠程版本庫中的master分支上
git pull:從其他的版本庫(既可以是遠程的也可以是本地的)將代碼更新到本地,例如:'git pull origin master'就是將origin這個版本庫的代碼更新到本地的master主枝,該功能類似於SVN的update
git log:查看歷史日誌,該功能類似於SVN的log
git reflog:查看所有分支的所有記錄包括commit和reset的操作
git branch:對分支的增、刪、查等操作,例如'git branch new_branch'會從當前的工作版本創建一個叫做new_branch的新分支,'git branch -D new_branch'就會強制刪除叫做new_branch的分支,'git branch'就會列出本地所有的分支
git checkout:Git的checkout有兩個作用,其一是在不同的branch之間進行切換,例如'git checkout new_branch'就會切換到new_branch的分支上去;另一個功能是還原代碼的作用,例如'git checkout app/model/user.rb'就會將user.rb文件從上一個已提交的版本中更新回來,未提交的內容全部會回滾