1. 程式人生 > >Git(一)

Git(一)

就是 其它 con 方式 有一個 readme eset epo .com

Git是一個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。

GIT不僅僅是個版本控制系統,它也是個內容管理系統(CMS),工作管理系統等。

如果你是一個具有使用SVN背景的人,你需要做一定的思想轉換,來適應GIT提供的一些概念和特征。

Git 與 SVN 區別點:

  • 1、GIT是分布式的,SVN不是:這是GIT和其它非分布式的版本控制系統,例如SVN,CVS等,最核心的區別。

  • 2、GIT把內容按元數據方式存儲,而SVN是按文件:所有的資源控制系統都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾裏。

  • 3、GIT分支和SVN的分支不同:分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。

  • 4、GIT沒有一個全局的版本號,而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個特征。

  • 5、GIT的內容完整性要優於SVN:GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。

我用的是windows系統。安裝包地址在這裏:https://git-scm.com/download/win

配置

Git 提供了一個叫做 git config (git-bash.exe這個文件) 的工具,專門用來配置或讀取相應的工作環境變量。

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

  • mingw64\etc\gitconfig 文件:系統中對所有用戶都普遍適用的配置。若使用 git config 時用 --system 選項,讀寫的就是這個文件。
    $ git config --system

  • ~/.gitconfig 文件:用戶目錄下的配置文件只適用於該用戶。若使用 git config 時用 --global 選項,讀寫的就是這個文件。$ git config --global
    $ git config --global

  • 當前項目的 Git 目錄中的配置文件(也就是工作目錄中的 .git/config 文件):這裏的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以 .git/config
    裏的配置會覆蓋 /etc/gitconfig 中的同名變量。

配置用戶信息:

$ git config --global user.name "runoob"
$ git config --global user.email [email protected]

配置版本差異分析工具

$ git config --global merge.tool vimdiff

查看當前配置

$ git config --list

Git工作流程

技術分享圖片

基本上跟SVN差不多。

基本概念

使用git的話我們主要管理兩個區:

工作區:工作目錄

版本庫:版本庫內又有master 目錄與暫存區

當執行 "git reset HEAD" 命令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。

當執行 "git rm --cached <file>" 命令時,會直接從暫存區刪除文件,工作區則不做出改變。

當執行 "git checkout ." 或者 "git checkout -- <file>" 命令時,會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。

當執行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令時,會用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區和以及工作區中的文件。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。

Git 創建倉庫

執行

git init

會創建一個倉庫在當前目錄下

執行

git init newrepo

會在newrepo下創建倉庫目錄

如果當前目錄下有幾個文件想要納入版本控制,需要先用 git add 命令告訴 Git 開始對這些文件進行跟蹤,然後提交:

$ git add *.c
$ git add README
$ git commit -m ‘初始化項目版本‘

我們使用 git clone 從現有 Git 倉庫中拷貝項目(類似 svn checkout)。

git clone <repo>

如果我們需要克隆到指定的目錄,可以使用以下命令格式:

git clone <repo> <directory>

Git(一)