# 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 //就是那麼簡單 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up