/git-command

記錄一些工作中常用的git命令。

常用的git命令

rebase

找出共同父節點。 以TARGET_BRANCH作為基點,插入當前分支之共同父節點之上的節點。 並將雙方共同父節點之上之節點進行合併。 如果合併過程中有衝突,將其解決,並生成新的提交加至到歷程最頂。

git rebase ${TARGET_BRANCH}

HEADSHA1之間的提交分別進行操作。 pick - 使用該次提交內容。 squash - 使用該次提交內容,將內容融入前一個被pick的提交。

git rebase -i ${SHA1}^

reset

staged檔案全退至unstaged

git reset HEAD .

staged檔案退至unstaged

git reset HEAD ${FILE_PATH_1} ${FILE_PATH_2}

HEADSHA1之間的提交撤銷,並將異動unstaged

git reset ${SHA1}^

TARGET_BRANCH分支內容,覆蓋當前分支。

git reset --hard ${TARGET_BRANCH}

revert

還原選定提交的修改,並將還原之內容staged

git revert --no-commit ${SHA1}

還原SHA1SHA2內(包含自身)之提交,並將還原之內容staged

git revert --no-commit ${SHA1}^..${SHA2}

cherry-pick

將某個提交加入當前分支。

git cherry-pick ${SHA1}

reflog

查看操作歷程,可以回退到那些SHA值之狀態。

git reflog

diff

比對分支之檔案差異。BRANCH_A內容以 --- 表示。BRANCH_B內容以 +++ 表示。

git diff ${BRANCH_A}..${BRANCH_B}

merge

合併TARGET_BRANCH分支到當前分支,且不快進。

git merge --no-ff ${TARGET_BRANCH}

checkout

切換分支至TARGET_BRANCH分支。

git checkout ${TRAGET_BRANCH}

以當前分支及狀態切換並建立本地分支。

git checkout -b ${TRAGET_BRANCH}

unstaged檔案全清除。

git checkout .

將指定位置的unstaged檔案清除。

git checkout ${FILE_PATH_1} ${FILE_PATH_2}

status

查看當前分支異動狀態。

git status

lg

查看節點歷程圖。

git lg

ll

查看節點歷程,能看見有哪些檔案異動及異動行數。

git ll

fetch

以遠程倉庫所有分支之最新內容,自動更新本地遠程分支內容。

git fetch

push

將當前分支內容強制複寫至遠程倉庫。

git push -f

刪除遠程倉庫分支。

git push ${REMOTE_NAME} :${BRANCH_NAME}

add

unstaged檔案全staged

git add .

將指定位置的unstaged檔案staged

git add ${FILE_PATH_1} ${FILE_PATH_2}

branch

查看本地分支。

git branch

查看遠程分支。

git branch -r

查看所有分支。

git branch -a

刪除分支。

git branch -d ${TARGET_BRANCH}

強制刪除分支。

git branch -D ${TARGET_BRANCH}

clone

下載倉庫到當前命令行指向的位址。

git clone ${URL}

pull

拉取遠程倉庫當前分支的最新內容,並同步至本地。

git pull