<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>

          從 SVN 到 Git 開發(fā)實用命令總結

          共 4684字,需瀏覽 10分鐘

           ·

          2022-05-13 21:58

          關注Java學習之道一起成長,一起學習~

          本文轉(zhuǎn)載自公眾號“騰訊技術工程”?

          作者: ronhu,騰訊 IEG 客戶端開發(fā)工程師
          來源: https://mp.weixin.qq.com/s/ApEpvgTujk_aHLeD_2FPFw

          本文從 Git 與 SVN 的對比入手,介紹如何通過 Git-SVN 開始使用 Git,并總結平時工作高頻率使用到的 Git 常用命令。

          一、Git vs SVN

          Git 和 SVN 孰優(yōu)孰好,每個人有不同的體驗。

          Git 是分布式的,SVN 是集中式的

          這是 Git 和 SVN 最大的區(qū)別。若能掌握這個概念,兩者區(qū)別基本搞懂大半。因為 Git 是分布式的,所以 Git 支持離線工作,在本地可以進行很多操作,包括接下來將要重磅推出的分支功能。而 SVN 必須聯(lián)網(wǎng)才能正常工作。

          Git 復雜概念多,SVN 簡單易上手

          所有同時掌握 Git 和 SVN 的開發(fā)者都必須承認,Git 的命令實在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟練掌握,還必須掌握rebasemerge的區(qū)別,fetchpull的區(qū)別等,除此之外,還有cherry-picksubmodulestash等功能,僅是這些名詞聽著都很繞。

          在易用性這方面,SVN 會好得多,簡單易上手,對新手很友好。但是從另外一方面看,Git 命令多意味著功能多,若我們能掌握大部分 Git 的功能,體會到其中的奧妙,會發(fā)現(xiàn)再也回不去 SVN 的時代了。

          Git 分支廉價,SVN 分支昂貴

          在版本管理里,分支是很常使用的功能。在發(fā)布版本前,需要發(fā)布分支,進行大需求開發(fā),需要 feature 分支,大團隊還會有開發(fā)分支,穩(wěn)定分支等。在大團隊開發(fā)過程中,常常存在創(chuàng)建分支,切換分支的需求。

          Git 分支是指針指向某次提交,而 SVN 分支是拷貝的目錄。這個特性使 Git 的分支切換非常迅速,且創(chuàng)建成本非常低。

          而且 Git 有本地分支,SVN 無本地分支。在實際開發(fā)過程中,經(jīng)常會遇到有些代碼沒寫完,但是需緊急處理其他問題,若我們使用 Git,便可以創(chuàng)建本地分支存儲沒寫完的代碼,待問題處理完后,再回到本地分支繼續(xù)完成代碼。


          二、Git 核心概念

          Git 最核心的一個概念就是工作流。

          • 工作區(qū)(Workspace)是電腦中實際的目錄。
          • 暫存區(qū)(Index)類似于緩存區(qū)域,臨時保存你的改動。
          • 倉庫區(qū)(Repository),分為本地倉庫和遠程倉庫。

          從 SVN 切換到 Git,最難理解并且最不能理解的是暫存區(qū)和本地倉庫。熟練使用 Git 后,會發(fā)現(xiàn)這簡直是神設計,由于這兩者的存在,使許多工作變得易管理。

          通常提交代碼分為幾步:

          1. git add從工作區(qū)提交到暫存區(qū)
          2. git commit從暫存區(qū)提交到本地倉庫
          3. git pushgit svn dcommit從本地倉庫提交到遠程倉庫

          一般來說,記住以下命令,便可進行日常工作了(圖片來源于網(wǎng)絡):

          Git命令

          三、Git-SVN 常用命令

          本節(jié)命令針對使用 Git-SVN 的開發(fā)者,請務必掌握。

          若服務器使用的 SVN,但是本地想要體驗 Git 的本地分支,離線操作等功能,可以使用?Git-SVN功能。

          歡迎關注公眾號"Java學習之道",查看更多干貨!

          常用操作如下(圖片來源于網(wǎng)絡):

          Git-SVN
          #?下載一個?SVN?項目和它的整個代碼歷史,并初始化為?Git?代碼庫
          $?git?svn?clone?-s?[repository]

          #?查看當前版本庫情況
          $?git?svn?info

          #?取回遠程倉庫所有分支的變化
          $?git?svn?fetch

          #?取回遠程倉庫當前分支的變化,并與本地分支變基合并
          $?git?svn?rebase

          #?上傳當前分支的本地倉庫到遠程倉庫
          $?git?svn?dcommit

          #?拉取新分支,并提交到遠程倉庫
          $?svn?copy?[remote_branch]?[new_remote_branch]?-m?[message]

          #?創(chuàng)建遠程分支對應的本地分支
          $?git?checkout?-b?[local_branch]?[remote_branch]

          四、初始化

          從本節(jié)開始,除特殊說明,以下命令均適用于 Git 與?Git-SVN

          #?在當前目錄新建一個Git代碼庫
          $?git?init

          #?下載一個項目和它的整個代碼歷史?[Git?only]
          $?git?clone?[url]

          五、配置

          #?列舉所有配置
          $?git?config?-l

          #?為命令配置別名
          $?git?config?--global?alias.co?checkout
          $?git?config?--global?alias.ci?commit
          $?git?config?--global?alias.st?status
          $?git?config?--global?alias.br?branch

          #?設置提交代碼時的用戶信息
          $?git?config?[--global]?user.name?"[name]"
          $?git?config?[--global]?user.email?"[email?address]"

          Git 用戶的配置文件位于?~/.gitconfig

          Git 單個倉庫的配置文件位于?~/$PROJECT_PATH/.git/config

          六、增刪文件

          #?添加當前目錄的所有文件到暫存區(qū)
          $?git?add?.

          #?添加指定文件到暫存區(qū)
          $?git?add???...

          #?添加指定目錄到暫存區(qū),包括其子目錄
          $?git?add?


          #?刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)
          $?git?rm?[file1]?[file2]?...

          #?停止追蹤指定文件,但該文件會保留在工作區(qū)
          $?git?rm?--cached?[file]

          #?改名文件,并且將這個改名放入暫存區(qū)
          $?git?mv?[file-original]?[file-renamed]

          把文件名 file1 添加到 .gitignore 文件里,Git 會停止跟蹤 file1 的狀態(tài)。

          七、分支

          #?列出所有本地分支
          $?git?branch

          #?列出所有本地分支和遠程分支
          $?git?branch?-a

          #?新建一個分支,但依然停留在當前分支
          $?git?branch?[branch-name]

          #?新建一個分支,并切換到該分支
          $?git?checkout?-b?[new_branch]?[remote-branch]

          #?切換到指定分支,并更新工作區(qū)
          $?git?checkout?[branch-name]

          #?合并指定分支到當前分支
          $?git?merge?[branch]

          #?選擇一個?commit,合并進當前分支
          $?git?cherry-pick?[commit]

          #?刪除本地分支,-D?參數(shù)強制刪除分支
          $?git?branch?-d?[branch-name]

          #?刪除遠程分支
          $?git?push?[remote]?:[remote-branch]

          八、提交

          #?提交暫存區(qū)到倉庫區(qū)
          $?git?commit?-m?[message]

          #?提交工作區(qū)與暫存區(qū)的變化直接到倉庫區(qū)
          $?git?commit?-a

          #?提交時顯示所有?diff?信息
          $?git?commit?-v

          #?提交暫存區(qū)修改到倉庫區(qū),合并到上次修改,并修改上次的提交信息
          $?git?commit?--amend?-m?[message]

          #?上傳本地指定分支到遠程倉庫
          $?git?push?[remote]?[remote-branch]

          九、拉取

          #?下載遠程倉庫的所有變動?(Git?only)
          $?git?fetch?[remote]

          #?顯示所有遠程倉庫?(Git?only)
          $?git?remote?-v

          #?顯示某個遠程倉庫的信息?(Git?only)
          $?git?remote?show?[remote]

          #?增加一個新的遠程倉庫,并命名?(Git?only)
          $?git?remote?add?[remote-name]?[url]

          #?取回遠程倉庫的變化,并與本地分支合并,(Git?only),?若使用?Git-SVN,請查看第三節(jié)
          $?git?pull?[remote]?[branch]

          #?取回遠程倉庫的變化,并與本地分支變基合并,(Git?only),?若使用?Git-SVN,請查看第三節(jié)
          $?git?pull?--rebase?[remote]?[branch]

          十、撤銷

          #?恢復暫存區(qū)的指定文件到工作區(qū)
          $?git?checkout?[file]

          #?恢復暫存區(qū)當前目錄的所有文件到工作區(qū)
          $?git?checkout?.

          #?恢復工作區(qū)到指定?commit
          $?git?checkout?[commit]

          #?重置暫存區(qū)的指定文件,與上一次?commit?保持一致,但工作區(qū)不變
          $?git?reset?[file]

          #?重置暫存區(qū)與工作區(qū),與上一次?commit?保持一致
          $?git?reset?--hard

          #?重置當前分支的指針為指定?commit,同時重置暫存區(qū),但工作區(qū)不變
          $?git?reset?[commit]

          #?重置當前分支的HEAD為指定?commit,同時重置暫存區(qū)和工作區(qū),與指定?commit?一致
          $?git?reset?--hard?[commit]

          #?新建一個?commit,用于撤銷指定?commit
          $?git?revert?[commit]

          #?將未提交的變化放在儲藏區(qū)
          $?git?stash

          #?將儲藏區(qū)的內(nèi)容恢復到當前工作區(qū)
          $?git?stash?pop

          十一、查詢

          #?查看工作區(qū)文件修改狀態(tài)
          $?git?status

          #?查看工作區(qū)文件修改具體內(nèi)容
          $?git?diff?[file]

          #?查看暫存區(qū)文件修改內(nèi)容
          $?git?diff?--cached?[file]

          #?查看版本庫修改記錄
          $?git?log

          #?查看某人提交記錄
          $?git?log?--author=someone

          #?查看某個文件的歷史具體修改內(nèi)容
          $?git?log?-p?[file]

          #?查看某次提交具體修改內(nèi)容
          $?git?show?[commit]

          寫在后面

          從 SVN 到 Git,除本文列舉的基礎概念和常用命令,包括但不限于如何從 SVN 服務器切換到 Git 服務器分支模型管理等也非常重要。本文篇幅有限,針對沒有介紹到但很重要的知識點會列舉到參考資料里,希望作為本文的延伸閱讀。

          參考資料

          1. Git Pro Books?Git 權威指南
          2. Git 和 SVN 協(xié)同模型?詳細介紹 Git-SVN 協(xié)同模型的使用原理與注意點
          3. 常用 Git 命令清單?總結得非常詳細的清單,與本文部分內(nèi)容重合并互補
          4. SVN 和 Git 在日常使用中的明顯差異?介紹了 Git 和 SVN 的區(qū)別,可作為本文的延伸閱讀
          5. git-flow 的工作流程?通俗易懂的介紹了 git-flow 的基礎工作流程
          6. SVN 遷移到 Git?服務器從 SVN 遷移到 Git 的具體操作方法

          -- END?--

          -??| 更多精彩文章 -



          ← 左右滑動與Java學習之道互動交流 →

          加我微信,交個朋友
          長按/掃碼添加↑↑↑

          瀏覽 18
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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网址 | 色婷婷在线视频观看免费 | 国产一区二区三区四区久久 | 色五月天综合 | 日韩无码成人影片 |