Git使用(二)版本庫創建及文件修改


一、創建版本庫

1、安裝完成后,在開始菜單里找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!

安裝完成后,還需要最后一步設置,在命令行輸入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
$ git config --global core.autocrlf false      //windows中的換行符為 CRLF, 而在Linux下的換行符為LF,可以使用此命令禁止自動轉換

因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。

注意git config命令的--global參數,用了這個參數,表示你這台機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。

 

2、創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄(為了保證不出現問題,請保證目錄名設置為英文):

$ cd d:
$ mkdir learngit $ cd learngit $ pwd /d/learngit

3、通過 git init 把這個目錄變成Git可以管理的倉庫:

$ git init
Initialized empty Git repository in D:/learngit/.git/

4.瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),並且當前目錄下多了一個.git的目錄

注意:千萬不要使用Windows自帶的記事本編輯任何文本文件。會導致UTF-8編碼的文件,出現亂碼的問題。

5、現在我們編寫一個readme.txt文件,一定要放到learngit目錄下(子目錄也行),內容如下:

Git is a version control system.
Git is free software.

6、用命令 git add 告訴Git,把文件添加到倉庫:

git add readme.txt

執行上面的命令,沒有任何顯示,就說明添加成功。

7、用命令 git commit 告訴Git,把文件提交到倉庫:

$ git commit -m "wirte a readme file"
[master (root-commit) 2ec6b08] wirte a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

注:-m 后面輸入的是本次提交的說明,方便找到歷史中的記錄。

總結:

git init           //初始化一個Git倉庫

git add file.txt       //添加文件,可以一個

git add file1.txt file2.txt   //添加文件,可以多個

git commit -m "文字說明"  //完成並注明文字說明

 

二、版本比較

1、我們已經提交過readme.txt文件了,現在我們繼續修改readme.txt文件,改成

Git is a version control system.
Git is free software.
Git is good!

2、運行 git status 查看結果

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

會告訴我們哪個文件被修改過了。

3、git diff 查看差異性

$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index d8036c1..24c6b62 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
 Git is a version control system.
-Git is free software.
\ No newline at end of file
+Git is free software.
+Git is good!
\ No newline at end of file

4、git add / git commit 確認哪些文件被修改過和文件內容的差異性之后,就可以放心的向倉庫提交了。

$git add readme.txt    //git add . 指提交目錄下的所有文件
$git commit -m "modified readme.txt"

5、git status 看看倉庫的當前狀態

$ git status
On branch master
nothing to commit, working tree clean  //說明工作目錄是干凈的

 

三、版本回退

1、git log 查看版本的歷史記錄,即可看到修改的過的歷史記錄,及歷史說明。

$ git log
commit 167fb1efb4bf77266ec663eb6d2762118ea2071a (HEAD -> master)
Author: lion201314 <lion201314@vip.qq.com>
Date:   Thu Jul 13 22:18:23 2017 +0800

    readme.txt instruction

commit 8f40beccceacb2ad6b25a0df26cc52737ed09744
Author: lion201314 <lion201314@vip.qq.com>
Date:   Thu Jul 13 22:11:25 2017 +0800

    modified readme.txt

commit 2ec6b08c22375e9d3c651cd7b7eeaecb29b9f43d
Author: lion201314 <lion201314@vip.qq.com>
Date:   Thu Jul 13 21:46:29 2017 +0800

    wirte a readme file

注:參數:--pretty=oneline 可以將每條記錄只顯示一行

$ git log --pretty=oneline
167fb1efb4bf77266ec663eb6d2762118ea2071a (HEAD -> master) readme.txt instruction
8f40beccceacb2ad6b25a0df26cc52737ed09744 modified readme.txt
2ec6b08c22375e9d3c651cd7b7eeaecb29b9f43d wirte a readme file

2、使用 git reset 將版本回退到上一個版本“modified readme.txt

$ git reset --hard HEAD^            //回退到上一個版本
HEAD is now at 8f40bec modified readme.txt

當然git也可以自定義回到固定的版本,只要append GPLcommit id 就可以了。比如上面的案例的commit id 就是8f40bec

$ git reset --hard 8f40bec            //等同於上面的方法
HEAD is now at 8f40bec modified readme.txt

注:

HEAD指向那個版本號,當前定位就在哪里。

3、當然說明一下,你可以通過 git reflog 找到對應的commit id,終於可以不擔心commit id找不到了。

 

四、現在來解析一下git的工作區和暫存區

learngit  為工作區

.git    為Git的版本庫

 Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD

 

 五、撤銷修改和刪除文件

1、撤銷修改:git checkout -- readme.txt

$git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這里有兩種情況:

一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。

總之,就是讓這個文件回到最近一次git commitgit add時的狀態。

 命令:git checkout -- file    //沒有--就變成切換分支的命令。

小結:

 

場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file

 

場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。

 

 

 六、刪除文件

1、添加,並提交兩個文件 test1.txt test2.txt

$ git add test1.txt test2.txt
$ git commit -m "add test file"

2、現在用 rm test1.txt 刪除文件

$ rm test1.txt

3、查看狀態

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    test1.txt

no changes added to commit (use "git add" and/or "git commit -a")

4、

場景一:刪除錯誤的情況,需要恢復數據 git checkout -- test1.txt

 

場景二:正常刪除,需要刪除版本庫中信息 git rm test1.txt

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM