Git本地倉庫基本操作

chuyaoxin發表於2020-08-05

設定姓名和郵箱

設定使用Git時的姓名和郵箱地址。名字須用英文輸入
git config --global user.name "chuyaoxin"
git config --global user.email "yaoxinchu@126.com"

命令執行的結果是在“C:\Users\使用者名稱”路徑下,產生一個.gitconfig檔案,可以用記事本開啟。

想更改這些資訊時,可以直接編輯這個設定檔案。這裡設定的姓名和郵箱地址會用在Git的提交日誌中。由於在GitHub上公開倉庫時,這裡的姓名和郵箱地址也會隨著提交日誌一同被公開,所以請不要使用不便公開的隱私資訊。

建立倉庫

建立一個新資料夾,比如“TestForGit”
然後右鍵點選這個資料夾,選擇Git Bash Here
開啟後,輸入git init完成程式碼倉庫的建立

輸入ls -al可以看到目錄下有個.git的資料夾,但這個目錄預設是隱藏的。

提交原生程式碼

先用add命令把要提交的內容都加進來,然後commit才是真的去執行提交操作。
第一步,用命令git add告訴Git,把檔案新增到倉庫
git add readme.txt
第二步,用命令git commit告訴Git,把檔案提交到倉庫
git commit -m "write a readme file"

.gitignore

.gitignore是Git的忽略配置檔案,放在專案根目錄下就行,這樣在提交程式碼時就不會跟蹤在.gitignore配置檔案列舉的檔案。另外,.gitignore檔案本身需要被git跟蹤管理,不能被忽略。

git add

用途:可以用來跟蹤新檔案,或者新增已被修改的跟蹤的檔案到快取區,或者把合併的衝突檔案標記為已解決
git add的原意是更新當前工作目錄樹修改的內容到索引中(也就是快取中去)
主要針對兩種檔案:(1)版本庫沒有跟蹤的檔案(2)版本庫已經跟蹤,但是修改了的檔案
另外git add會自動忽略.gitignore檔案所忽略的檔案。

  • git add .
    將檔案的修改、檔案的新建(注意!不包括被刪除的檔案),新增到暫存區
    git add .會把所有untrack的檔案都加入暫存區,並且會根據.gitignore做過濾
  • git add *
    git add *會忽略.gitignore把任何檔案都加入暫存區
  • git add -u
    將檔案的修改、檔案的刪除(注意!僅監控被add的檔案,不包括新檔案),新增到暫存區,u表示update
  • git add -A
    將檔案的修改,檔案的刪除,檔案的新建(相當於add .與add -u的合集),新增到暫存區,A表示all
  • 其他
    可以使用git add -h命令來檢視
$ git add -h
usage: git add [<options>] [--] <pathspec>...
    -n, --dry-run         dry run
    -v, --verbose         be verbose
    -i, --interactive     interactive picking
    -p, --patch           select hunks interactively
    -e, --edit            edit current diff and apply
    -f, --force           allow adding otherwise ignored files
    -u, --update          update tracked files
    --renormalize         renormalize EOL of tracked files (implies -u)
    -N, --intent-to-add   record only the fact that the path will be added later
    -A, --all             add changes from all tracked and untracked files
    --ignore-removal      ignore paths removed in the working tree (same as --no-all)
    --refresh             don't add, only refresh the index
    --ignore-errors       just skip files which cannot be added because of errors
    --ignore-missing      check if - even missing - files are ignored in dry run
    --chmod (+|-)x        override the executable bit of the listed files
    --pathspec-from-file <file>
                          read pathspec from file
    --pathspec-file-nul   with --pathspec-from-file, pathspec elements are separated with NUL character

git commit

  • git commit -m "write a readme file"

    可以在使用了多次git add之後再使用git commit來提交。
    在git commit命令中,-m後面輸入的是本次提交的說明,可以輸入任意內容,但最好是有意義的,這樣就能從歷史記錄裡方便地找到改動記錄。
    執行成功後,從圖中可以看出,一個檔案被改動,插入了6行內容。

git status

  • git status
    可以使用git status命令檢視是否還有檔案未提交

    上圖說明當前檔案都已正常提交。
    如果我對上傳的檔案進行修改,但是卻不提交會如何?

    會報出如上所示的錯誤!modified: readme.txt no changes added to commit
    字面意思:readme.txt被修改,提交沒有變化

git diff

  • git diff readme.txt
    git status可以讓我們知道有沒有正常提交,比如上面那個例子,但如果要檢視檔案到底修改了什麼內容,可以使用git diff 檔名命令

    這條命令將我對這個檔案的修改記錄顯示了出來

檢視提交記錄

  • git log
    使用git log即可檢視歷史提交資訊

    從這張圖也可以看出之前git commit -m "write a readme file"中,-m部分的作用,這個和程式設計時寫註釋是一樣的,可以不寫,但是寫的話方便以後的工作。
    還有要注意的地方是輸出的結果,
    顯然我這是提交了兩次,以第一次的結果為例,

commit 418ee0fc27d78a71f5869451b5a1599cc028b0ca (HEAD -> master)
Author: chuyaoxin yaoxinchu@126.com
Date: Tue Aug 4 19:48:59 2020 +0800
write a readme file

對應的含義分別是

此次提交對應的版本號
提交人:姓名 郵箱
提交的時間
提交版本修改的內容:就是我們git commit -m “xxx”裡的xxx

撤銷未提交的修改

如果對檔案進行了錯誤的修改,且已經Ctrl+S儲存,但還沒有提交,想要撤銷之前的修改可以使用checkout命令

  • 不僅未提交,而且沒有add
    如果是這種情況,只需要一句git checkout 修改的檔名即可
    例如,git checkout readme.txt

    此時,再開啟readme.txt,我對此檔案的第二次修改被取消掉了
  • 已經add,但還沒有提交
    如果我們已經add了的話,那麼直接checkout是沒任何作用的,我們要先取消新增才可以撤回提交
    git reset HEAD readme.txt
    git checkout readme.txt

版本回退

  • git reset
    如果我們已經提交,但想退回到之前的版本,可以使用git reset命令
    比如我先在readme.txt中新增了一行,然後git add readme.txtgit commit -m "add the third step",新增並提交到倉庫
    完成之後,使用git log檢查提交記錄。

    PS:通過這張圖也能看出,最新的版本號顯示在最上方
  • git reset --hard HEAD
    在git中,HEAD表示當前版本,HEAD表示上一個版本,HEAD^表示上上個版本
    退回到上一個版本需要依次輸入以下指令
    git reset --hard HEAD
    git reset --hard HEAD^
    執行結果如下圖所示:

    再輸入git log檢視,此時的版本號已經發生了變化,最新修改的那個版本號沒有顯示出來了
  • git reset --hard 版本號
    這條命令可以讓我們將當前版本更改為存在過的任意一個版本
    同時仔細觀察這張圖,

    可以很容易的猜到,其實版本號只要輸入前七位就可以了
    所以我們之前的回退指令可以用這條來替代,
    git reset --hard 418ee0f
  • git reflog
    如果你版本回退之後發現,還是最新的那個版本好一點,但此時通過git log已經找不到那個版本號了,
    可以使用git reflog

    顯然,版本回退之前的最新版本號為14a5f92
    然後使用git reset --hard 14a5f92
    開啟readme.txt,因為版本回退而去掉的修改又回來了

相關文章