<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 15108字,需瀏覽 31分鐘

           ·

          2024-07-29 07:43

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


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

          來自:juejin.cn/post/7245176801491894333

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

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

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

          以下是正文。




          Git安裝

          安裝

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

          # 初始化 git 倉庫, 產(chǎn)物: .git 文件夾 (所在文件夾"內(nèi)"被管理)
          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ū)內(nèi)容,提交到版本庫,命令如下(此處文字說明可以不加引號)

          git commit -m '提交的內(nèi)容說明'

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

          git log

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

          git log --oneline

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

          git status

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

          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 ,不是后綴)
          項目文件夾結(jié)構(gòu)如下:
          圖片

          # .gitignore內(nèi)容:
          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分支
          分支本質(zhì)
          分支其實就是一個叫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文件,并隨便寫點內(nèi)容。隨后暫存并提交一次,這次提交的記錄會出現(xiàn)在這里,如圖
          圖片
          以后在當前 reg 分支下開發(fā),就會在 reg 范圍內(nèi),每次提交產(chǎn)生一次版本記錄,不會影響到別的分支
          分支合并
          我們可以把分支里寫好的代碼,合并到主分支或其他分支上,步驟如下:
          首先,切換到你要合并到的目標分支上(以master主分支為例)

          # 切換分支
          git checkout master

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

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

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

          • 粘貼配置到 碼云 -> 設置 -> 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,隨后在項目文件中隨便填充點內(nèi)容,這里我新增一個.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èi)容
          • -n 或 --no-checkout: 克隆后不立即檢出任何分支,保留 HEAD 指向原始倉庫的默認分支
          • -o <name> 或 --origin <name> 自定義遠程倉庫的別名。
          • -u <remote> <branch> 或 --set-upstream-to=<remote>/<branch> 設置追蹤關系,使得本地分支自動與指定的遠程分支關聯(lián)
          如果項目只有一個分支,那么以上代碼執(zhí)行完畢就已經(jīng)克隆結(jié)束了(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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人莫人人干人人操 | 亚洲色区在线 | 国产综合AV在线 | 日本欧美中文 | 久久久久偷拍 |