<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        

      Git使用

      Git

      Git是一個分布式版本控制工具,用來管理多人寫作的代碼。同時也是一個內容管理系統。

      Git與SVN的區別:

      • Git是分布式的,svn不是。這是最核心的區別
      • Git把內容按元數據方式存儲,而SVN是按文件:所有的資源控制系統都是把文件的原信息隱藏在一個類似.svn .cvs等的文件夾里
      • Git分支和SVN分支的不同:分支在SVN中一點都不特別,其實他就是版本庫中的另外一個目錄
      • Git沒有一個全局的版本號,而SVN有
      • Git的內容完整性要優于SVN:Git的內容存儲使用的是SHA-1哈希算法,這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞

      1、Git安裝

      Windows平臺上的安裝,到官網https://gitforwindows.org/,下載安裝包,一路確認,完成安裝。

      安裝完成后,右鍵git bash here,可以使用命令行的git工具(自帶SSH客戶端)。

      Git配置

      Git提供了一個叫做git config的工具,專門用來配置或讀取相應的工作變量。

      這些環境變量,決定了Git在各個環節的具體工作方式和行為。這些變量可以存放在三個不同的地方:

      1. /etc/gitconfig 文件:系統中對所有用戶都普遍使用的配置。若使用git config --system選項,讀寫的就是這個文件 D:\smy_software\git\Git\etc\gitconfig。
      2. ~/.gitconfig:用戶目錄下的配置文件只適用于該永固。若使用git config --global選項,讀寫的就是這個文件。C:\Users\10170\.gitconfig
      3. 當前項目的Git目錄中的配置文件(也就是工作目錄中的/.git/config文件):這里的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以.git/config里的配置會覆蓋/etc/gitconfig中的同名變量。

      項目路徑/.git/config文件配置如下:

      [core]
      	repositoryformatversion = 0
      	filemode = false
      	bare = false
      	logallrefupdates = true
      	symlinks = false
      	ignorecase = true
      [remote "origin"]
      	url = http://項目地址.git
      	fetch = +refs/heads/*:refs/remotes/origin/*
      [branch "master"]
      	remote = origin
      	merge = refs/heads/master
      
      

      因為我使用過git config --global 命令配置過用戶信息,所以這里使用的是2中的用戶信息,這個文件里只記錄了倉庫的配置信息。

      用戶目錄/.gitconfig配置信息

      [user]
      	email = 郵箱
      	name = 用戶名
      [core]
      	autocrlf = false
      

      在 Windows 系統上,Git 會找尋用戶主目錄下的 .gitconfig 文件。主目錄即 $HOME 變量指定的目錄,一般都是 C:\Documents and Settings\$USER。

      此外,Git 還會嘗試找尋 /etc/gitconfig 文件,只不過看當初 Git 裝在什么目錄,就以此作為根目錄來定位。

      配置用戶信息

      # 配置個人的用戶名稱和電子郵件地址
      git config --global user.name "xxx"
      git config --global user.email xxx@yy.com
      

      如果使用了 --global選項,那么更改的配置文件就是位于用戶主目錄下的./gitconfig文件,以后所有的項目都會默認使用這里配置的用戶信息。

      如果要在某個特定的項目中使用其他名字或者電郵,只要去掉--global選項重新配置即可,新的設定保存在當前項目的 .git/config 文件里。

      適用于工作項目和個人項目分開的場景。例如,在xxx/A目錄我使用github賬號遠程我的github倉庫,在xxx/B目錄使用gitLab賬號遠程公司的gitLab倉庫。

      差異分析工具

      經常用在解決合并沖突時使用差異分析工具。可以使用如下命令配置

      # 改用vimdiff
      git config --global merge.tool vimdiff
      

      Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的輸出信息。

      查看配置信息

      檢查已有的配置信息,可以使用如下命令

      git config --list
      

      注意:在idea中的終端中運行這個命令輸出的信息是不完全的,需要在git bash中運行這個才可以看到完整的配置信息。

      2、Git工作流程

      一般工作流程如下:

      • 克隆 Git 資源作為工作目錄。
      • 在克隆的資源上添加或修改文件。
      • 如果其他人修改了,你可以更新資源。
      • 在提交前查看修改。
      • 提交修改。
      • 在修改完成后,如果發現錯誤,可以撤回提交并再次修改并提交。

      如圖所示
      Git工作流程

      3、Git原理

      基本概念

      我們先來理解下 Git 工作區、暫存區和版本庫概念:

      • 工作區:就是你在電腦里能看到的目錄。
      • 暫存區:英文叫 stage 或 index。一般存放在 .git 目錄下的 index 文件(.git/index)中,所以我們把暫存區有時也叫作索引(index)。
      • 版本庫:工作區有一個隱藏目錄 .git,這個不算工作區,而是 Git 的版本庫。

      三個區的關系

      • 圖中左側為工作區,右側為版本庫。在版本庫中標記為 "index" 的區域是暫存區(stage/index),標記為 "master" 的是 master 分支所代表的目錄樹。
      • 圖中我們可以看出此時 "HEAD" 實際是指向 master 分支的一個"游標"。所以圖示的命令中出現 HEAD 的地方可以用 master 來替換。
      • 圖中的 objects 標識的區域為 Git 的對象庫,實際位于 ".git/objects" 目錄下,里面包含了創建的各種對象及內容。
      • 當對工作區修改(或新增)的文件執行 git add 命令時,暫存區的目錄樹被更新,同時工作區修改(或新增)的文件內容被寫入到對象庫中的一個新的對象中,而該對象的ID被記錄在暫存區的文件索引中。
      • 當執行提交操作(git commit)時,暫存區的目錄樹寫到版本庫(對象庫)中,master 分支會做相應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹。
      • 當執行 git reset HEAD 命令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。
      • 當執行 git rm --cached 命令時,會直接從暫存區刪除文件,工作區則不做出改變。
      • 當執行 git checkout . 或者 git checkout -- 命令時,會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區中的改動。
      • 當執行 git checkout HEAD . 或者 git checkout HEAD 命令時,會用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區和以及工作區中的文件。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。

      4、Git基本操作

      本地倉庫與遠程倉庫

      Git的工作就是創建和保存用戶項目的快照及與之后的快照進行對比。

      說明:

      • workspace:工作區
      • staging area:暫存區/緩存區
      • local repository:版本庫或本地倉庫
      • remote repository:遠程倉庫

      創建倉庫命令

      命令 說明
      git init 初始化倉庫。
      git clone 拷貝一份遠程倉庫,也就是下載一個項目。

      一個文件夾成為一個git倉庫的標志是,這個文件夾下有一個.git的隱藏文件夾。這個就是版本庫,里面還有暫存區。這個文件夾下的其他文件作為被git管理的文件。

      提交與修改

      Git 的工作就是創建和保存你的項目的快照及與之后的快照進行對比。

      下表列出了有關創建與提交你的項目的快照的命令:

      命令 說明
      git add 添加文件到暫存區
      git status 查看倉庫當前的狀態,顯示有變更的文件。
      git diff 比較文件的不同,即暫存區和工作區的差異。
      git commit 提交暫存區本地倉庫。
      git reset 回退版本
      git rm 將文件從暫存區工作區刪除。
      git mv 移動或重命名工作區文件。

      提交日志

      命令 說明
      git log 查看歷史提交記錄
      git blame <file> 以列表形式查看指定文件的歷史修改記錄

      遠程操作

      命令 說明
      git remote 遠程倉庫操作
      git fetch 從遠程獲取代碼庫
      git pull 下載遠程代碼并合并
      git push 上傳遠程代碼并合并

      5、Git分支管理

      Git分支實際上是指向更改快照指針

      當切換到一個分支的時候,Git會用此分支最后一次提交(commit)的快照替換掉工作區的內容。所以多個分支不需要多個目錄。

      命令 說明
      git branch 查看所有的分支,并且高亮顯示當前所在分支
      git branch branchname 創建新分支,不切換到新分支。此時新分支指向工作區中的文件
      git checkout branchname 切換到branchname分支。
      git checkout -b branchname 創建并切換到branchname分支,相當于前兩條命令的組合。此時新分支指向工作區中的文件
      git merge source 合并分支,將source分支合并到當前所在的分支。在git bash中默認不會刪除原分支;在GitLab中默認勾選了Delete Source branch,會自動刪除合并的source分支
      git branch -d dev 刪除dev分支,注意當前所在分支不能為dev分支,會報錯。必須切換到其他分支再執行這個命令
      git status 可以用來查看那些因包含合并沖突而處于未合并(unmerged)狀態的文件
      git diff 顯示合并沖突的地方

      git merge的三種情況

      1. 快進(無沖突)
        • 描述:dev從master分支上創建,dev分支commit了多次后,并且master分支沒有執行commit操作。
        • 此時,沒有發生沖突,可以進行自動merge
        • 不會自動commit
      2. 非快進,修改不同文件(無沖突)
        • 描述:dev從master分支上創建,dev分支commit了多次后,master分支也提交了多次。并且兩個分支修改的不是一個文件。
        • 此時,沒有發生沖突,可以進行自動merge
        • 合并后的版本,會自動commit一次
      3. 非快進,修改相同文件(有沖突)
        • 描述:dev從master分支上創建,dev分支commit了多次后,master分支也提交了多次。并且兩個分支修改的是一個文件。
        • 此時,會發生沖突,自動合并失敗,需要手動解決沖突。
        • 使用命令git status 可以查看是哪些文件發生了沖突
        • 使用命令git diff 可以查看哪些文件的哪個地方發生沖突。
        • 手動打開這些文件,修改文件內容。vim
        • 手動提交 git add . git commit -m "xxx"

      6、Git查看提交歷史

      Git 提交歷史一般常用兩個命令:

      • git log - 查看歷史提交記錄。
      • git blame <file> - 以列表形式查看指定文件的歷史修改記錄。
      命令 說明
      git log 查看提交記錄,第一條是最新的
      git log --oneline 查看歷史記錄的簡潔版本
      git log --graph 查看歷史中什么時候出現了分支、合并。
      git log --reverse --oneline 逆向顯示所有日志
      git log --author 查看指定用戶提交的部分,如git log --author=Linus --oneline -5

      7、Git標簽

      命令 說明
      git tag -a v1.0 為最新一次的commit打上標簽,-a表示創建一個帶注解的標簽。不用-a也可以創建標簽,但是它不會記錄標簽是什么時候打的,誰打的,也不會添加標簽的注解。
      git tag 查看所有的標簽
      git tag -a v0.9 85fc7e7 為某個commit追加標簽。與上面的區別是一個是為最新的commit打標簽,這個是為指定的(可以不是最新的)commit打標簽。

      8、使用遠程倉庫

      通過第三方的(github)或者自建的服務器,實現與其他人共同開發,版本控制。

      遠程倉庫

      命令 說明
      git remote add [shortname] [url] 添加一個新的遠程庫,shortname一般為origin,url是遠程倉庫的地址。連接完成之后,可以將本地的commit push到遠程倉庫中。
      git remote 查看當前配置有哪些遠程倉庫
      git remote -v 查看當前配置有哪些遠程倉庫,顯示url和方式
      git fetch 從遠程倉庫下載最新分支與數據。該命令執行完后需要手動執行 git merge 遠程分支到你所在的分支。
      git pull <遠程主機名> <遠程分支名>:<本地分支名> 相當于git fetch 和 git merge的組合
      git push origin <source>:<destination> 推送當前分支到遠程分支
      git remote rm [別名] 刪除遠程倉庫

      參考

      1. gitLab代碼合并取消刪除source分支
      2. git merge命令應用的三種情景
      posted @ 2023-02-25 19:37  永恒&  閱讀(35)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品七七在线播放| 成人h动漫精品一区二区无码| 天天看片视频免费观看| 中文字幕乱码十国产乱码| 亚洲精品欧美综合二区| 国产一区二区三区不卡视频 | 国产成人亚洲精品狼色在线| 在线看高清中文字幕一区| 国产太嫩了在线观看| 欧美人与动牲交A免费观看| 日韩人妖精品一区二区av| 部精品久久久久久久久| 色国产视频| 中文字幕国产日韩精品| 久久精品午夜视频| 国产麻豆精品手机在线观看| 骚虎三级在线免费播放| 国产成人无码区免费内射一片色欲| 最新av中文字幕无码专区| 激情文学一区二区国产区| 91密桃精品国产91久久| 国产专区一va亚洲v天堂| 欧洲精品一区二区三区久久| 国产美女裸身网站免费观看视频| 日本美女性亚洲精品黄色| 人妻少妇偷人作爱av| 免费一本色道久久一区| 91亚洲国产成人精品性色| bt天堂新版中文在线| 国内精品久久久久精免费| 老男人久久青草av高清| 狠狠五月深爱婷婷网| 天堂V亚洲国产V第一次| 国产人妻人伦精品婷婷| 给我中国免费播放片在线| 亚洲av永久无码精品水牛影视| 国产精品久久中文字幕网| 一 级做人爱全视频在线看| 久久精品国产99国产精品亚洲 | 欧洲精品色在线观看| 国产精品入口麻豆|