Git

tags: Git

如何設定讓git不要對某些文件及檔案做管理?

建立一個.gitignore檔案,裡面的路徑檔就不會被追蹤

dist    //整個目錄
dist/*.js  //目錄下的所有.js檔案
dist/aaa.html     //特定檔案

***如果.gitignore檔案是之後才加上,原本已經有的還是在git上面,必須先取消git上的追蹤,並刪除

$ git rm -r --cached dist //資料夾
$ git rm --cached dist/aaa.html //單一檔案

Stash 暫存已經修改過的紀錄

$ git stash
$ git stash list
$ git stash apply stash@{0}
$ git stash drop stash@{0}

Branch

$ git branch     //查看有哪些分支
$ git branch <branch>    //建立
$ git checkout <branch>  //切換
$ git branch -d <branch> //刪除

本地端新開一個branch後 第一次要push到遠端

$ git push --set-upstream origin develop

追蹤用
$ git branch --set-upstream-to=origin/<branch> taog

clone 下來的時候只有 master branch ,想要切換到遠端別的branch解決方式

git branch -v -a  //查看遠端的branch

git checkout --track origin/develop  //切換過去後之後就會出現在本地端

重新修改最後commit文字

$ git commit --amend -m "[文字]"

取消這次commit,保留修改部分

$ git reset HEAD^

如何退回到某一個commit,且不保留先前任何的資料?

$ git add .
$ git reset --hard commitID

大小問題 case insensitive

參考:https://www.jianshu.com/p/420d38913578

git在windows與MacOS會把檔案名稱一樣(不分大小寫)識別為同一個檔案,所以git 會無法追蹤到,linux上才會區分大小寫

解決方式:可以透過設定config來修改

$ git config -l | grep ignorecase
$ git config --global core.ignorecase false
$ git config core.ignorecase false

取消單一個修改過的檔案

$ git checkout -- [路徑]/[檔案]

取消遠端連結

$ git remote -v    //查看遠端資訊
$ git remote remove origin       //取消遠端追蹤

新增遠端連結

$ git remote add [shortname] [url]

修改遠端連結

$ git remote set-url origin [url]

merger branch的部份檔案

直接取代方式

$ git checkout master   //切換到要merger的brach
$ git checkout [branch] [檔案路徑/test.java]  //將branch的test.java檔案取代master的test.java檔案

分之 merge 會判斷衝突的地方

$ git checkout -b master_temp   //新建一個分支
$ git merge [branch]      //用來解決衝突
$ git checkout master    //切換到master
$ git checkout [branch] [檔案路徑/test.java]  //在取代需要的檔案

如果不小心reset hard,怎麼救回來之前的commit?

只要是commit都會有紀錄,所以不管是reset或是你git做了什麼動作,只要有commit過都會記錄在 git reflog 裡面

$ git reflog    // 找出要還原的那個commit SHA-1 值,或是使用 git log -g 同reflog
$ git reset d2dd5f6 --hard   //就是那麼簡單