--- tags: Git --- git 筆記 === ## 提交 + git add / git commit 本地端提交 ## 分支 + git branch branch_new + git checkout branch_new ## 合併分支 + git merge branch_name head 在 master上,下merge指令,指定要merge的branch + git rebase 會在目標branch 下面生成一個新結點,繼承自原來的branch與目標branch 相當於是merge ## 移動HEAD 與 branch + git checkout c1 指定某個節點 checkout,這樣指標就會指向特定的一次提交而不是指向一個branch + git checkout c1^ 指向目標節點c1的一級父節點 + git checkout c1^^^ 指向目標節點c1的三級父節點 + git checkout c1~3 指向目標節點c1的三級父節點 + git branch -f br_name c1~2 強制分支br_name的指標指向c1節點的兩級父節點 ## 同步遠端分支 + git pull git fetch and git merge的結合 + git push origin master 將 master 分支上的提交推到遠端master分支 指定 origin 倉庫的master分支同步 不管你的HEAD指向哪裡都可以同步指定的分支 如果不指定origin master 就會以HEAD所在位置去更新 + git push origin master:newBranch ## 撤銷提交 + git reset branch~n 把目前的分支指到前n個提交,也就是取消目前的提交,但只對本地的分支有效,對遠端無效 ``` ex: git reset local~2 往前兩個提交指 c1 -> c2 -> c3(local*) => c1(local*) ``` + git revert branch 把前一個提交(C1)複製並成為當下(C2)的下一個提交(C2') ``` ex: git revert share c1 -> c2(share) => c1 -> c2 -> c2'=c1(share) ``` ## 改變跟蹤屬性 + git checkout -b totallyNotMaster o/master 建立一個分支 totallyNotMaster 並且追蹤 origin master 如果在totallyNotMaster 上面push,會自動把內容推到master 分支上 + git branch -u o/master foo 指定 foo分支追蹤遠端的master分支 + git branch ### 指定遠端目標 ``` git remote -v 查看目前的 repo指向的遠端 git remote rm [target] 刪除某個remote目標 git remote add origin [https://github.com/your/git/remote/url] 指定新的遠端目標 ``` ### 取消追蹤某些檔案 ``` git rm -r --cached [filename]   //取消追蹤檔案,但保留本地檔案 git rm -r --f [filename]   //取消追蹤並且刪除本地檔案 ``` ### 調整設定 ``` git config --global user.name "[name]" 設定使用者名稱 git config --global user.email "[valid-email]" 設定使用者信箱 ``` ### 忽略自簽SSL憑證 ``` git -c http.sslVarify=false (push/clone/pull) ``` ### 取消stage ``` git reset [filename] ```