1. 程式人生 > >Git基礎介紹

Git基礎介紹

				<!-- .hkb-article__content -->

文章內容

管理本地倉庫檔案

簡單的描述,在 Git 中檔案有三種狀態:已修改(modified)、已暫存(staged

)、已提交(committed;用 Git 管理檔案也可以簡單的理解為三個步驟:修改檔案、跟蹤檔案、提交檔案

以下采取示例的方式簡述用 Git 管理本地倉庫檔案。

修改檔案

修改檔案即是對檔案的新增、編輯、刪除等等,和普通修改檔案的方法一致。

選擇合適的地方建立一個新目錄『learn-git』,新建『readme.txt』 和『learn-git.txt』 檔案,在中寫入『I’m learning git.』這句話並儲存。

跟蹤檔案(git add

建立檔案和修改檔案後需要把檔案新增到倉庫,即對檔案進行跟蹤。一次性把一個檔案或多個檔案新增到倉庫都可以,用到的命令都是 git add

新增一個檔案時直接在終端輸入 git add後面空一格輸入完整的檔名(包含字尾,如.txt):

$ git add readme.txt

新增多個檔案也類似,git add後面空格輸入完整的檔名,檔名之間用空格分隔:

$ git add readme.txt learn_git.txt

添加當前倉庫裡的所有檔案時直接在終端輸入$ git add . ,注意此處末尾的.不要遺漏。

提交檔案(git commit

git commit命令把檔案提交到倉庫,一次性會提交所有你已經新增的檔案:

$ git commit -m "wrote a readme and a learn_git file"
[master (root-commit) 7c57f05] wrote a readme and a learn_git file
 2 files changed, 2 insertions(+)
 create mode 100644 learn_git.txt
 create mode 100644 readme.txt

提交命令為git commit-m後面引號中的內容是你的提交說明,下面幾行是終端的返回結果。每次提交檔案時都寫個提交說明,以便清楚地瞭解做了什麼修改。

$符號是使用終端時自動輸入的,使用者並不需要輸入此符號。

檢視檔案狀態(git status

如何知道一個檔案處於哪種狀態?使用git statu命令檢視檔案狀態。

當前倉庫裡任何檔案都沒有被跟蹤時返回結果如下:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'
nothing to commit, working directory clean

當檔案已跟蹤但沒有提交到倉庫時返回結果如下:

$ 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:   learn_git.txt
modified:   readme.txt

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

當檔案已跟蹤且已經提交到倉庫時返回結果如下:

$ git status
On branch master
nothing to commit, working tree clean

使用 Git 管理檔案時,每次結束工作前請依次執行git addgit commit命令將檔案提交到倉庫。

隨著使用者深入使用 Git,會了解到更多 Git 知識,點選檢視 Git 檔案狀態介紹Git 常用命令速查表

推送檔案到遠端倉庫

  1. 註冊 Coding 賬戶

    瀏覽器中開啟 Coding.net 註冊賬戶,如有問題請看 幫助文件

  2. 建立專案

    檢視 建立專案幫助文件,不同等級的會員可擁有的專案數量不等,檢視 會員等級和權益

  3. 新增遠端倉庫

    檢視 新增遠端倉庫幫助

  4. 推送程式碼到遠端倉庫

    在終端執行命令git push,將檔案推送到遠端倉庫:

    $ git push origin master
    Counting objects: 8, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (8/8), 626 bytes | 626.00 KiB/s, done.
    Total 8 (delta 0), reused 0 (delta 0)
    To https://git.coding.net/Yangconghou/learn_git.git
     * [new branch]      master -> master
    

    git push是推送命令,實際上是把本地的master分支推送到了遠端倉庫,相當於在遠端有了一個程式碼倉庫的備份。

    使用 Git 管理檔案時,每次結束工作前請依次執行git addgit commitgit push命令將檔案推送到 Coding 遠端倉庫。

Git 檔案狀態介紹

  • 已修改(modified) ———— 表示修改了檔案,但還沒儲存到資料庫中
  • 已暫存(staged) ———— 表示對一個已修改檔案的當前版本做了追蹤,使之包含在下次提交的快照中
  • 已提交(committed)———— 表示資料已經安全的儲存在本地資料庫中

初次克隆某個倉庫時,工作目錄中的所有檔案都屬於已跟蹤檔案,且狀態為未修改。 在編輯過某些檔案之後,Git 將這些檔案標為已修改。我們逐步把這些修改過的檔案放到暫存區域,直到最後一次性提交所有這些暫存起來的檔案,如此重複。使用 Git 時的檔案狀態變化週期如圖所示。

圖片

Git 常用命令速查表

建立版本庫

$ git clone <url>                  #克隆遠端版本庫
$ git init                         #初始化本地版本庫

修改和提交

$ git status                       #檢視狀態
$ git diff                         #檢視變更內容
$ git add .                        #跟蹤所有改動過的檔案
$ git add <file>                   #跟蹤指定的檔案
$ git mv <old><new>                #檔案改名
$ git rm<file>                     #刪除檔案
$ git rm --cached<file>            #停止跟蹤檔案但不刪除
$ git commit -m "commit messages"  #提交所有更新過的檔案
$ git commit --amend               #修改最後一次改動

檢視提交歷史

$ git log                    #檢視提交歷史
$ git log -p <file>          #檢視指定檔案的提交歷史
$ git blame <file>           #以列表方式檢視指定檔案的提交歷史

撤銷

$ git reset --hard HEAD      #撤銷工作目錄中所有未提交檔案的修改內容
$ git checkout HEAD <file>   #撤銷指定的未提交檔案的修改內容
$ git revert <commit>        #撤銷指定的提交
$ git log --before="1 days"  #退回到之前1天的版本

分支與標籤

$ git branch                   #顯示所有本地分支
$ git checkout <branch/tag>    #切換到指定分支和標籤
$ git branch <new-branch>      #建立新分支
$ git branch -d <branch>       #刪除本地分支
$ git tag                      #列出所有本地標籤
$ git tag <tagname>            #基於最新提交建立標籤
$ git tag -d <tagname>         #刪除標籤

合併與衍合

$ git merge <branch>        #合併指定分支到當前分支
$ git rebase <branch>       #衍合指定分支到當前分支

遠端操作

$ git remote -v                   #檢視遠端版本庫資訊
$ git remote show <remote>        #檢視指定遠端版本庫資訊
$ git remote add <remote> <url>   #新增遠端版本庫
$ git fetch <remote>              #從遠端庫獲取程式碼
$ git pull <remote> <branch>      #下載程式碼及快速合併
$ git push <remote> <branch>      #上傳程式碼及快速合併
$ git push <remote> :<branch/tag-name>  #刪除遠端分支或標籤
$ git push --tags                       #上傳所有標籤

更多內容請檢視 Git 文件