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 add
和git commit
命令將檔案提交到倉庫。
隨著使用者深入使用 Git,會了解到更多 Git 知識,點選檢視 Git 檔案狀態介紹 和 Git 常用命令速查表。
推送檔案到遠端倉庫
- 註冊 Coding 賬戶
瀏覽器中開啟 Coding.net 註冊賬戶,如有問題請看 幫助文件。
- 建立專案
- 新增遠端倉庫
檢視 新增遠端倉庫幫助。
- 推送程式碼到遠端倉庫
在終端執行命令
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 add
、git commit
和git 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 文件。