如果你對 GIT GUI 有興趣的話,可以延生閱讀這篇「Git GUI- GitKraken 介紹」文章,來提升您的工作效率!
Git 適合什麼角色使用?
任何人都可以,不管是PM、會計、助理…等,都可以很輕易的把所有異動都記錄下來,甚至當做備份使用
為什麼版控會這麼重要
想想以前沒有版控的情況下,當我們要進行新功能開發時,以往我們都用傳統的方式這樣做
- 整個資料夾備份並加上日期
例如: project_folder → project_folder_20180101 - 或者複製該檔案並加上日期
例如:news.php → news_bk20180101.php
以上這兩個方式,大家應該不陌生吧
久而久之你會發現目錄或檔案 “怎麼” 變得這麼多
===========
/project_folder/
/project_folder_20180101/
/project_folder_20180405/
/news/news.php
/news/news_bk20180101.php
/news/news_bk20180307.php
==============
然後…
完全忘記 project_folder_20180101
與 news_bk20180307.php
備份的原因
如果今天有使用版控系統,每一次的異動紀錄都會被記錄下來,而且在原本的目錄下,你不會在看到這麼多備份的檔案、資料夾,這些會被記錄在 .git q目錄裡
接觸過版控之後
相信之後在做每個專案時,會多了很多安心感
寫壞了,回朔一下就好了呀~
每一次的 commit 都是你的心路歷程
趕緊來做一下筆記,順便讓自己可以做複習
安裝步驟省略…
查看版本
git --version
須設定以下兩行設定,不然沒辦法 commit
git config --global user.name "你的名字"
git config --global user.email "你的信箱"
如果你忘記當初設定了什麼name、email,可以下這行指令
git config --global --list
如果要看其他 config 設定
顯示config system 上的設定
git config --system --list會秀出所有config上的設定
git config --local --list會秀出所有config上的設定 (global, system, local)
git config --list
建立初始容器/數據庫
git init
查詢目前目錄變化狀態
查看全部
git status查看單擋
git status 檔案名稱
比較
比較全部
git diff比較檔案與目前的commit差異
git diff 檔案名稱比較 commit 間的差異
git diff commit1 commit2比較 commit 的檔案差異
git diff commit1:檔案名稱 commit2:檔案名稱
將檔案加入/更新索引的方式
全部加入/更新索引(懶人法)
git add .單檔
git add 檔案名稱
提交
簡易方式
git commit -m "do something…"預設
git commit
※如果在合併中遇到衝突或特別的問題,當你處理完後要做 commit 時,盡量不要自行使用「-m “xxxx”」,而是直接打「git commit」即可,這樣子系統會預設帶入一些資訊給你,然後再透過 vim 做編輯即可,當然還要稍微了解一下 vim 如何操作
顯示歷史 commit 紀錄
顯示詳細資訊
git log顯示最後2筆
git log -2顯示簡易資訊
git log --oneline顯示簡易的線圖 (如果你沒有安裝像是章魚、source tree...等)
git log --oneline --graph
查看分支所有操作記錄
git reflog
常用的還原
「索引(index)」、「目錄(working directory)」、「數據庫(repository)」
HEAD、HEAD~1(HEAD^)、HEAD~2(HEAD^^)…等
將「數據庫」、「索引」、「目錄」回到最後一次的 commit
git reset --hard將「數據庫」、「索引」回到最後一次的 commit
git reset --mixed(預設,可不打)將「數據庫」回到最後一次的 commit
git reset --soft將所有索引還原HEAD~2的 commit (不包含目錄)
git reset [--mixed] HEAD~2
單一檔案還原索引 (不包含目錄)
git reset [--mixed] HEAD 檔案名稱還原至前次下指令前的狀態
git reset --hard ORIG_HEAD
分支
新增分支
git branch 新分支名稱切換分支
git checkout 分支名稱新增分支並切換到新分支
git checkout -b 新分支名稱刪除分支
git branch -d 分支名稱合併分支(假設 feature 要合併到 develop,要先將分之切至 develop)
1. git checkout develop
2. git merge feature
如果在其他分支的 commit 想拿來使用
複製其他分支 commit 過來合併,
git cherry-pick 6nedya先複製過來,但不先做 commit
git cherry-pick 6nedya --no-commit
臨時要去別的地方查看資料不想做 commit 時,可以使用 stash 暫存
放到暫存區
git stash顯示暫存區所有資料清單
git stash list取出最後放進暫存區的資料
git stash pop取出最後放進暫存區的資料 (且暫存區會繼續保留)
git stash apply清空所有 statsh
git stash clear
遠端
複製遠端
git clone https://gitlab.com/xxx/xxx.git如果已經有資料夾
git remote add origin https://gitlab.com/xxx/xxx.gitpush到遠端
git push origin 分支名稱pull遠端
git pull origin 分支名稱顯示遠端資訊(含URL)
git remote -v重新設定遠端連結
git remote set-url origin https://github.com/xxx/xxx.git