在開發的過程當中,咱們時常會碰見出現bug,版本須要回滾的狀況。這時候咱們就要苦惱於對版本的控制,原始保存階段數據,都是使用分段保存的方式,也就是寫完一部分就要存一個壓縮包來保持咱們對每一個版本的保留。相對於這個原始linux
還有在協同開發的過程當中,咱們的開發數據須要整合到一塊兒。這時咱們也要經過git來對開發數據進行合併和分支操做。git
若是咱們在公司和在家裏要一同開發同一套代碼的時候,也要用到git來控制代碼庫中的代碼。sql
Git就是來幫咱們實現咱們這些需求的windows
Git 是一個開源的分佈式版本控制軟件,用以有效、高速的處理從很小到很是大的項目版本管理。 Git 最初是由Linus Torvalds設計開發的,用於管理Linux內核開發。Git 是根據GNU通用公共許可證版本2的條款分發的自由/免費軟件,安裝參見:http://git-scm.com/app
GitHub是一個基於Git的遠程文件託管平臺(同GitCafe、BitBucket和GitLab等)。分佈式
Git自己徹底能夠作到版本控制,但其全部內容以及版本記錄只能保存在本機,若是想要將文件內容以及版本記錄同時保存在遠程,則須要結合GitHub來使用。使用場景:ide
在咱們安裝了Git後,windows下能夠直接右鍵出現git版本控制工具,使用裏面的Bash工具
mac或者linux下須要命令idea
MacBook-Pro-4:pondo gaoshengyue$ pwd # 進入程序目錄 /Users/gaoshengyue/PycharmProjects/pondo MacBook-Pro-4:pondo gaoshengyue$ git init # git初始化 Initialized empty Git repository in /Users/gaoshengyue/PycharmProjects/pondo/.git/
初始化後,會在當前目錄自動建立 .git 文件夾,該文件是Git中最重要的文件夾,由於Git相關文件以及版本都將保存在該文件夾中,經過Git命令能夠將全部版本保存在 .git 文件中,兩條命令建立一個版本:spa
MacBook-Pro-4:pondo gaoshengyue$ git status # 查看當前git狀態 On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) .idea/ app01/ db.sqlite3 manage.py pondo/ readme templates/ nothing added to commit but untracked files present (use "git add" to track) MacBook-Pro-4:pondo gaoshengyue$ git add . # 添加當前目錄下全部文件到版本庫 MacBook-Pro-4:pondo gaoshengyue$ git commit -m '第一次提交' # 提交到版本庫,並填寫版本說明,以便之後回滾。 [master (root-commit) df47fe4] 第一次提交 33 files changed, 879 insertions(+) create mode 100644 .idea/dictionaries/gaoshengyue.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml ...
注意:執行git commit 命令時,可能會提示進行用戶和郵箱的配置,該配置用於記錄當前版本由那個用戶提交
Git把管理的文件分爲了兩個區域四個狀態。
工做區:當前開發程序所在目錄稱爲工做區,即:工做開發都是在該目錄,該區域的文件會有狀態的變化且狀態由git自動檢測,若是程序中文件作任何操做(增、刪、改),文件狀態均會被檢測到,可使用 【git status】命令查看。
版本庫:工做區檢測到有文件發生變化,那麼意味着較上一個版本以後對程序進行了修改,修改完成以後,能夠當作下一版本進行提交,那麼就是執行 【git add .】 將全部文件提交到暫存區,而後再執行【git commit -m '又一個版本'】提交到版本庫的分支便可,以後可使用【git log】命令查看版本記錄。
目前已使用Git的四個命令,這四個命令已經能夠實現對代碼版本的控制了:
當咱們須要對版本進行回滾的時候,要根據版本的歷史記錄來肯定版本號。
MacBook-Pro-4:pondo gaoshengyue$ git log commit 0972f4bb43104baee15aeec2dd62bd0a307ec837 Author: 高聖越 <597426245@qq.com> Date: Fri Aug 11 10:54:42 2017 +0800 上帝降臨次日 commit 6c439d2fd0d943f36f3ee84e158ff86b052961d2 Author: 高聖越 <597426245@qq.com> Date: Fri Aug 11 10:42:09 2017 +0800 上帝降臨第一天 MacBook-Pro-4:pondo gaoshengyue$ git reset --hard 6c439d2fd0d943f36f3ee84e158ff86b052961d2 #切換版本到上帝降臨第一天
HEAD is now at 6c439d2 上帝降臨第一天 # 命令執行完,工做區的全部文件就變成上帝降臨第一天了
回滾卻是完成了,若是某一天想要在回到上帝降臨的第一天的版本怎麼辦呢?來來來,不能像以往經過【git log】來查看記錄再回滾了,再回去須要這麼搞:
MacBook-Pro-4:pondo gaoshengyue$ git reflog 6c439d2 HEAD@{2}: reset: moving to 6c439d2fd0d943f36f3ee84e158ff86b052961d2 0972f4b HEAD@{3}: commit: 上帝降臨次日 6c439d2 HEAD@{4}: commit (initial): 上帝降臨第一天 MacBook-Pro-4:pondo gaoshengyue$ git reset --hard 0972f4b #回滾 HEAD is now at 0972f4b 上帝降臨次日