Git的使用场景
****************終極殺人魔--火云邪神****************
git:終極大招:
1:場景: 你已經(jīng)執(zhí)行了 git push, 把你的修改發(fā)送到了 GitHub,現(xiàn)在你意識到這些 commit 的其中一個是有問題的,你需要撤銷那一個 commit.
方法: git revert <SHA>
?
2:場景: 你在最后一條 commit 消息里有個筆誤,已經(jīng)執(zhí)行了 git commit -m "Fxies bug #42",但在 git push 之前你意識到消息應(yīng)該是 “Fixes bug #42″。
方法: git commit --amend 或 git commit --amend -m "Fixes bug #42"
3:場景: 一只貓從鍵盤上走過,無意中保存了修改,然后破壞了編輯器。不過,你還沒有 commit 這些修改。你想要恢復(fù)被修改文件里的所有內(nèi)容 — 就像上次 commit 的時候一模一樣。方法: git checkout -- <bad filename>
4:場景: 你在本地提交了一些東西(還沒有 push),但是所有這些東西都很糟糕,你希望撤銷前面的三次提交 — 就像它們從來沒有發(fā)生過一樣。
方法: git reset <last good SHA> 或 git reset --hard <last good SHA>
5:場景: 你提交了幾個 commit,然后用 git reset --hard 撤銷了這些修改(見上一段),接著你又意識到:你希望還原這些修改!
方法: git reflog 和 git reset 或 git checkout
6:場景: 你進(jìn)行了一些提交,然后意識到你開始 check out 的是 master 分支。你希望這些提交進(jìn)到另一個特性(feature)分支里。
方法: git branch feature, git reset --hard origin/master, and git checkout feature
7:場景: 你在 master 分支的基礎(chǔ)上創(chuàng)建了 feature 分支,但 master 分支已經(jīng)滯后于 origin/master 很多。現(xiàn)在 master 分支已經(jīng)和 origin/master 同步,你希望在 feature 上的提交是從現(xiàn)在開始,而不是也從滯后很多的地方開始。
方法: git checkout feature 和 git rebase master
8:場景: 你向某個方向開始實(shí)現(xiàn)一個特性,但是半路你意識到另一個方案更好。你已經(jīng)進(jìn)行了十幾次提交,但你現(xiàn)在只需要其中的一部分。你希望其他不需要的提交統(tǒng)統(tǒng)消失。
方法: git rebase -i <earlier SHA>
9:場景: 你在一個更早期的 commit 里忘記了加入一個文件,如果更早的 commit 能包含這個忘記的文件就太棒了。你還沒有 push,但這個 commit 不是最近的,所以你沒法用 commit --amend.
方法: git commit --squash <SHA of the earlier commit> 和 git rebase --autosquash -i <even earlier SHA>
10:場景: 你偶然把 application.log 加到代碼庫里了,現(xiàn)在每次你運(yùn)行應(yīng)用,Git 都會報(bào)告在 application.log 里有未提交的修改。你把 *.login 放到了 .gitignore 文件里,可文件還是在代碼庫里 — 你怎么才能告訴 Git “撤銷” 對這個文件的追蹤呢?
方法: git rm --cached application.log
?
轉(zhuǎn)載于:https://www.cnblogs.com/Jusive/p/5341573.html
總結(jié)
- 上一篇: 字节流还是字符流
- 下一篇: 关于水晶报表的一些错误