Git 簡介
版本控制(version control)對於軟體開發就如同人類對於空氣一樣,已經是生存的必要要素之一,如果你所處的公司沒有版控,那...還是趕快打開Linkedin、104找下一間有板控的公司吧XD。本篇我將統整我所理解的Git,其中包刮Remote repository、Local repository以及目前我常用的git commands,如果有任何和你理解不同或者我舉例不清楚的地方,還請留言告訴我!!!
在Git的世界中,有兩個版本庫(Repository),一個是遠端(Remote)、一個是本地(Local)。遠端(Remote)版本庫代表server上所保存的source code,可能是你自己的GitHub、可能是別人所架設的GitLab等。本地版本庫則是當從遠端版本庫 clone下來後,存在於你自己電腦中的source code。以branch 皆為master為例,可能的情況為 - 在Local開發功能完成後,commit (git commit)至本地版本庫,並且推 (git push)至遠端版本庫,完成以上步驟後,其他的共同開發者就可以同步(git pull)一份你改好的source code至他的本地版本庫繼續開發。希望透過這個簡單的例子可以讓你了解git大致的世界觀,以下我將列出我自己在開發上常用的幾個git commands。
Git Commands
data transport
git add — 將變更的程式碼儲存至本地暫存
git commit — 將本地暫存更新至local的版本庫
git push — 將本地的版本庫同步更新至server的版本庫
git pull — 將server的程式碼版本更新至local的版本庫以及當前的branch版本
git fetch — 將server的版本庫同步更新至local的版本庫
git merge — 將local的版本庫同步更新至當前的branch版本
branch分支
git checkout -b [your_branch_name]—新增分支,並變更當前分支至新增的
git checkout -b [your_branch_name] origin/[remote_branch_name] — 將遠端的分支checkout至本機端
git checkout [your_branch_name] —切換分支
git branch — 列出所有分支
git branch -r — 列出所有remote 分支
stash暫存
git stash — 暫存目前所有變動
git stash save [your_stash_name] — 暫存目前所有變動,並命名stash名稱
git stash list — 列出目前所有的暫存
git stash pop — 提取最新的暫存
git stash pop @{index} — 指定提取暫存
git stash drop — 刪除最新的暫存
git stash drop @{index}— 指定刪除暫存
git stash clear — 清理暫存
clean 清除
git clean -n — 顯示此次清除的檔案
git clean -f — 強制清除檔案
git clean -f -d — 清除檔案和資料夾
revert
git revert --no-commit [your_hashcode] HEAD
git revert HEAD --no-edit — 拆除上一個commit(適用於已經push出去)
git revert HEAD~3 --no-edit — 拆除上三個commit(適用於已經push出去)
reset
git reset HEAD^ — 拆除上一個commit
git reset HEAD~3 — 拆除上三個commit
rename directory
git mv [old name] [new name]