撤銷git add/commit 與更新從別人倉庫克隆的專案
阿新 • • 發佈:2018-12-14
1.撤銷 git add
撤銷操作
git status #先看一下add 中被add了哪些檔案
git reset HEAD #如果後面什麼都不跟的話 就是上一次add 裡面的全部撤銷了
git reset HEAD XXX/abc.python #就是對某個檔案進行撤銷了
演示:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: teset.py
$ git reset HEAD teset.py
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
teset.py # 提示你可以用 git add新增,說明撤銷成功
2.撤銷 git commit
git reset --soft HEAD^ # 這樣就成功的撤銷了你的commit(未撤銷add)
注意:
a. 僅僅是撤回commit操作,您寫的程式碼仍然保留(工作空間的程式碼還在)。
b. HEAD^的意思是上一個版本,也可以寫成HEAD1,如果你進行了2次commit,想都撤回,可以使用HEAD2
c. --mixed:不刪除工作空間改動程式碼,撤銷commit,並且撤銷git add 操作
d. --soft: 不刪除工作空間改動程式碼,撤銷commit,不撤銷git add .
e. --hard: 刪除工作空間改動程式碼,撤銷commit,撤銷git add .完成這個操作後,就恢復到了上一次的commit狀態。
演示:
# ------------提交 commit----------------
$ git add teset.py
$ git commit -m 'test'
[master 9ff1ee5] test
1 file changed, 8 insertions(+)
create mode 100644 teset.py
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 comm
# ------------撤銷 commit----------------
$ git reset --soft HEAD^
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: teset.py
順便說一下,如果commit註釋寫錯了,只是想改一下注釋,只需要:git commit --amend
此時會進入預設vim編輯器,修改註釋完畢後儲存就好了。
3.更新從別人倉庫克隆的專案
背景:在github上克隆了別人的程式碼,當別人更新後,我們需要再將其從github上更新到自己的本地倉庫。
第一步:首先使用git remote add upstream 原作者倉庫
把別人的倉庫新增到你的上游遠端,通常命名為upstream。(這部操作只需一次即可,以後再次更新時不用);
第二步:使用git remote -v
就可以看到一個origin
是你的,另外一個upstream是原作者的;
第三步:使用git fetch upstream
去拉原作者的倉庫更新;
第四步:使用git checkout master
切換到自己的master
第五步:使用git merge upstream/master
合併到你自己本地的master
,這樣自己本地的程式碼就得到更新了