1 git
1.1 什么是git
git是一個開源的分布式版本控制系統。git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件,git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持。
1.2 git與svn的區別
- GIT是分布式的,SVN是集中式管理;
- GIT把內容按元數據方式增量存儲,而SVN是按文件; <.svn .git >
- GIT分支和SVN的分支不同;
- GIT的內容完整性要優於SVN:
- git內容存儲使用的是SHA-1哈希算法;
- SVN有一個全局的整數編號,而git則是一個SHA-1值作編號:
- SVN控制粒度可以到某個目錄(當然很少這樣做);而git一般是整個項目;
1.3 git與github、gitee等的區別
Git 是一種版本控制系統,是一個命令,是一種工具,有點像cmd(命令行工具)。
Github 是一個基於git實現在線代碼托管的倉庫,向互聯網開放,企業版要收錢。
Gitlab 類似 github,一般用於在企業內搭建git私服,要自己搭環境。
Gitee 即碼雲,是 oschina 免費給企業用的,不用自己搭建環境,可以建立自己的私有倉庫。
Git-ce 是社區版,gitlab-ee是企業版,收費的。
依據個人喜好,使用不同的平台
Github與Gitee的對比
Github與Gitee是一類,在雲端。區別是Github是國外的,Gitee是國內的。二者的使用需要借助Git。
2 gitee的使用
2.1 gitee倉庫的創建
登陸gitee碼雲的官網:https://gitee.com/創建賬號和密碼后,然后創建倉庫:
2.2 在linux下對git進行配置
開發者向碼雲版本庫寫入最常用到的協議是SSH協議,因為SSH協議使用公鑰認證,可以實現無口令訪問,而若使用HTTPS協議每次身份認證時都需要提供口令。
2.2.1 在Linux上對git進行全局配置
該配置只需要做一次且對該Linux主機上所有git管理項目生效:
git config --global user.name "tianpeng"
git config --global user.email "tianpeng_dsp@126.com"
2.2.2 生成SSH Key
ssh-keygen -t rsa -C "tianpeng_dsp@126.com"
/home/tianpeng/.ssh/id_rsa 私鑰
/home/tianpeng/.ssh/id_rsa.pub 公鑰
2.2.3 上傳public Key
查看public key並拷貝,將它添加到碼雲個人賬號的SSH公鑰里:
cat ~/.ssh/id_rsa.pub
驗證賬戶密碼后,添加公鑰成功。
公鑰添加測試
ssh -T git@git.oschina.net
2.3 git使用
2.3.1 git下載測試
2.3.2 提交代碼到本地庫
首先將要上傳的文件目錄拷貝到git_space目錄下
執行:
(1) git add
(2) git commit (寫記錄筆記)
(3)git push origin master(彈出 username for ‘https://gitee.com’:輸入登錄郵箱, password for ‘https://’:輸入登錄密碼)
git add:作用就是將我們需要提交的代碼從工作區添加到暫存區,就是告訴git系統,我們要提交哪些文件,之后就可以使用git commit命令進行提交了。
git commit 主要是將暫存區里的改動給提交到本地的版本庫。git commit -m ”xxxx“,-m參數表示可以直接輸入后面的”message“, 如果不加-m參數,那么是不能直接輸入xxx的,而是會調用一個編輯器一般是vim來讓你輸入這個xxx, xxx即是我們用來簡要說明這次提交的語句。
2.3.3 git push
在使用git commit命令將修改從暫存區提交到本地版本庫后,只剩下最后一步將本地版本庫的分支推送到遠程服務器對應的分支上。
git push 的一般形式為 pit push <遠程主機名> <本地分支名> <遠程分支名>,例如:
git push origin master: refs/for/master,即將本地的master分支推送到遠程主機origin上的對應的master分支, origin是遠程主機名。第一個master是本地分支名,第二個master是遠程分支名。
git push origin master
如果遠程分支被省略,如上則表示將本地分支推送到與之存在追蹤關系的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建
git push origin :refs/for/master
如果省略本地分支名,則表示刪除指定的遠程分支,因為這等同於推送一個空的本地分支到遠程分支,等同於 git push origin –delete master
git push origin
如果當前分支與遠程分支存在追蹤關系,則本地分支和遠程分支都可以省略,將當前分支推送到origin主機的對應分支
git push
如果當前分支只有一個遠程分支,那么主機名都可以省略,形如 git push,可以使用 git branch -r ,查看遠程的分支名
關於 refs/for:
refs/for 的意義在於我們提交代碼到服務器之后是需要經過code review 之后才能進行merge的,而refs/heads 不需要