超前一個版本熬拒,落后N個版本
首先打開終端, 然后輸入(非常不建議使用):
$ git reset --hard HEAD^
這句話的意思是將自己最近的一次提交撤銷,回到push之前的狀態(tài)肿轨。但是所有commit的內(nèi)容就都消失了掉弛。
如果不想讓commit消失,可以改一下參數(shù)单芜。用這個參數(shù)可以保證你提交的代碼原封不動的保存下來展姐。前提是你本地的工作臺是干凈的躁垛。如果不是請把所有代碼都暫存。
$ git reset --soft HEAD^
執(zhí)行這句話之后重新拉取一遍代碼就可以了诞仓,push的都會撤銷回來缤苫。
如果想一次回退多個push速兔,可以這樣:(例子是撤銷最近三次的提交)
$ git reset --soft HEAD~3
如果想回退到某個指定版本墅拭,在終端中輸入:
$ git reset --soft 1234567
1234567是要回退到的版本號,根據(jù)具體情況而定涣狗,這里只是舉例子谍婉。
版本號可以不寫全,前幾位就可以了镀钓,Git會自動去找穗熬。當(dāng)然也不能只寫前一兩位,因為Git可能會找到多個版本號丁溅,就無法確定是哪一個了唤蔗。
不識別新添加的文件
工作目錄中,新建一個文件,比如一個.h和.m文件妓柜。
但是箱季,git無法識別這些文件。
用git status命令棍掐,返回目錄是clean的藏雏。表明沒有任何修改。說明git沒有識別到這些新增加的文件作煌。也說明這個問題是git內(nèi)部的問題掘殴,跟用什么版本控制工具沒關(guān)系(不是sourcetree的鍋)
首先,找到了原因粟誓,那么強制給他加一下奏寨,用終端到文件目錄下,然后輸入:
$ git add 1.m
返回?zé)o法添加鹰服,說1.m已經(jīng)處于.gitignore中服爷。但是iganore中明明沒有忽略這些m文件。
那就更狠一點获诈,輸入
$ git add -f 1.m
這樣就可以將1.m添加到git的版本控制中仍源。如果直接git add -f 1.m
報錯,無法找到文件1.m,那么就將1.m的完整路徑輸入即可舔涎。
建議先看一下全局忽略列表里有沒有笼踩。