Git(一)
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(一)