在乙個專案比較大的時候或者專案在現場版/使用版本上做修改的時候,就需要非常慎重了,一方面可能新來的開發人員不了解**結構去做修改,很可能增加新的bug甚至導致應用崩潰,所以很多公司會加入審核機制,如果審核不通過提交就會被打回,那麼打回後git怎麼回退到原來的狀態呢?
首先進入到專案原始碼目錄,我用的androidstudio開發,在terminal下自動進入的是專案原始碼目錄:
確保當前分支上最新的提交是你需要撤銷的提交,如果不是或者別人也有提交,那麼你在撤銷的時候會帶過來別人的**,那麼這個時候就不能保證你的順利撤銷了,可能還會產生衝突之類的,這個切記;
e:\development\code\s***xyx_2018>git log .我們使用git log檢視最新的提交:
e:\development\code\s***xyx_2018>git log .
commit 550416381e6aa292544a13b89c05692cc660e089 (head -> develop)
author: zhonglunshun date: wed oct 17 16:21:58 2018 +0800
1.(>2)
2.3.?
4.?change-id: i41cabbc05901d10b4f6053fa18a672cf5a291944
commit 2c4b2cf4581bfc98bce09dde98bf4510ae4ec178
author: zhonglunshun date: tue oct 16 16:07:32 2018 +0800
我們可以清楚的看到,最新的提交是我需要撤銷的**,我們拿到最新一條記錄的前乙個commitid,2c4b2cf4581bfc98bce09dde98bf4510ae4ec178
,撤銷用得上,接下來我們使用git reset commitid就能把push撤銷;
e:\development\code\hotmail_2018>git reset --soft commitid
e:\development\code\hotmail_2018>git reset --soft 2c4b2cf4581bfc98bce09dde98bf4510ae4ec178
e:\development\code\hotmail_2018>git status .
on branch develop
your branch is ahead of 'origin/develop' by 1 commit.
(use "git push" to publish your local commits)
changes to be committed:
(use "git reset head ..." to unstage)
untracked files:
(use "git add ..." to include in what will be committed)
subway2.json
然後我們使用git status檢視一下撤銷push後的狀態,檢查一下是否成功,這裡我們可以看到成功了的;
git status .
on branch develop
your branch is ahead of 'origin/develop' by 1 commit.
(use "git push" to publish your local commits)
changes to be committed:
(use "git reset head ..." to unstage)
untracked files:
(use "git add ..." to include in what will be committed)
subway2.json
撤銷push之後我們需要用git status檢視確認一下。然後使用git reset head
撤銷提交;也就是說我們可以使用這條指令撤銷上一步操作,push上一步操作是commit和add,所以執行後可以撤銷commit和add;
git reset head執行結果如下:
e:\development\code\hotmail_2018>git reset head
unstaged changes after reset:
這個時候,我們把commit撤銷了,那麼我們檢視下狀態,使用git status命令;
e:\development\code\hotmail_2018>git status .
on branch develop
your branch is ahead of 'origin/develop' by 1 commit.
(use "git push" to publish your local commits)
changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
untracked files:
(use "git add ..." to include in what will be committed)
subway2.json
no changes added to commit (use "git add" and/or "git commit -a")
到這裡我們就把**回滾到未提交狀態了; Git 09 合併多個提交到乙個提交上面
語境 在多乙個 commit 的備註相同,或者,commit次數過多,將多個commit合併成乙個commit 使 log 看起來好看.檢視 要合併的 log git log oneline bc8bae7 head master update4 71ea6ce feat update3 4ae5c...
版本管理 Git提交特定版本到遠端庫
有些使用場景,我們提交到本地庫有多個修改版本,比如hash8,hash9,hash10,但是,我們只想提交hash10這一次修改到遠端庫,而不是執行git push origin master後,將這三次修改同時提交到遠端庫,有沒有機制實現呢?有一種方法,通過 git push origin 遠端庫...
Git 切換分支命令列 版本提交
1 git branch 檢視分支 2 如果沒有任何顯示,兩種情況 一是當前沒有分支,二是沒有切換到當前專案的目錄 此處講述第二種情況,cd 切換到專案路徑 3 git branch 再次檢視分支 看是否包含需要的分支,如果沒有,則建立乙個新的分支 4 git checkout b feature ...