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

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

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

      Git命令和操作的學習及在線練習

      背景說明

      • Git 是一種分布式版本控制系統
        Git Flow模型圖

      基礎知識

      • Git 的三個分區和文件的三種狀態
        Git基本命令

        分區 用途 對應的文件狀態
        工作區 存放代碼文件 modified
        暫存區 臨時存放代碼文件 staged
        本地庫 存放歷史版本信息 committed

      本地操作

      Git基本操作

      創建倉庫

      • git init 將當前的目錄轉換成一個倉庫
      • git init <directory> 命令用于在指定目錄創建名為 的空倉庫
      • git init --bare <directory> 命令用于創建一個沒有工作目錄的裸倉庫。裸倉庫以 .git 結尾,作為儲存代碼的中央倉庫。
        • git init --bare my-project.git命令創建了一個用于代碼共享的裸倉庫。

      添加

      • git add 命令將工作區的文件添加到暫存區。可以通過修改.gitignore文件來設置不需要添加的文件。

      提交

      • git commit命令將暫存區的文件提交到本地庫。
      • git commit -m "comment"命令在提交時進行說明,說明改動的內容或原因。
      • git commit --amend命令把新的內容添加到之前的提交里面,這樣就還是同一條提交日志信息。

      狀態

      • git status命令用于查看狀態。

      日志

      • git log命令用于查看提交日志,從近到遠顯示每次提交的評論、作者、日期等信息。
      • git reflog命令用于查看命令日志。
      • commit 后面的編號,是每次歷史記錄的一個索引。如果需要對版本進行前進或者后退的時候,就需要用到它。

      重置

      • git reset命令用于將當前版本回退到選定的版本。

      • 重置的方法

        git reset HEAD^^^   //向上返回3代
        git reset HEAD~~~   //向上返回3代
        git reset HEAD~3    //向上返回3代
        git reset <提交號>   //重置到指定提交號
        
      • 重置有三種模式:hardsoftmixed

      • 默認使用混合重置(mixed)模式

      硬重置

      • git reset --hard <提交號>命令將工作區、暫存區、本地庫都重置到這個選定的版本上。
      • 整體狀態直接重置到特定提交之前的狀態。
      • 效果看起來等同于清空暫存區和工作區。
        git reset --hard <提交號>

      軟重置

      • git reset --soft <提交號>命令將本地庫重置到這個選定的版本上,保留工作區、暫存區的中的內容。
      • HEAD 移至指定的提交,而不會移除該提交之后加入的修改。
      • 效果看起來就是工作目錄的內容不變,暫存區原有的內容也不變,只是原節點和 Reset 節點之間的所有差異都會放到暫存區中。
        git reset --soft xxx

      混合重置

      • git reset --mixed <提交號>命令將暫存區、本地庫重置到這個選定的版本上,保留工作區中的內容。
      • 效果看起來就是原節點和 Reset 節點之間的所有差異都會放到工作目錄中。

      還原

      • git revert命令用于撤銷修改。通過對特定的提交執行還原操作,會創建一個包含已還原修改的新提交。
        git revert

      本地高級操作

      揀選

      • cherry-pick <提交號> 命令用于復制特定分支的某個提交到活動分支。
      • cherry-pick <提交號> <提交號> 命令用于復制特定分支的多個提交到活動分支。
        cherry-pick

      恢復

      • git checkout [file]命令恢復暫存區的指定文件到工作區。
      • git checkout .命令恢復暫存區的所有文件到工作區。
      • git checkout [commit] [file]命令恢復指定提交的指定文件到暫存區和工作區。

      本地棧式提交

      • 用于修改提交的評論
      • git rebase -i HEAD~3+git commit --amend+git rebase -i HEAD~3
      • git cherry-pick <提交號>+git commit --amend+git cherry-pick <提交號>

      標簽

      • git tag <標簽號> <提交號>命令用于為指定提交號創建一個標簽
      • git tag -a <標簽號> -m <提交信息> <提交號>命令用于為指定提交號創建一個帶有說明的標簽
      • git tag -d <標簽號>命令用于刪除一個標簽
      • git push origin <標簽號>命令用于推送某個標簽到遠程倉庫
      • git push origin --tags命令用于推送全部尚未推送到遠程倉庫的本地標簽
      • git push origin :refs/tags/<標簽號>命令用于刪除遠程倉庫中的指定標簽

      描述

      • Git Describe <ref> 命令用于查找離最近的錨點(標簽)

      • git bisect 命令用于查找產生 Bug 的提交記錄

      • <ref> 可以是任何能被 Git 識別成提交記錄的引用,未指定時,以目前所檢出的位置(HEAD)為默認位置。

      • 執行Git Describe 命令后輸出的結果:

        <tag>_<numCommits>_g<hash>
        
      • tag 表示的是離 ref 最近的標簽, numCommits 是表示這個 reftag 相差有多少個提交記錄, hash 表示的是所給定的 ref 所表示的提交記錄哈希值的前幾位。

      遠程交互

      Git基本流程

      推送

      • git push命令將本地庫的數據推送到遠程庫。

      克隆

      • git clone命令將遠程庫的數據拷貝到本地庫。

      拉取

      • git pull命令將遠程庫的數據拷貝到本地庫,然后自動合并到本地分支中。
      • 實際上是git fetchgit merge兩個命令合成了一個。
        git pull

      獲取

      • git fetch命令將遠程庫的數據拷貝到本地庫,但是工作區中的文件沒有更新。
        git fetch

      變基

      • git rebase命令將當前分支的提交復制到指定的分支之上。
      • 變基的作用更多的是來整合分叉的歷史。
        git rebase
      • 變基與合并有一個重大的區別:Git 不會嘗試確定要保留或不保留哪些文件。執行 rebase 的分支總是含有想要保留的最新近的修改!這樣不會遇到任何合并沖突,而且可以保留一個漂亮的、線性的 Git 歷史記錄。

      遠程高級操作

      交互式變基

      • 交互式變基指的是使用帶參數 --interactiverebase 命令, 簡寫為 -i
      • git rebase -i HEAD~3 命令用于修改最近 3 條提交。
      • 交互式變基在當前開發的分支上想要修改某些提交時會很有用。
        交互式變基
      • rebase 的提交上,可以執行以下 6 個動作:
        • reword:修改提交信息;
        • edit:修改此提交;
        • squash:將提交融合到前一個提交中;
        • fixup:將提交融合到前一個提交中,不保留該提交的日志消息;
        • exec:在每個提交上運行我們想要 rebase 的命令;
        • drop:移除該提交。

      遠程跟蹤

      • git checkout -b <本地分支名> o/<遠程分支名>
      • git branch -u o/<遠程分支名> <本地分支名>

      關聯遠程倉庫

      • git remote add origin <url>命令用于關聯遠程倉庫
      • git push -u origin master命令用于關聯遠程倉庫并進行第一次推送

      同步倉庫的分支

      同名指定分支
      • git push <remote> <place>命令用于同步本地倉庫到遠程倉庫的指定分支。
      • git fetch <remote> <place>命令用于同步遠程倉庫到本地倉庫的指定分支。
      • git push origin master,這個命令的作用是切換到本地倉庫中的 master 分支,獲取所有的提交,再到遠程倉庫 origin 中找到 master 分支,將遠程倉庫中沒有的提交記錄都添加上去。
      不同名指定分支
      • git push origin <source>:<destination>命令將來源和目的地不同的分支同步到遠程倉庫。
      • 如果要推送到的目的分支不存在,Git 會在遠程倉庫中根據提供的名稱自動創建分支。
      • git fetch origin <source>:<destination>命令將來源和目的地不同的分支同步到本地倉庫。
      • 如果要推送到的目的分支不存在,Git 會在本地倉庫中根據提供的名稱自動創建分支。
      刪除遠程倉庫中的分支
      • git push origin :<destination>命令來源分支為空,會刪除遠程倉庫中的目的地分支。
      創建本地倉庫中的分支
      • git fetch origin :<destination>命令來源分支為空,會在本地倉庫中創建一個新分支。
      Git pull 的參數
      • git pull origin foo 相當于:git fetch origin foo+git merge o/foo

      • git pull origin bar~1:bugFix 相當于:git fetch origin bar~1:bugFix+ git merge bugFix

      分支管理

      查看分支

      • git branch命令用于列出當前所有分支。
      • git branch -v 能夠顯示更多信息。

      創建分支

      • git branch <branchName>命令用于創建分支
      • git branch <branchName> <提交號> 命令用于創建分支并關聯到對應的提交號
      • git branch -f <branchName> <提交號> 命令用于強制移動分支到對應的提交號
      • git checkout -b <branchName> 命令用于創建并切換分支

      切換分支

      • git checkout <branchName>命令用于切換分支
      • git checkout <提交號>命令用于切換到對應的提交號
      • git checkout HEAD^2命令用于指定提交記錄的某個父提交

      合并分支

      • git merge <branchName>命令用于合并分支
      • Git 可執行兩種類型的合并:fast-forwardno-fast-forward

      快速合并

      • 在當前分支相比于要合并的分支沒有額外的提交時,可以執行 fast-forward 合并。這類合并不會創建新的提交,而是會將正在合并的分支上的提交直接合并到當前分支。Git 優先執行這種合并方式。
        640

      非快速合并

      • git merge --no-ff <branchName>命令用于禁用快速合并
      • 在當前分支上提交想要合并的分支不具備的改變,那么 git 將會執行 no-fast-forward 合并。這類合并會在當前活動分支上創建新的合并提交。這個提交的父提交指向這個活動分支,也指向想要合并的分支。
        640 (1)

      手動合并

      • 想要合并的兩個分支的同一文件中的同一行代碼上有不同的修改,或者一個分支刪除了一個文件而另一個分支修改了這個文件時,此時就需要手動合并沖突。
        640 (2)

      Git 屬性

      • 可以用 Git 屬性指示 Git 識別二進制文件以及如何處理特定格式的文件

      識別二進制文件

      • 如指定 Git 把所有 pbxproj 文件當成二進制文件,添加下面的行到 .gitattributes 文件:

        *.pbxproj binary
        

      比較二進制文件

      • 方法 1:使用工具把二進制文件轉化為純文本格式,再使用 diff 命令進行文本對比。
      • 方法 2:從二進制文件中獲取元數據,再使用 diff 命令對元數據進行對比。

      Word 文檔

      1. 安裝 pandoc

      2. 添加下面的行到 .gitattributes 文件

        *.doc diff=pandoc
        
      3. 添加下面的行到 .git/config 文件

      [diff "pandoc"]
        textconv=pandoc --to=markdown
        prompt = false
      

      圖像文件

      1. 安裝 exif

      2. 添加下面的行到 .gitattributes 文件

        *.jpg diff=exif
        
      3. 添加下面的行到 .git/config 文件

        [diff "exif"]
        textconv = exiftool
        

      注意事項

      • 在一個 Git 庫中可以有多個 gitattributes 文件

      • 同一個 gitattributes 文件中,按照行的先后順序,后序的設置覆蓋前序

      • 不同 gitattributes 文件中,屬性設置的優先級如下所示(從高到低)

        /myproj/info/attributes
        /myproj/my_path/.gitattributes
        /myproj/.gitattributes
        

      練習 Git

      • Learning Git Branching 項目是學習 Git 的在線練習平臺。
      • 開源項目地址:https://github.com/pcottle/learnGitBranching
      • 教程網站地址:https://learngitbranching.js.org
        640
      • 所有 Git 分支都被可視化,只需要在左側的命令行輸入 Git 命令,分支會進行相應的變化。每次 commit 都抽象成樹的節點,用動畫闖關的形式,讓你自由使用 Git 命令完成目標。
        640 (1)
      • 教程包含本地 Git 倉庫的版本管理和遠程倉庫的操作,很適合初學和進階。
        640 (2)

      參考書籍

      • GitHub 入門與實踐-[日] 大塚弘記-人民郵電出版社-2015 年 7 月-9787115394095

      參考資料


      版權聲明:本文為「夢幻之心星」原創,依據 CC BY-NC-SA 4.0 許可證進行授權,轉載請附上原文出處鏈接及本聲明。


      博客園地址:http://www.rzrgm.cn/Sky-seeker

      微信公眾號:關注微信公眾號,獲取即時推送
      微信名:夢幻之心星 微信號:Sky-seeker


      posted @ 2020-07-17 19:00  夢幻之心星  閱讀(1847)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 中文字幕精品无码一区二区| 在线无码免费的毛片视频| 亚洲成av人片乱码色午夜| 亚洲日韩国产精品第一页一区 | 日韩有码中文字幕国产| 欧美一本大道香蕉综合视频 | 亚洲av色在线播放一区| 成人av一区二区三区| 一面膜上边一面膜下边视频| 日本无遮挡吸乳视频| 日本不卡码一区二区三区| 亚洲精品宾馆在线精品酒店| 亚洲国产成人精品女久久| 少妇人妻偷人偷人精品| 国内熟妇人妻色在线视频| 国产精品久久无码不卡黑寡妇| 亚洲色无码播放亚洲成av| AV无码免费不卡在线观看| 天堂俺去俺来也www色官网| 亚洲综合高清一区二区三区| 亚洲av日韩av永久无码电影| 无码免费大香伊蕉在人线国产| 国产成人高清亚洲一区91| 国产在线线精品宅男网址| 国产高清精品在线91| 夜夜爽日日澡人人添| 99久久久国产精品免费无卡顿| 国产99视频精品免费视频36| 欧美成人一卡二卡三卡四卡| 亚洲熟妇熟女久久精品综合| 中文字幕在线视频不卡一区二区 | 护士张开腿被奷日出白浆| 一区二区三区四区高清自拍| 亚洲高清WWW色好看美女| 久久精品免视看成人国产| 国产av一区二区不卡| 亚洲不卡一区二区在线看| 国偷自产av一区二区三区| 少妇被粗大的猛烈进出动视频| 日本一区二区三区在线播放| 日韩精品一区二区在线视|