Git與Repo 的使用

2022-07-20 01:24:09 字數 4398 閱讀 1357

一、linux常用命令

pwd           用於顯示工作目錄,執行pwd指令可立刻得知您目前所在的工作目錄的絕對路徑名稱。

chmod      用來變更檔案或目錄的許可權。

>                表示覆蓋原檔案內容(檔案的日期也會自動更新)。

>>              表示追加內容(會另起一行,檔案的日期也會自動更新)。

mkdir        在工作目錄下建立乙個名子目錄。

histroy  檢視歷史命令

二、git的使用

1.  git init

初始化乙個git倉庫,即把當前目錄變成git可管理的倉庫(repository,版本庫又名倉庫)。

2.  git add

把檔案新增到版本庫,實際上就是把檔案修改新增到暫存區(stage)。

如:$ git add readme.txt

3.  git commit

把檔案提交到版本庫,實際上就是把暫存區的所有內容提交到當前分支(master)。

如:$ git commit -m "wrote a readme file"

-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裡方便地找到改動記錄。

git commit命令執行成功後會告訴你,1 file changed:1個檔案被改動(我們新新增的readme.txt檔案);2 insertions:插入了兩行內容(readme.txt有兩行內容)。

commit可以一次提交很多檔案,所以你可以多次add不同的檔案,比如:

$ git add file1.txt

$ git add file2.txt file3.txt

$ git commit -m "add 3 files."

注意:如果不用git add到暫存區,那就不會加入到commit中。

4.  git status

檢視什麼檔案被改過了,時刻掌握倉庫當前的狀態。

5.  git diff

檢視修改內容。

如:$ git diff readme.txt

6.  git log

顯示從最近到最遠的提交日誌。如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數:$ git log --pretty=oneline

穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。

7.  git reflog

檢視命令歷史。

要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。

8.  git reset

版本回退。

如:$ git reset --hard head^

在git中,用head表示當前版本,上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100。

如:$ git reset --hard 1094a

1094a是版本號的前幾位。版本號沒必要寫全,前幾位就可以了,git會自動去找。

9.  git checkout -- file

如:$ git checkout -- readme.txt

git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。

git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。

注意:git checkout -- file命令中的--很重要,沒有--,就變成了「切換到另乙個分支」的命令。

10.  git reset head

把暫存區的修改撤銷掉(unstage),重新放回工作區。git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本。

場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。

場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head ,就回到了場景1,第二步按場景1操作。

11.  git rm

從版本庫中刪除檔案。git rm前,需要先手動刪除檔案($ rm test.txt);git rm之後還要git commit:

如果刪錯了,用git checkout(如:$ git checkout -- test.txt) 把誤刪的檔案恢復到最新版本。從來沒有被新增到版本庫就被刪除的檔案,是無法恢復的!

12.       git push

把當前分支master推送到遠端

問題記錄:git push報錯:missing change-id in commit message footer

原因:情況二:其他提交沒有change_id,因為gerrit要求每個提交都要有change_id。

解決方法:

三、repo的使用

1.  repo init -u [options]

在當前目錄下初始化repo,會在當前目錄生生成乙個.repo目錄,像git project下的.git一樣,-u指定url,可以加引數-m指定manifest檔案,預設是default.xml,.repo/manifests儲存manifest檔案。.repo/projects下有所有的project的資料資訊,repo是一系列git project的集合,每個git project下的.git目錄中的refs等目錄都是鏈結到.repo/manifests下的。

如:repo init -u ssh: b sprdroidq_trunk

2.  repo sync [project1...projectn]

同步到最新版本庫,預設同步所有倉庫,可以指定project 。

3.  repo status

檢視本地所有project的修改,在每個修改的檔案前有兩個字元,第乙個字元表示暫存區的狀態。

letter

meaning

description

-no change

same in head and index

aadded

not in head, in index

mmodified

in head, modified in index

ddeleted

in head, not in index

rrenamed

not in head, path changed in index

ccopied

not in head, copied from another in index

tmode changed

same content in head and index, mode changed

uunmerged

conflict between head and index; resolution required

每二個字元表示工作區的狀態 

letter

meaning

description

-new/unknown

not in index, in work tree

mmodified

in index, in work tree, modified

ddeleted

in index, not in work tree

4.  repo manifest 

檢視清單檔案

5.  repo branch或repo branches

檢視所有分支

6.  repo diff

檢視修改

7.  repo version 

檢視repo版本號

8.  repo prune

刪除已經merge的分支

9.  repo abandon

刪除分支,無論是否merged

10.  repo grep 

在專案中進行內容查詢

三、其他

as導包快捷鍵alt+enter

repo和Git 使用記錄

本地 步驟 1 建立資料夾 helloworld,進入目錄 2 新專案初始化 git init 3 將當前目錄下所有檔案新增到緩衝區 git add 4 將緩衝區 提交到本地倉庫 git commit m 注釋 遠端 步驟 1 在github上建立乙個倉庫 git clone git remote ...

repo和Git的關係

git作為乙個版本控制工具,功能很強大,新建分支,切換分支都很快,小團隊用git就能很好地管理好了,但如果是android系統如此龐大的工程呢,我們知道全套android原始碼是很大很大的,目錄結構也很複雜,如果直接將其init成乙個git庫,簡直是災難,也不符合解耦的要求。要知道git是無法將整個...

repo和Git的關係

git作為乙個版本控制工具,功能很強大,新建分支,切換分支都很快,小團隊用git就能很好地管理好了,但如果是android系統如此龐大的工程呢,我們知道全套android原始碼是很大很大的,目錄結構也很複雜,如果直接將其init成乙個git庫,簡直是災難,也不符合解耦的要求。要知道git是無法將整個...