--- tags: Git,協作 --- # Git筆記 ### Git基本操作 * `git init`:初始化。 * .gitignore:將不要加入版控的檔案放入。 * `git add "file" or git add .`:加入要版控檔案。 * `git commit –m "<填寫版本資訊>`:建立版本及版本名 * `git commit –am"<填寫版本資訊>"`:建立版本及版本名,等於`git add`+`git commit –m` * `git branch –v`:確認主幹及分支及版本。 * `git log`:該分支的檢視提交的歷史記錄。 * `git status`:確認狀態。 ### Git分支切換 * `git checkout "分支名"`:切換分支。 * `git branch "分支名稱"`:新增分支並命名。 * `git branch –d "分支名稱"`:刪除分支。 ### Git 合併 * `git merge "分支名稱"`:git merge "分支名稱",將 "分支名稱" 合併進目前所在的分支。 #### 在 Merge 之前想試試看有沒有衝突? ```git git merge cat --no-commit --no-ff #Fast Forward ``` > 這個參數會假裝這次的合併失敗,並且不會產生新的 commit,讓使用者有機會可以在 commit 前再做一些事。 而後面再加上 --no-ff 參數則是不希望 Git 使用 Fast Forward 方式合併 ### Git reset and revert * `git reset e12d8ef^`:每一個 ^ 符號表示「前一次」的意思,所以 e12d8ef^ 是指在 e12d8ef 這個 Commit 的「前一次」,若很多次可以用~n。git reset e12d8ef~n。e12d8ef為版本代號 > 指向提交時用`~`(Tilde)和`^`(caret),指向某個提交的相對位置。最常用的就是在HEAD後面加上`~`(Tilde)可以指向第幾代的父代;`^`(caret) 可以指向幾世代以前的父代。 * `--hard`:此種模式完全不保留原始 commit 的任何資訊,會連同資料夾中實體檔案內容都進行重置,也就是直接將工作區、暫緩區及 git 目錄都重置成目標Reset結點的資料內容。 * `git revert`:新增一個 Commit 來反轉(或説取消)另一個 Commit 的內容,新增一個 Commit 來反轉(或説取消)另一個 Commit 的內容。