Git
顯示單次commit的改動內容
git show commit-id
git show HEAD~
什麼都不帶的時候預設顯示最近的一次
git show
patch相關
- 生成patch
git format-patch HEAD^
- 應用patch,保留commit資訊
git am file
- 打patch,但是不保留commit資訊
git apply file
git log特定搜尋
- 搜尋特定的作者
git log --author name
- 搜尋特定的title
git log --grep title
*只檢視和某個檔案相關的git log
git log filename
git stash的用法
詳見git-stash用法小結
常見情景:在git pull的時候提示有本地未儲存的修改,此時開發到一半不想要提交也不想刪除的時候
git stash
把所有未提交的修改(包括暫存的和非暫存的)都儲存起來,用於後續恢復當前工作目錄
git stash list
檢視現有的stash目錄
git stash pop
應用之前快取的最近一個記錄
謹慎使用
git stash drop <stash@{0}>
刪除某一個指定的stash
git stash clear
刪除所有快取的stash
github fork 出的倉庫怎樣與原倉庫保持一致
-
git remote -v 檢視遠端庫地址;
-
git remote add upstream XXXXXXXXXXXXXXX.git //upstream 設定原倉庫的名字,後面是原倉庫的地址;
-
git fetch upstream //抓取原倉庫的修改檔案
-
git checkout XXX // 切換到需要合併的本地倉庫的本地分支。
-
git merge upstream/dev //將原倉庫的Dev 分支與本地倉庫的當前分支合併
-
git push origin XXX_branch //將當前倉庫的本地分支推送到遠端分支
git 如何修改已經提交到repo的commit
利用互動式rebase
-
git rebas1. e -i HEAD~N //N是你要修改的倒數第幾次commit
-
修改開啟的文件,類似於這樣
pick abcdef1 Commit message 1
pick abcdef2 Commit message 2
pick abcdef3 Commit message 3如果只修改commit message, 將對應的pick改成reword,如果要修改code將pick改為edit
-
儲存修改
-
git rebase --continue
-
git push origin branch-name -f //強制推送,注意要非常小心!