天天看點

Android Git 工作流,基礎,回撤commit

一 Git的工作流程

我們知道Git有三大區(工作區、暫存區、版本庫)以及3 個狀态(untracked、unstaged、uncommited),下面隻是簡述下Git的大概工作流程,詳細的可以參見 git 幫助文檔 【連結】。

(1)打開你的項目檔案夾,除了隐藏的.git檔案夾,其他項目檔案所在的地友善是工作區,工作區的檔案需要添加到Git的暫存區(git add),随後再送出到Git的版本庫(git commit)。

  (2)首次建立的檔案都是untracked狀态(未跟蹤),此時需要git add到暫存區,Git便會在暫存區中生成一個該檔案的索引,檔案此時處于uncommited狀态,需要git commit送出到版本庫。添加到了版本庫之後,再對檔案進行修改,那麼檔案的狀态會變為unstaged狀态。

1.git分區

工作區、暫存區、版本庫

tip:

1.1 除了隐藏的.git檔案夾,其他項目檔案位于的地友善是工作區 (預設)

1.2 工作區的檔案需要添加到Git的暫存區(git add)

1.3 Git的版本庫(git commit)

2.git 狀态

untracked、unstaged、uncommited

2.1 建立的檔案都是untracked狀态(未跟蹤)

2.2 git add到暫存區,Git便會在暫存區中生成一個該檔案的索引,檔案此時處于uncommited狀态

2.3 git commit生成版本庫,添加到了版本庫之後,再對檔案進行修改,那麼檔案的狀态會變為unstaged狀态

回撤操作

團隊協同開發過程中需要頻繁的commit ,無法避免會出現誤操作誤送出情況。在git誤送出後能夠對代碼進行回撤,也會是非常考驗開發者能力必不可少的一項技能。

【回撤暫存區】

1.建立檔案,執行 git add 檔案。檔案被添加到暫存區

2. git rm --cache 檔案名

優點:隻删除暫存區,對工作區保留修改狀态,如果需要,再次進行git add 檔案,可以加入暫存區

git status 檢視目前檔案的狀态[untracked、unstaged、uncommited]

【同時回撤暫存區和工作區】

3.同時删除暫存區和工作區檔案

git rm -f 檔案名

【同時回撤暫存區和工作區和版本庫】

4.對于已經commit 未 push 的檔案,進行回撤

如果隻對工作區,暫存區進行rm,是清理不幹淨的。版本庫中已經包含commit的檔案

,需要将commit 版本庫中的檔案進行清理。

git reset --[soft,mixed,hard] 三種可選

4.1 soft 隻清除版本庫中commit的内容,暫存區和工作區檔案依然保持修改待送出狀态

4.2 mixed 對于無誤送出版本後,在工作區又進行了修改。需要回撤commit的檔案同時保留工作區,送出後更改的内容,建議采用

4.3 hard 完全初始化到指定的送出版本,不了解或者不明白的慎用,因為git reset --hard 會将送出後修改全部初始化。

git reset --[soft,mixed,hard] -送出版本号

版本号可以在commit記錄上右鍵,copy revision Number 進行複制,或者配合 git log -n 條數。

E:\reworlderDev\reworldproject>git  log -n 2

error: cannot spawn more: No such file or directory
commit 73fc7025fbde761184f8c2c07a9d087645bb8c (HEAD -> reworld_dev)
Author: 1111111 <[email protected]>
Date:   Tue Jul 28 21:26:26 2020 +0800
內建2019
commit 50702e89c7557fcad5c199415e4f1aeaac58ca (origin/reworld_dev)
Merge: 173d2c18b 9dd9fe35b
Author: 11111 <[email protected]>
Date:   Tue Jul 28 17:34:55 2020 +0800

 Merge remote-tracking branch 'origin/reworld_dev' into reworld_dev