最近公司使用了新的版本控制工具Git, 今天正好有時間進行一下總結。衆所周知,Git是一款開源的分佈式版本控制工具(區別於SVN的集中式,分散式版本控制系統和集中式版本控制系統,其最大差別在於前者的倉庫可以有多份。事實上,每個開發者都可以在自己的一臺或者多臺電腦上建立檔案庫), 在所有分佈式版本控制工具中,git可以說是最快,最簡單,最流行的。但是正因如此,它的安全性有一些問題, 所以需要搭建自己公司的服務器來保證代碼的保密性,我公司採用stash建立git服務器,來防止代碼的泄漏。
git的工作流程:
通過圖片可以看出,git工作所要經過的三個部分可以分爲: 共享版本庫(即服務器端),開發人員本地代碼,本地倉庫。接下來說一下用到的基本命令和所起的作用:
1. Clone: 從遠程共享版本庫下載下全部的代碼(和SVN的Check out類似)。
2. Commit: 將本地修改的代碼提交到本地倉庫 (這一步是SVN沒有的,也是版本集中式和分佈式的主要區別所在)
3. Pull: 將遠程共享版本庫的代碼更新到本地 (相當於SVN的update)
4. Push: 將本地倉庫修改的代碼提交到遠程共享版本庫。(相當於SVN的commit)
git的基本命令
1. 初始化一個git倉庫:git init
2. 如果使用GIT必須給GIT配置用戶名和郵箱,給當前的git倉庫配置用戶名和郵箱:git config user.name "Alan", git config user.email "[email protected]"(也可以配置全局郵箱:git config --global user.name "Alan", git config --global user.email "[email protected]", git在搜索郵箱時會優先搜索當前的用戶名和郵箱,找不到再搜索全局的)
3. 初始化項目:
touch main.m: 創建了main.m文件
git add main.m: 將main.m添加到暫緩區
git commit -m "初始化項目": 將所在暫緩區的所有內容提交到本地倉庫,並清空暫緩區(這行命令最後一定要加註釋"")
4.查看文件狀態
git status
紅色: 該文件被添加或修改,但是沒有添加到git的暫緩區
綠色: 該文件在暫緩區,但是沒有提交到本地版本庫
GIT的工作原理
如果想要了解git的工作原理,需要先知道幾個核心概念
工作區(Working Directory):倉庫文件夾裏除.git目錄以外的內容
版本庫(Repository):.git目錄,用來存儲記錄版本信息(暫緩區(stage), 分支(master):git自動創建的第一個分支, HEAD指針:用於指向當前分支)
git add和git commit原理:
git add: 把修改的文件或新添加的文件添加到緩存區
git commit: 把暫緩區的所有內容提交到當前分支
給命令行起別名
git config alias.st "status"
git config alias.ci "commit -m"
刪除文件
git rm person.m: 刪除person.m
查看版本信息
git log: 可以查看當前版本及之前的版本信息(不包括回退的,版本號是由sha1哈希算法生成的40位哈希值)
git reflog: 可以查看所有版本回退的操作(可以查看較多的版本)
版本回退
git reset --hard HEAD: 回到當前版本
git reset --hard HEAD^: 回到上一個版本
git reset --hard HEAD^^:回到上上個版本
git reset --hard HEAD~100: 回到前100個版本
git reset --hard 版本號(前五位即可,一般不會重複)