Git設計理念和使用教程

剛開始使用git的時候,總想拿git來和cvs或者svn來作對比,但不久后發(fā)現(xiàn)這個想法本身就是錯的,git完全就是另外一種物種,一種本屬于未來的物種。它的對象存儲方式,快照,分支等,都是完全不同的。
相信每個使用git的人,都想了解git內存文件的存儲對象,快照,提交在歷史和分支等內部的原理。都想知道它是否有傳說中的那么強大?

Git相比較其他版本控制系統(tǒng)最大的優(yōu)勢無異于:
1、底層文件存儲系統(tǒng)
2、分布式的特性

git基本原理

需要搞清楚以下名詞的概念
工作區(qū)(Workspace):就是你在電腦里能看到的目錄
暫存區(qū)(Index/Stage):所有變動的文件,Git 都記錄在一個區(qū)域,叫做"暫存區(qū)"
本地倉庫(Repository):本地的代碼倉庫,不用上網(wǎng),純本地管理。
遠程倉庫(Remote):線上倉庫,本地倉庫某個版本在線上的鏡像存在。

常用命令

  • 初始化
    git init
    git remote add origin #遠程倉庫地址
  • 添加文件到版本庫
    git add <file>/. 未暫存區(qū) >> 已暫存區(qū)
    git commit -m '版本說明' 已暫存區(qū) >> 本地倉庫
  • 查看倉庫狀態(tài)
    git status 查看工作目錄中所有文件的狀態(tài)
    git log 命令可以顯示所有提交過的版本信息
    git reflog 可以查看所有分支的所有操作記錄(包括已經(jīng)被刪除的 commit 記錄和 reset 的操作)
  • 暫存
    git stash git stash作用的范圍包括工作區(qū)和暫存區(qū)中的內容,也就是說沒有提交的內容都會保存至堆棧中。后續(xù)可以在某個分支上恢復出堆棧中的內容。
    git stash clear 清空緩存
    git stash pop 釋放緩存到當前分支
  • 撤銷
    git reset --hard HEAD 回退到當前版本,清空暫存區(qū)和工作區(qū)的所有修改;
    git reset --hard HEAD~ 回退到上一個版本,清空暫存區(qū)和工作區(qū)的所有修改;
    git reset --hard 1094a 回退到某個指定版本,清空暫存區(qū)和工作區(qū)的所有修改;
    git checkout -- <file> 撤銷某文件的修改。
    1.一種是自修改后還沒有被放到暫存區(qū),則回到和版本庫一樣的狀態(tài);
    2.一種是已經(jīng)添加到暫存區(qū)后,又作了修改,則回到添加到暫存區(qū)后的狀態(tài)。
    git checkout commid_id src/main/main.c 回退某文件到指定版本,注意:/
  • 提交到遠程倉庫
    git push origin master -f強制執(zhí)行
    git push origin master -u-u后,以后執(zhí)行可以簡化為git push
  • 從遠程倉庫更新本地倉庫
    git pull origin master -f強制執(zhí)行
  • 分支
    git checkout -b dev 創(chuàng)建dev分支,然后切換到dev分支。(等于下面兩步)
    1、git branch dev 創(chuàng)建dev分支
    2、git checkout dev 切換到dev分支
    git branch查看所有分支
    git branch -d dev 刪除分支
    git checkout master從當前分支切換回master分支
    git merge dev 把dev分支的工作成果合并到master分支上(需要處于master分支上時執(zhí)行)
  • 常見沖突(conficts)
    場景一 (這種場景比較多)
    user0 有新提交
    user1 沒有pull -> 寫新代碼 -> pull -> 提示有沖突
    解決辦法
    -> stash save(把自己的代碼隱藏存起來) -> 重新pull -> stash pop(把存起來的隱藏的代碼取回來 ) -> 代碼文件會顯示沖突 -> 右鍵選擇edit conficts,解決后點擊編輯頁面的 mark as resolved -> commit&push
    場景二
    user0 有新提交
    user1 沒有pull -> 寫新代碼 -> commit&push -> 提示有沖突
    解決辦法
    -> pull -> 代碼文件會顯示沖突 -> 右鍵選擇edit conficts,解決后點擊編輯頁面的 mark as resolved -> commit&push

圖形化軟件推薦:Source Tree

創(chuàng)建倉庫兩種方式

一、從遠程倉庫克隆到本地倉庫

  1. 在碼云新建一個倉庫,命名為GitTest,里面默認生成兩個說明文件:README.en.md、README.md
  2. 從遠端倉庫clone到本地,git clone https://gitee.com/***/GitTest.git

二、從本地倉庫Push到遠程倉庫

  1. 本地初始化一個項目,執(zhí)行git init初始化。會在當前目錄中生成一個.git隱藏目錄,用于記錄代碼變化。
  2. 關聯(lián)遠程倉庫,git remote add origin https://gitee.com/***/GitTest.git

設置用戶名和郵箱
git config --global user.name "你的名字或昵稱"
git config --global user.email "你的郵箱"

3、設置好用戶名和郵箱,執(zhí)行首次提交

git add .
git commit -m "第一次提交"
git push origin master

參考資料
提交第一行代碼
Git教程 - 廖雪峰的官方網(wǎng)站


只下載子文件夾代碼

git init test && cd test     //新建倉庫并進入文件夾
git config core.sparsecheckout true //設置允許克隆子目錄
echo 'tt*' >> .git/info/sparse-checkout //設置要克隆的倉庫的子目錄路徑   //空格別漏
git remote add origin git@github.com:mygithub/test.git  //這里換成你要克隆的項目和庫
git pull origin master    //下載

git學習之git clone 克隆或下載一個倉庫單個文件夾


創(chuàng)建忽略文件.gitignore**

git base中運行vim .gitignore,創(chuàng)建.gitignore文件,可以設置哪些文件/文件夾不需要加入到倉庫。
保存文件:1、esc、2、:wq

micro-cloud/
QT客戶端/
數(shù)據(jù)庫/
文檔/

WEB前臺/.DS_Store
WEB前臺/node_modules/
WEB前臺/dist/main.index
WEB前臺/dist/static
WEB前臺/npm-debug.log*
WEB前臺/yarn-debug.log*
WEB前臺/yarn-error.log*
WEB前臺//test/unit/coverage/
WEB前臺//test/e2e/reports/
WEB前臺/selenium-debug.log

# Editor directories and files
WEB前臺/.idea
WEB前臺/.vscode
WEB前臺/*.suo
WEB前臺/*.ntvs*
WEB前臺/*.njsproj
WEB前臺/*.sln

.gitignore
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、Git的簡介 1.1.什么是git?git是一款開源的分布式版本控制工具,在世界上所有的分布式版本控制工具中,...
    IIronMan閱讀 1,960評論 0 12
  • Git 基礎 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 16,196評論 5 147
  • Git 命令行學習筆記 Git 基礎 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來...
    sunnyghx閱讀 4,151評論 0 11
  • 在讀書吧的日子充滿激情與歡樂,轉眼就要結業(yè)啦。 回首這21天,我收獲滿滿。 群里氛圍好無廣告,同學...
    鄧云川閱讀 714評論 0 0
  • 就像所有的節(jié)日一樣,農(nóng)歷的正月初一充滿了節(jié)日的氣氛。在老家,正月初一事兒好多。小小年紀很期待。 穿新衣 正月初一,...
    wwling2001閱讀 422評論 0 1

友情鏈接更多精彩內容