先說今天遇到的問題,看到乙個config.php的配置檔案一直在改動的狀態下,可是和遠端的config.php是不一致的,我不須要提交它,可是看它在 modified的狀態下,非常不爽。想刪除它。git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了,把遠端的config.php也給乾掉了,
想到要回滾到近期的一次提交。做這個工作前。提醒下,在本地直接把**備份乙份,要不之後的操作不當。會直接把你的這次改動所有抹殺掉。到時你哭都來不及。除非你對git有相對的把握,深知不論什麼 一步操作的意義。了解git的 分支機制。
回滾分三步:
(1)備份你當前的** 庫乙份,不是必須的操作,可是提醒要 做的,當然有能夠用git branch backup 把當前的版本號備份到乙個新的分支
(2)git log找到要回滾的版本號
(3)git reset --hard 要回滾到的版本。比方 git reset --hard 91deaf(檔案都回來了。包含config.php)
然後git status的時候,可能會提醒你 your branch is behind 'origin/master' by 2 commits 類似的錯誤。然後提醒你用git pull先下拉。假設你直接git push是推不了的,
由於遠端已經是在你reset後的版本號了,也就是說遠端的版本號比你reset的版本號新,你是reset回滾到老版本號的。
可是你git pull後(我用的是git
fetch,之後再git merge合併)。又會又一次把遠端的最新版本號庫覆蓋掉本地的老版本號,這樣又回到了剛開始的問題。
假設 你在上述回滾三步之後,假設發現 有問題 ,又一次切換到備份分支,也回到了剛開始的你本地的操作開始的版本號,也就是reset回滾回來的檔案又被刪除了,比方config.php。這點非常nb。
事實上備份分支也就是你當前最新狀態的版本號 。reset後回到了老版本號。
那麼究竟怎麼解決這個問題呢?用了乙個非常笨的辦法,可是眼下沒有找到好的方法。
git reset 後。git push -f 強推,假設不帶引數-f是推不了的。
推過之後。再把你這次改動的檔案乙個個加上去。git add ,git commit ,git push 完成。
思考:或許在用git reset --soft會解決問題。
git版本號回滾
先說今天遇到的問題,看到乙個config.php的配置檔案一直在改動的狀態下,可是和遠端的config.php是不一致的,我不須要提交它,可是看它在 modified的狀態下,非常不爽。想刪除它。git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了...
Git學習 git回滾到任意版本號
有的時候我們不小心將本地子分支的某一些錯誤 commit 提交 然後merge或者push到遠端分支,這時候導致遠端的 出現問題了?然後想撤銷本次merge或push操作。這時候就可以使用git reset操作了。1 終端先列印最近5次的操作記錄 git log 5 commit 8fcf6382b...
Git 標籤(版本號)
在git中打標籤非常簡單,首先,切換到需要打標籤的分支上 1 git branch 2 dev 3master 4 git checkout master 5 switched to branch master 然後,敲命令git tag就可以打乙個新標籤 git tag v1.0 可以用命令git...