Skip to content

[GIT101] #20

@zuppachu

Description

@zuppachu

用資料夾比喻 Git 的原理

  1. 需要新版本:開一個資料夾
  2. 不想加入版本控制:不要加入資料夾
  3. 避免版本號衝突:用看似亂數的東西當作資料夾名稱
  4. 知道最新版本:用一個新檔案來存放版本資料
  5. 知道歷史軌跡:用一個新檔案來記錄歷史軌跡,知道亂數檔案名先後順序

Git 版本控制指令

  • git init : 初始化,我們要在這個資料夾下對此專案做版本控制囉
    • rm -r .git:如欲刪除版本控制

  • git status:看 git 版本控制的狀態

  • git add:加入版本控制
    • git add code.js:將 code.js 加入版本控制
    • git add . : 將全部檔案加入版本控制 (Staged 放入暫存區,還沒正式建成新版本)
    • git rm --cached code.js:將 code.js 取消版本控制 (變回 Untracked, 沒加入版本控制狀態)

  • git commit:建立一個新版本
    • git commit -m "first commit":給予 commit message 才能建立新的版本
    • git commit -am "second commit":為 git add + git commit ,用於更改的檔案時。新加入的檔案不適用,需自己先 git add 再 git commit。

git commit 的時候出現錯誤,跳出了一個要你設定帳號跟姓名的畫面,請輸入以下指令:
git config --global user.name "your name"
git config --global user.email "youremail"

  • git log: 檢查歷史紀錄
    • git log --oneline:顯示簡短的歷史紀錄

  • git checkout:回到某版本 或是 切換到某分支去
    • git checkout 某版本號(前七碼也可):切換回此版本號的狀態
    • git log:只能看到某本版號當時的歷史狀態
    • git checkout master:切換回最新版本號的狀態

  • .gitignore:要忽略的檔案
    • 建立 .gitignore 步驟:
    1. 建立 .gitignore 檔 :touch .gitignore
    2. 進入 vim 編輯器內打:

vim .gitignore
按 i 編輯,輸入想忽略的檔案名稱
跳出後,打 :wq 存檔離開

  • git diff:在 commit 之前,看見檔案前後的差異

git branch:切換版本號 或是 切換到某分支去

  • 為什麼我們需要 branch ?
    因為 branch 可以讓我們平行時空,各做各的事,在最後合併兩條分支變成一個最終版本。

  • git branch -v:檢查目前有哪些 branch & 在哪條 branch 上

  • git branch 123:建立命名為 123 的分支

  • git branch -d 123:刪除名叫 123 的分支

  • git checkout 123:從當前分支切換到名叫 123 的分支去

  • git merge 123:將 123 分支合併進來~
    如果在 master 主支上,執行 git merge 123 ,表示 123 分支將合併進 master 主支內。

遇到衝突怎辦?
手動解決~

  1. CONFLICT:Merge conflict in XX檔
  2. git status 檢查哪個檔案 unmerged
  3. 進入 XX檔
  4. 看見以下內容,選擇要更改的內容,最後用 git commit -am "新檔名" 儲存。
<<<<<< HEAD (表示目前所在的 branch)
xcvvbnm (內容)
====== (分隔線)
>>>>>> new-feature (分歧的支線)
djfoieejfioe (內容)

Git狀況劇

我 commit了,但我想改 commit message

git commit --amend:可更改 commit message

我 commit了,可是我後悔了

git reset HEAD^ = git reset HEAD^ --soft: 上一個 commit 版本不要了,但內容還是要,只想將內容做一些修正。修正後,再 commit 回去。上一個 commit 會直接被修正的取代掉。

git reset HEAD^ --hard: 直接刪除上一個 commit 版本,上一個 commit 版本內容也一併都被刪除掉。

我還沒 commit,但我改的內容我不想要了

git checkout -- 檔案名稱:此檔案回復成前次內容
git checkout -- .:將有修改但未 commit 的所有檔案都回復成前一次的內容

我想改 branch 的名字

git branch -m 想改成的新名稱: 先切換到要修改名稱的分支,再輸入 git branch -m 想改成的新名稱即可修改

想把遠端的 branch 抓下來

git checkout 分支: 換到某條分支 或 將遠端的分支抓下來

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions