1. 史上最全 Git 圖文教程,沒有之一

        共 15108字,需瀏覽 31分鐘

         ·

        2024-07-29 07:43

        程序員的成長之路
        互聯(lián)網/程序員/技術/資料共享 
        關注


        閱讀本文大概需要 4 分鐘。

        來自:juejin.cn/post/7245176801491894333

        推薦一個程序員編程資料站:
        http://cxyroad.com

        tips:
        2024年IDEA最新激活方法教程,后臺回復:激活碼

        CSDN免登錄復制代碼插件下載:CSDN復制插件

        以下是正文。




        Git安裝

        安裝

        1.先去官網下載這個軟件, 準備安裝到本電腦中
        https://git-scm.com/
        2.根據(jù)自己電腦系統(tǒng)下載此軟件到本機
        Windows 系統(tǒng)直接下載 .exe 文件即可,macOS 系統(tǒng)使用 Homebrew 命令行安裝,終端輸入 git --version 確認安裝
        圖片
        3.默認選擇默認安裝路徑即可,如若想更改路徑,務必使用英文路徑
        4.對于 Windows 系統(tǒng),查看安裝是否成功: 在任意文件夾右鍵,查看是否有Git Base Here 選項,有就成功了
        圖片
        介紹
        Git 的三個區(qū)域:
        • 工作區(qū): 處理工作的區(qū)域
        • 暫存區(qū): 臨時存放的區(qū)域
        • 本地git倉庫: 最終的存放區(qū)域
        在文件夾的體現(xiàn)如下:
        • 工作區(qū): 在你電腦里看到的目錄
        • 暫存區(qū): 在.git文件夾內的index中 (二進制記錄)
        • 版本庫: 指的整個.git文件夾 (也認為是本地倉庫)
        在代碼中的體現(xiàn)如下:
        圖片

        Git使用

        官方文檔:教程鏈接[1]
        菜鳥教程:教程鏈接[2]
        Git配置
        安裝完 Git 之后,要做的第一件事就是設置你的用戶名和郵件地址。因為每一個 Git 提交都會使用這些信息
        命令格式如下:中文自己看情況換
        • git config: 固定命令,設置git相關配置
        • --global: 全局配置;一次配置,整機在使用git時都生效

        git config --global user.name 你的用戶名
        git config --global user.email 你的郵箱地址

        運行命令效果如下:
        圖片
        配置后,可以運行如下命令查看是否成功

        git config --list
        #如果信息太多,可以輸入 q 退出

        運行命令效果如下:
        圖片
        出現(xiàn)以上內容即為注冊成功。如果后續(xù)想要修改,只需要重新執(zhí)行一下命令即可
        文件右側標記
        一般使用 VSCode 打開一個包含git倉庫的文件夾時,會有這些標記
        圖片
        右側沒有標記的時候為未修改 或 此文件/文件夾,被git忽略不跟蹤變化
        • M:已修改(Modified) - 文件已被修改但還沒有被添加到暫存區(qū)
        • A:已添加(Added) - 文件已經被添加到暫存區(qū),但還沒有被提交
        • D:已刪除(Deleted) - 文件已經被刪除,并且已經被標記為刪除,但還沒有提交
        • R:已重命名(Renamed) - 文件已經被重命名,這也算作是一種修改,需要被添加到暫存區(qū)
        • C:已復制(Copied) - 文件已經被復制,這也算作是一種修改,需要被添加到暫存區(qū)
        • U:已更新但未融合(Updated but Unmerged) - 這表示一個文件已經被更新了,但在合并時發(fā)生了沖突,需要手動解決沖突后再標記為已解決
        Git基礎命令
        初始化空的Git倉庫
        新建一個文件夾或現(xiàn)有的文件夾并不是 git 倉庫,因為文件夾內不包含 .git 文件夾,沒有被 git 管理
        可以在新文件夾或現(xiàn)有文件夾,運行如下命令得到 .git 文件夾,初始化成功則可讓 git 開始準備管理

        # 初始化 git 倉庫, 產物: .git 文件夾 (所在文件夾"內"被管理)
        git init

        例如,在新文件夾中輸入git init命令用于初始化空的git版本庫
        圖片
        初始化空的 git 倉庫成功后,在項目文件夾中,開啟顯示隱藏文件,即可查看 .git 文件夾
        • 對于 Windows 系統(tǒng),在查看里面勾選隱藏的項目選項
        • 對于 macOS 系統(tǒng),使用快捷鍵Command + Shift + .切換隱藏文件顯示
        記錄更新到Git倉庫
        每當完成了一個階段的目標,想要記錄下它時,就將它提交到倉庫
        核心操作:工作區(qū)開發(fā)--->將修改后的文件添加到暫存區(qū)--->將暫存區(qū)的文件記錄到版本庫
        把工作區(qū)變化放到暫存區(qū)中,執(zhí)行如下命令

        # 將 index.html 添加到暫存區(qū)
        git add index.html

        # 將css目錄下一切添加到暫存區(qū)
        git add css

        如下命令,可以一次性把所有變化文件放入暫存區(qū)

        # .的意思是當前目錄下所有變化都暫存
        git add .

        把暫存區(qū)內容,提交到版本庫,命令如下(此處文字說明可以不加引號)

        git commit -m '提交的內容說明'

        過程圖示:
        圖片
        以上命令相當于存檔了一次,在版本庫中產生一次提交記錄并生成版本號
        本次存檔,不耽誤我們在工作區(qū) (項目文件夾) 下繼續(xù)編寫項目
        Git日志及狀態(tài)查看
        查看所有提交的日志記錄,命令如下

        git log

        運行命令效果如下:
        圖片
        當我們的日志越來越多,可能想要簡化查看,可以輸入如下命令
        --oneline:在一行顯示簡略信息

        git log --oneline

        運行命令效果如下:
        圖片
        如果改的代碼過多,忘記改過哪些了,可以運行如下命令來查看 git 倉庫變化,只能看未提交的所有變更的文件狀態(tài)

        git status

        運行命令效果如下:
        圖片
        暫存并再次提交,產生一次版本記錄

        git add .
        git commit -m '新建登錄頁面_和樣式'

        過程圖示:
        圖片
        Git版本回退
        時光機,回到過去~
        回退命令語法如下

        git reset --hard 版本號

        查看版本號(每次的版本號隨機生成)

        git log --oneline

        圖片
        嘗試回退到 477321b 這次記錄上

        git reset --hard 477321b

        觀察工作區(qū),回退成功
        圖片
        如果想要在回到最近一次提交的記錄,但發(fā)現(xiàn)git log看不到未來的記錄了,問題不大。輸入git reflog命令,可以查看 git 所有的操作記錄,包括你的reset記錄

        git reflog

        運行命令效果如下:
        圖片
        拓展命令:
        • git bash(終端)清屏:clear
        • git bash(終端)另起一頁:Ctrl + L
        Git忽略文件
        有的時候,我們某些文件或文件夾不想讓 git 進行跟蹤管理。這時候可以在 .git 文件夾同級目錄下新增.gitignore的忽略文件并寫入忽略規(guī)則(此處的文件名就是 .gitignore ,不是后綴)
        項目文件夾結構如下:
        圖片

        # .gitignore內容:
        password.txt

        其余用法:
        # 忽略文件夾
        css
        # 忽略文件夾下的某個文件
        css/index.js
        # 忽略文件夾下某類文件
        css/*.js

        根目錄新建 password.txt,查看 git 追蹤到了哪些變化

        git status

        運行命令效果如下:
        圖片
        發(fā)現(xiàn)只新增了.gitignore ,符合規(guī)則的都被忽略掉了
        .gitignore文件在項目中可以根據(jù)腳手架自動生成,無需自己編寫,當然如果你非要寫,以下是Vue官方自動生成的.gitignore文件代碼,可供復制使用

        # Logs
        logs
        *.log
        npm-debug.log*
        yarn-debug.log*
        yarn-error.log*
        pnpm-debug.log*
        lerna-debug.log*

        node_modules
        dist
        dist-ssr
        *.local

        # Editor directories and files
        .vscode/*
        !.vscode/extensions.json
        .idea
        .DS_Store
        *.suo
        *.ntvs*
        *.njsproj
        *.sln
        *.sw?

        Git分支
        分支本質
        分支其實就是一個叫HEAD的指針標記,每次代碼提交,此HEAD指針都會往后移動一次,保證指向的 (并且工作區(qū)里的) 都是最后一次提交
        例如:當我們輸入命令:git reset --hard a3bcab2,HEAD指針會移動,而且HEAD移動后,會影響工作區(qū)里的代碼
        創(chuàng)建分支
        • 創(chuàng)建分支命令如下

        # 創(chuàng)建分支
        git branch 分支名

        該命令創(chuàng)建分支后不會自動切換分支,我們可以運行命令查看現(xiàn)在這個 .git 版本庫里所有分支
        • 查看當前版本庫所有分支命令如下

        # 查看當前版本庫所有分支,綠色帶*代表現(xiàn)在所處的分支
        git branch

        運行命令效果如下:
        圖片
        • 手動切換到分支上

        # 切換分支命令
        git checkout 分支名

        運行命令效果如下:
        圖片
        第一次創(chuàng)建并切換到 reg 分支,你會發(fā)現(xiàn) master 分支上的所有代碼 (和當前節(jié)點所有提交記錄) 都被復制了過來 了,我們只需要在這個基礎上接著往后開發(fā)就行
        過程圖示:
        分支下開發(fā)流程
        我們現(xiàn)在就可以在當前 reg 分支下來編寫注冊頁面的邏輯代碼,例如新建reg.html文件,并隨便寫點內容。隨后暫存并提交一次,這次提交的記錄會出現(xiàn)在這里,如圖
        圖片
        以后在當前 reg 分支下開發(fā),就會在 reg 范圍內,每次提交產生一次版本記錄,不會影響到別的分支
        分支合并
        我們可以把分支里寫好的代碼,合并到主分支或其他分支上,步驟如下:
        首先,切換到你要合并到的目標分支上(以master主分支為例)

        # 切換分支
        git checkout master

        切換分支后,HEAD指針位置如下:
        圖片
        合并命令語法

        # 把目標分支名下的所有記錄, 合并到當前分支下
        git merge 目標分支名

        這里我們執(zhí)行命令git merge reg,執(zhí)行后效果如圖:
        圖片
        可見,reg 代碼提交記錄已經復制到了 master (主分支) 中
        分支刪除
        假如注冊功能開發(fā)完畢,代碼已經合并到 master 分支上,我們已經不需要 reg 分支
        命令如下

        git branch -d 分支名

        如果分支的修改沒有被合并到其他分支上,Git 會提示一個類似以下的錯誤信息:

        error: The branch 'branch_name' is not fully merged. If you are sure you want to delete it, run 'git branch -D branch_name'.

        在這種情況下,Git 建議你確認是否要刪除這個分支。如果你確定要刪除該分支并且不在乎丟失該分支的修改,你可以使用git branch -D <branch_name>命令來強制刪除該分支。但請注意,這樣會丟失掉分支上的未合并修改
        分支合并時的沖突問題
        在兩個分支修改了同一個文件并提交過,在合并的時候,就會產生沖突
        這里模擬一次簡單的沖突:
        • 在 master 分支下,修改login.html的某行代碼,并完成一次暫存提交
        圖片
        • 切換到 reg 分支下,也修改login.html的對應行代碼,并完成一次暫存提交
        圖片
        • 再切換回到 master 分支下,用合并命令,把 reg 分支下代碼和變化合并過來,不出意外就會出現(xiàn)沖突了
        圖片
        發(fā)生沖突后,VSCode界面
        圖片
        此時我們要進行抉擇:采用當前更改采用傳入更改、全部保留
        選擇保留方式后,需要再次暫存提交一次
        圖片
        此時結束沖突狀態(tài),變回正常狀態(tài)
        打印沖突合并后的日志記錄
        圖片
        總結:當我們合并遇到沖突了,應手動解決,然后暫存,提交一次即可
        Git分支流程圖詳解(拓展)
        HEAD頭指針,它指向當前所在的分支或者某個具體的提交記錄。每次提交會產生新的記錄master和HEAD會后移
        圖片
        以當前節(jié)點為基準創(chuàng)建新的分支 (包含之前的所有提交記錄),git branch reg 就會在當前的提交記錄上創(chuàng)建一個新的指針,名稱為reg
        圖片
        git checkout reg切換的是HEAD指針指向 (切換分支)
        圖片
        注冊頁面新建后,git add .添加到暫存區(qū),git commit -m 產生了一次提交記錄
        圖片
        注冊頁面的樣式新建后暫存提交,產生了一次提交記錄
        圖片
        合并分支,例如把 A 合并到 B上
        • git checkout B,切換到目標分支 B
        • git merge A,把 A 分支記錄合并到所在 B 分支下
        先切換到主分支git checkout master
        圖片
        合并reg分支git merge reg
        圖片
        在reg分支下,修改了index.html文件,并暫存提交,產生了記錄
        圖片
        切換到master分支,并修改index.html文件(同一個文件),暫存提交,產生了記錄
        圖片
        在master分支中,想要把reg合并過來。由于修改了同一個文件,會報錯,需要解決沖突
        圖片
        手動解決沖突后,會產生一個新的提交記錄
        圖片
        刪除reg分支,全部過程結束
        圖片
        Git遠程倉庫
        介紹
        遠程倉庫是指托管在因特網或其他網絡上的 Git 倉庫,可以存儲我們版本庫的所有記錄和存檔記錄
        遠程倉庫在團隊協(xié)作中發(fā)揮著重要的作用。它不僅可以充當備份存儲,保護你的代碼免受數(shù)據(jù)丟失的風險,還可以讓團隊成員之間輕松地共享代碼、查看代碼變更、進行代碼審查等
        圖片
        主流的遠程倉庫有 GitHub (gay hub)全球最大的同行交友社區(qū),以及服務器在國內的 gitee(碼云)。由于 GitHub 服務器在國外,方便起見,這里以碼云為例,供初學者參考,GitHub 流程與 gitee 類似
        注冊
        注冊登錄 gitee.com 網站以后,添加主郵箱為自己本地 git 倉庫設置的郵箱,注意一定要相同,否則無法正確提交 如果忘記了本地設置的郵箱地址:
        • 可以打開控制臺輸入 git config --list 重新查看郵箱地址
        • 當然也可以使用 git config --global user.email 你的郵箱地址重新覆蓋原來的郵箱地址
        郵箱設置界面不要勾選不公開我的郵箱地址,否則也無法正常提交
        圖片
        倉庫新建
        可以選擇創(chuàng)建一個遠程倉庫的項目 (可以多個),創(chuàng)建界面如下
        圖片
        勾選完成后選擇創(chuàng)建,創(chuàng)建后, 會得到一個遠程倉庫的地址鏈接,一般是以.git結尾的地址
        地址分為兩種最常用的兩種傳輸協(xié)議:
        • HTTPS協(xié)議: 需要輸入用戶名和密碼https://gitee.com/(userName)/(repositoryName).gitssh
        • SSH協(xié)議: 需要配置密鑰,可免密碼登錄[email protected]:userName/repositoryName.git
        選擇SSH路徑,界面如下
        圖片
        SSH配置
        我們可以在本機一次性配置 SSH 以后免密登錄,SSH 密鑰組成和作用如下:
        • 作用: 實現(xiàn)本地倉庫和 gitee 平臺之間免登錄的加密數(shù)據(jù)傳輸
        • 組成: id_rsa (私鑰文件,存放于客戶端的電腦中即可)、id_rsa.pub (公鑰文件,需要配置到 gitee 平臺中)
        私鑰加密的信息,只能通過公鑰解密。公鑰加密的信息,只能通過私鑰解密。安全性高!
        SSH 密鑰創(chuàng)建與使用步驟:
        • 先在本機生成一個密鑰 (以后也可以重新生成、重新配置),打開一個終端,輸入以下命令:

          ssh-keygen -t rsa -C "你注冊賬號的郵箱"

        • 連續(xù)敲擊 3 次回車,即可在C:\Users\用戶名文件夾.ssh目錄中生成id_rsaid_rsa.pub兩個文件

        • 使用 VSCode 打開id_rsa.pub文件,復制里面的文本內容

        • 粘貼配置到 碼云 -> 設置 -> ssh 公鑰 中即可

        • 如果為 mac ,可進入以下教程查看:mac獲取公鑰

        初始化空倉庫
        先給本地倉庫配置個遠程倉庫的地址, 建立倉庫之間的鏈接
        由于每次 push 操作都需要帶上遠程倉庫的地址,十分麻煩,我們可以給倉庫設置一個別名

        # 給遠程倉庫設置一個別名
        git remote add 倉庫別名 倉庫地址
        git remote add origin [email protected]:(username)/repository.git

        # 刪除 origin 這個別名
        git remote remove origin

        # 使用 -u 記錄 push 到遠端分支的默認值,將來直接 git push 即可
        git push -u 倉庫別名 分支名

        圖片
        下面為實際操作舉例:
        • 隨便新建一個項目文件夾,初始化 git,隨后在項目文件中隨便填充點內容,這里我新增一個.gitignore文件,隨后暫存提交到本地 git 庫
        圖片
        • 輸入以下命令:

        # 注意:這里的existing_git_repo是你的項目根路徑
        # 如果你是在項目文件夾開啟的終端,忽略此行
        cd existing_git_repo

        # 添加遠程倉庫關聯(lián),倉庫別名origin,可以隨意更改,后接ssh地址
        # 此處的ssh是自動生成的,可以去gitee空倉庫的代碼頁直接復制即可
        git remote add origin [email protected]:li-houyi/test-factory.git

        # 第一次推送到遠程時需要指定具體的分支,因為遠程倉庫并沒有這個分支
        # 使用 -u 記錄 push 到遠端分支的默認值,將來直接 git push 即可
        git push -u origin "master"

        • 出現(xiàn)此頁面即為成功:
        圖片
        注意:推送的本地倉庫一定要非空并且本地暫存提交過,不然會報錯!這點也很好理解,你傳個空的項目到一個空倉庫,這可不得給你報錯嗎
        • 推送成功后重新進入 gitee 倉庫頁面查看是否正確推送
        圖片
        空倉庫創(chuàng)建成功后可以在管理頁面將倉庫開源,當然也可以不設置開源(默認私有)
        克隆項目
        如果你想要從遠程倉庫克隆一份項目代碼到本地進行開發(fā),可以使用 git clone 命令

        git clone [options] <repository-url> [directory]
        # directory(可選)克隆后的本地倉庫所處的目錄名稱(默認創(chuàng)建與遠程倉庫名字相同的目錄)

        常見選項:
        • -b <branch> 或 --branch <branch> 指定要克隆的遠程倉庫的特定分支,它不會影響克隆操作所獲取的分支數(shù)量,而只是指定了默認要檢出的分支(不指定則默認克隆遠程倉庫的主分支)
        • --depth <depth> 指定克隆的深度,即只克隆指定數(shù)量的提交歷史
        • --single-branch: 僅克隆指定分支以及該分支上的歷史記錄,不下載其他分支
        • --recurse-submodules: 初始化并克隆子模塊的內容
        • -n 或 --no-checkout: 克隆后不立即檢出任何分支,保留 HEAD 指向原始倉庫的默認分支
        • -o <name> 或 --origin <name> 自定義遠程倉庫的別名。
        • -u <remote> <branch> 或 --set-upstream-to=<remote>/<branch> 設置追蹤關系,使得本地分支自動與指定的遠程分支關聯(lián)
        如果項目只有一個分支,那么以上代碼執(zhí)行完畢就已經克隆結束了(git clone 默認拉取 master 分支),不過實際開發(fā)中,并非只有一個分支,于是我們還需執(zhí)行以下步驟:
        • 在本地建分支,分支名與遠程分支名相同,查看遠程分支名使用git branch -r

        git checkout -b 對應遠程分支名

        • 拉取遠程分支 (不要在 master 分支直接拉取對應分支的代碼,切換到新建的分支)

        # 每次拉取都需要指定遠程倉庫名和分支名
        git pull 遠程倉庫名 分支名

        • 以上兩行命令可以合并寫做一行(創(chuàng)建并拉取遠程分支代碼)

        git checkout -b 分支名 origin/分支名

        • 拓展: 設置 git pull 默認拉取的分支(設置本地分支與遠程分支相關聯(lián))

        git branch --set-upstream-to=origin/遠程分支名 本地分支名

        Git遠程倉庫流程回顧
        Step1:
        圖片
        Step2:
        圖片
        Step3:
        圖片
        Step4:
        圖片

        Git常用命令總覽

        本命令默認遠程倉庫名為origin、默認遠程倉庫主分支名為master、<>為必填項,[]為可選項
        圖片
        <END>

        推薦閱讀:

        程序員都干過哪些很刺激的事情?

        ThreadLocal 不香了?ScopedValue才是王道?

            
        程序員在線工具站:cxytools.com

        推薦一個我自己寫的工具站:http://cxytools.com,專為程序員設計,包括時間日期、JSON處理、SQL格式化、隨機字符串生成、UUID生成、隨機數(shù)生成、文本Hash...等功能,提升開發(fā)效率。

        ?戳閱讀原文直達!                                  朕已閱 

        瀏覽 44
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 欧美3p一区二区三区 | 国产午夜电影网 | 国产黄片一区二区三区 | B站刺激战场直播韩版 | 四虎国产精品永久免费观看视频 |