git 工作原理 shell應用

1.git工作原理

.git是什麼

開源的分佈式版本控制系統,去中心化。
大小項目均可以靈活管理,參與開發人員比較靈活。

Linux的代碼管理工具BitKeeper不適合開源社區,故Torvalds推出了GIT。

.工作架構

.工作流程圖


.分支管理
    git的分支只要不提交合並,對別人沒任何影響。
    svn的分支是完整的目錄,你改了svn的分支,所有人的分支都隨你而變。
    分支命名:git的分支在本地和遠程是自由匹配,而svn是全局統一的。
.內部數據存儲方式
        git爲元數據統一存儲管理,老vcs是以文件爲按文件來存儲。

.Git與GitHub關係
        git是一個分佈式的版本控制系統,最初應用在Linux源碼協同開發中。
        GitHub是一個基於git的項目託管平臺,提供web界面,你可以在上面創建資源倉庫來存放你的項目。
        現已發展成爲全球最大的開源社區平臺。

 2.git shell  應用

         .git 安裝
一般的linux發行套件都是自帶git工具的,如果不帶,則使用yum安裝即可

yum install git

..git配置
    用戶名和郵箱配置,方便與倉庫間做交互時候標記來源,即自報家門
    以下爲全局配置,所有用戶均使用該配置
git config --global user.name "YourName"     //zhuzhu
git config --global user.email "YourEmail"    //[email protected]

.git命令
       創建本地版本庫
       選擇自己的linux主機
cd ~   //進入到家目錄
mkdir local_repo     //創建文件夾,作爲版本倉庫的目標目錄
git init            //創建本地git倉庫

目錄變化如圖:

創建待git管理的文件
cd ~/local_repo
touch input.txt

echo "i am a new file,i will be added to git vcs" > input.txt

將文件添加到代碼庫
git add input.txt               //提交文件到緩存區

git commit -m "first commit"    //提交文件到本地庫

查看版本倉庫狀態

git status

假如提交完成後,沒有任何修改,則結果如圖:

假如我修改了之前的input.txt

查看具體的差異點
比較-工作區和緩存區差異

git diff working_file_path

比較緩存區和本地倉庫差異

比較工作區和本地倉庫差異

提交之前的變化文檔input.txt  
git add input.txt

git commit -m "second commit" input.txt

再次使用git diff檢查文件的三個不同狀態之間的差異

*注意:在沒有提交前,所有的改動都只是在工作目錄中進行,只有再次提交後,工作目錄、緩衝區、本地倉庫才能同步

git日誌查看

git log


查看兩個版本之間文件的差異


查看所有分支的所有操作記錄


版本回退

回退到當前版本的上一個版本

git reset --hard HEAD^    //回到當前版本的上一個版本
git reset --hard HEAD@{1}   //回退到指定版本


撤銷修改
應用場景1:工作空間文件已修改,但沒有add到緩存區。
手動修改還原已修改的文件。

用版本庫中的復原工作區的文件

git checkout -- filepath     //將版本庫中的指定文件覆蓋掉工作區中的指定文件

應用場景2:工作空間已修改,已添加到緩存區,但沒有添加到版本庫
git reset HEAD filepath    //將該filepath對應的緩存區的內容刪除掉,對工作區沒有任何改動。相當於回到了應用場景1。
再按場景1的方式修改,即手動修改或者是git checkout -- filepath

 
應用場景3:工作空間已修改,已添加到緩存區,且已添加到版本庫,但沒有推到遠程庫。
直接按版本回退來處理即可,
git reset --hard HEAD^    //回到當前版本的上一個版本
git reset --hard HEAD@{1}   //回退到指定版本

應用場景4:rm -rf誤刪除某文件的還原
rm -rf filepath    //在工作目錄中誤刪除某個文件
git checkout -- filepath    //將版本庫中的文件還原到誤刪除的文件中。


應用場景5:git rm誤刪除git文件的還原,並沒有commit提交
git reset HEAD filepath   //將該文件在緩存區的刪除操作移除掉

git checkout -- filepath    //從緩存區移除對該文件操作後,即可按應用場景4的操作還原。

遠程倉庫操作
        關聯遠程倉庫
            在gitlab web界面中,創建自己的項目。

執行本地到遠程的關聯
模板: git remote add 遠程倉庫名 [url]
例子:git remote add origin http://xxx

查看遠程倉庫信息
git remote      //顯示遠程倉庫的關聯分支

git remote -v   //查看遠程倉庫的詳細信息,顯示對遠程的操作權限, fetch和push權限

從遠程庫同步數據到本地庫(協作開發)
git clone [url]

本例:git clone http://xxx

今天先更到這,有時間繼續補更










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章