1、Git瞭解:git
1. 分佈式版本控制系統,每個人的本地電腦上的都是一個完整的版本庫,即相對本身來講是本地版本庫,相對別人來講是一個遠程版本庫。github
2. 在本地版本庫中基本操做流程爲:app
建立本地版本庫—》在本地版本庫中新增、修改、刪除文件及內容—》將操做後的文件有工做去暫存(add)到暫存區—》將暫存區中的文件一併提交(commit)到本地版本庫中eclipse
3. 與遠程庫相關聯的操做:ssh
克隆遠程庫版本到本地庫中—》在本地庫中進行本地庫中的各類操做—》將本地庫中的版本推送到遠程庫中的對應的版本上(推送失敗及有衝突需解決,解決步驟:pull拉去最近的版本庫,並進行合併,合併衝突則解決衝突,最近將解決後的文件再次推送到遠程庫中)分佈式
4. Git相關:工具
Git只是一個版本管理工具,而相應的gitbut和bitbucket是一個版本管理的平臺,通常全部正式的各個版本都在gitbut/bitbucket上進行管理。學習
經過git將須要的版本分支從該平臺上下載下來。前提是須要有一個gitbut/bitbucket帳號(裏面應該須要一個郵箱地址),經過git從gitbut/bitbucket上克隆代碼,因爲二者之間的數據傳輸是經過ssh加密的,因此須要配置進行祕鑰和公鑰的配置:ui
(1)、公鑰祕鑰生成(首次使用須要本身生成):加密
命令中輸入命令:ssh-keygen -t rsa -C 「本身Git上設置的郵箱」
在當前目錄下生成目錄.ssh,該目錄下有id_rsa(私鑰)和id_rsa.pub(公鑰)文件
在gitbut/bitbucket上對應的位置添加公鑰
(祕鑰須要在可視化工具sourcetree或者安裝了Git插件的eclipse中添加)
2、Git安裝及準備工做:
1. 選擇32/64位對應版本安裝,基本上傻瓜式安裝,安裝完後在。。。
2. 設置我的用戶和郵箱,命令爲:
git config --global user.name 「填寫我的用戶名」
git congit --global user.email 「填寫我的郵箱」
3、Git具體命令操做:
1. 建立版本號......算了,考拉上身了不寫了......就以操做流程順序排列到四中的經常使用命令中,以這些命令爲主線貫穿一下Git的學習及基本操做
4、經常使用命令總結:
一、本地倉庫操做命令:
mkdir :mkdir test (在當前目錄下建立一個test文件夾)
pwd :pwd (顯示當前目錄的路徑)
git :git init (把當前的目錄變成能夠管理的Git倉庫,生成隱形.git文件)
git add xx :git add test.txt(把text.txt文件添加到暫存區去)
git commit -m 「提交文件的描述」:將暫存區中的文件提交到本地倉庫
git status :查看本倉庫的狀態(未暫存的文件,暫存未提交的文件等)
git diff test.txt:查看test.txt文件修改了那些內容(只針對修改後還沒添加到暫存區的文件)
git log :查看當前用戶的提交的歷史記錄
git reset --hard HEAD^ 或者 git reset --hard HEAD~:回退到上一個版本
git reset --hard HEAD^^:回退到上上一個版本
git reset --hard HEAD~100:回退到第100個前的版本
cat text.txt:查看test.txt文件的內容
git reflog:查看全部的歷史記錄的版本號id(包括之前已經回退的)
git checkout -- test.txt :還原(或叫作丟棄)工做區(即修改後的文件尚未添加到暫存區中的狀態)中的修改
rm test.txt :刪除test文件,可是沒有添加到暫存區中(須要經過命令git add test.txt添加到暫存區中)
git checkout test.txt:恢復刪除的test.txt文件(只針對刪除後沒有添加到暫存區中的文件)
git rm test.txt :刪除test文件,而且添加到暫存區
2. 與遠程倉庫操做的命令:
(1).添加遠程庫:
git remote add origin http://github.com/www_test_git/testgit01.git(將本地庫添加到空的遠程庫上)
git push -u origin master (因爲遠程庫是空的,咱們第一次推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令,即:git push origin master)
(2).克隆遠程庫及與遠程庫的一些
git clone http://github.com/www_test_git/testgit01.git (將testgit01倉庫克隆到本地)
git branch(查看分支狀態,即該倉庫都有哪些分支,當前是在哪一個分支上)
git branch dev(建立dev分支,注:其中新建立的dev分支內容繼承於當前所在分支,若在文件夾裏新增一個文件,則不管切到哪一個分支上都能看到,只有將新建的文件添加提交到當前的分支上時,在切換到另外一個分支時,該新增的文件將消失,只存在於提交的那個分支上。)
git checkout dev(從當前分支切換到dev分支)
git checkout -b dev(建立並切換到dev分支上)
git merge dev (在master分支下進行該操做即將dev分支合併到master分支上,即將dev分支合併到當前分支)
git branch -d dev(在其餘分支下刪除dev分支)
git stash(隱藏當前分支的修改,不管當前分支是沒添加到暫存區仍是未提交,都先隱藏掉,不顯示,去進行其餘的任何操做)
git stash apply(切換到須要顯示隱藏內容的分支上,用該命令顯示出隱藏內容,可是該內容還在隱藏的空間中存在,可經過git stash drop 命令刪除,可經過git stash list查看隱藏的內容還有多少)
git stash drop (刪除隱藏的內容)
git stash list(查看隱藏的內容還有哪些)
===========遠程庫信息=============:
git remote (查看遠程庫的信息)
git remote -v(查看遠程庫的詳細信息)
git push origin master(將本地的master分支推送到遠程庫中的origin分支上,其中,該操做須要在當前是master分支上進行,對於本地庫中的主分支叫master,對於遠程庫中的主分支叫origin。 若將本地庫中的dev分支推送到遠程庫中的origin分支上則:git push origin dev)
git checkout -b dev origin/dev(遠程庫origin主分支對應有一份分支dev,可在origin對應本地的master主分支下克隆出dev分支)
git pull(拉去最新分支內容,若推送有衝突,是由於本身和其餘人改了同一個文件,別人已經更新推送到遠程庫中,需咱們先拉取最新的而後解決衝突,在推送上去)
(3).多人協做完成文件提交到同一個遠程庫中時,通常步驟:
A、 首先,能夠試圖用git push origin branch-name推送本身的修改.
B、 若是推送失敗,則由於遠程分支比你的本地更新早,須要先用git pull試圖合併。
C、若是合併有衝突,則須要解決衝突,並在本地提交。再用git push origin branch-name推送。
三、git遠程倉庫遷移
(1)、只遷移一個分支狀況:即將該庫clone下來,而後將某個分支直接推送到新庫便可
(2)、遷移該庫的全部分支狀況:
第一步:將庫克隆到本地(其中--mirror 或者--base的方式不包含工做區,只有.git文件,鏡像文件,
ssh://git@rdgit.travelsky.com:7999/fgui/afdc.git爲原git庫地址)
git clone --mirror ssh://git@rdgit.travelsky.com:7999/fgui/afdc.git
第二步:進入到本地庫中
cd afdc.git
第三步:爲本地庫項目從新設置遠程git庫地址(其中,ssh://git@rdgit.travelsky.com:7999/catl/testall.git爲新庫地址)
git remote set-url origin ssh://git@rdgit.travelsky.com:7999/catl/testall.git
第四步:推送到遠程倉庫上(其中,-f爲強推操做,通常不推薦使用)
git push -f origin