GIT 命令學習 獲取與建立專案

2021-07-30 04:58:51 字數 4418 閱讀 8160

init

init主要是用來建立乙個git庫或者重新初始化乙個已經存在的庫。這個命令會 建立乙個.git目錄,其中會包含objects、refs/heads、refs/tags子目錄以及一些模版檔案,並且乙個指向主分支head的初始的head檔案也同時被建立了。在乙個已經存在的庫上進行git init命令是安全的,不用擔心會對該庫的檔案進行重寫覆蓋。

1、命令格式

git init [-q | --quiet] [--bare] [--template=]

[--separate-git-dir ]

[--shared[=]] [directory]

2、引數選項

1) -q  --quiet

只輸出錯誤和警告資訊,其他輸出會被禁止。

2) --bare

建立乙個的裸庫,如果

git_dir環境變數沒有設定,就會將當前目錄設定為該環境變數。

3) --template=

指明使用的模版目錄。

4) --separate-git-dir=

建立乙個文字檔案包含了真正庫的路徑代替在指定的路徑($git_dir 或者 ./.git)中初始化倉庫。如果是重新初始化,則會將庫轉移至新的路徑下。

5) --shared[=(false|true|umask|group|all|world|everybody|0***)]

指明該庫被多個使用者共享。這樣就可以讓同乙個工作組的人員向庫提交檔案。之後的引數指明了許可權要求。

clone

clone主要用來轉殖乙個庫到新的目錄下,對被轉殖的庫的各個分支建立遠端追蹤(remote-tracking)分支,建立並檢驗從被轉殖庫的存活分支所分過來的初始分支。轉殖之後:不帶引數的簡單命令(git fetch)就能更新所有追蹤的分支;不帶引數的命令(git pull)就能將遠端的主分支(master branch)合併到本地的主分支。這些預設的配置需要通過 在 refs/remotes/origin 下引用遠端分支的heads 或者初始化 remote.origin.url 和 remote.origin.fetch 兩個配置變數。

1、命令格式

git clone [--template=]

[-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]

[-o ] [-b ] [-u ] [--reference ]

[--dissociate] [--separate-git-dir ]

[--depth ] [--[no-]single-branch]

[--recursive | --recurse-submodules] [--[no-]shallow-submodules]

[--jobs ] [--]

2、引數選項

1) --local -l

當被轉殖的庫在本地的機器上時, 通過複製head檔案以及objects、refs兩個目錄下的檔案來轉殖庫(repository)。如果repo被指明為本地路徑,--local本質上是乙個無效的操作符。如果repo被指定為乙個url,這個引數會被忽略。當 指明為本地路徑時 --no-local會被常規的git 傳輸方法過載。

2) --no-hardlinks

強制將轉殖程序由利用hardlinks轉換到複製 .git/objects目錄下的所有檔案。

3) --shared  -s

當不利用hard links 轉殖本地repo時,自動建立 .git/objects/info/alternates 來共享源repo。這會導致repo沒有自己的物件。

4) --reference[-if-able]

如果引用的repo在本地機器上,自動的建立.git/objects/info/alternates 來從引用的repo獲取物件。利用乙個已經存在的repo作為可以替換的repo,可以減少對轉殖物件的檔案複製以減少網路和本地儲存消耗。當使用--reference-if-able,會對不存在的目錄彈出警告並跳過而不是終止轉殖。

5) --dissociate

借用由--reference之命的引用物件來減少網路傳輸,當轉殖的是本地的借用物件時該借用會被終止。

6) --quiet -q

只輸出錯誤和警告資訊,其他輸出會被禁止。

7) --verbose   -v

完整執行,不影響輸出。

8) --progress

操作執行狀態會被預設地輸出到終端,除非設定了 -q 。這個標誌在標準錯誤流沒有被定向時也會強制的將執行狀態輸出到終端。

9) --no-checkout  -no

在clone完成後不檢測head。

10) --bare

建立乙個裸repo。

11)--mirror

建立乙個源repo的映象,暗含了 --bare。相比於 -- bare,--mirror不僅將源的本地分支對映到目標本地分支,也會對映其所有的refs(包括遠端追蹤分支、notes等)並建立乙個引用說明配置(refs configuration)使得所有的refs都會通過目的repo中的 git remote update 重寫。

12) --origin -o

利用 代替 遠端名字 origin 來保持對上游repo的追蹤

13) --branch -b

新建的head指向名為的分支,而不是指向被轉殖repo的head指向的分支。在非裸repo中,這個分支將會被check out。

14) --upload-pack -u

通過ssh獲取需要轉殖的repo,需要指明乙個非預設路徑給另一端的命令。

15) --template=

指明所使用的模版目錄。

16) --config =-c =

對新建的repo進行變數配置,在庫被初始化後直接生效。

17) --depth

根據給出的歷史中的提交編號來建立乙個淺層的轉殖。

18) --shallow-since=

根據指明的歷史時間來建立乙個淺層的clone。

19) --shallow-exclude=

根據排除某些分支或者標籤來建立淺層的clone。

20) --[no-]single-branch

轉殖由 --branch 選項或者 基礎分支的遠端head所指向的單個分支。

21) --recursive  --recurse-submodules

轉殖結束之後利用預設設定初始化所有子模組。等價於:git submodule update --init --recursive

22) --[no-]shallow-submodules

所有的子模組都是以depth為1的淺層clone。

23) --separate-git-dir=

在指定的目錄下放置轉殖的庫,然後設定乙個與檔案系無關的git符號指向它。

24)-j --jobs

設定同時獲取的子模組數量。

25)設定被轉殖的repo。通常利用git urls 來指定。

26)轉殖repo所安放的目錄。

通常情況下,urls中都包含了所指定的傳輸協議、遠端伺服器位址、repo的路徑。根據不同的協議,有些部分可以省去。git支援ssh、git、http、https協議(ftp、ftps可用於 fetch但是低效,不建議使用)。git協議並不包含驗證,因此使用時注意安全性。

各種協議的格式如下:

ssh://[user@]host.xz[:port]/path/to/repo.git/

[user@]host.xz:path/to/repo.git/ (基於ssh協議的一種可選方式)

ftp[s]:

ssh和git協議支援額外的 ~username 擴充套件:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/

git:

[user@]host.xz:/~[user]/path/to/repo.git/

對於本地repo:

/path/to/repo.git/

file:///path/to/repo.git/

git本身並不會處理傳輸協議,都是利用 remote 的遠端助手(remote helper)。如果遠端助手不存在,需要用相關語句提前指明:  :: 其中,可以是本地路徑、伺服器路徑等。

如果在存在多個相似命名的遠端repo而你又想用個不同的形式儲存,可以使用urls替換語法配置來進行clone。

[url ""]

insteadof =

如果僅僅是想在push時採用rewrite urls:

[url ""]

pushinsteadof =

Git有關建立與提交專案的命令

git 的工作就是建立和儲存你專案的快照及與之後的快照進行對比。本章將對有關建立與提交你的專案快照的命令作介紹。git 常用的是以下 6 個命令 git clone git push git add git commit git checkout git pull,後面我們會詳細介紹。說明 乙個簡單...

git專案建立與連線

先在github建立專案,獲取專案位址 進入已建立好的專案,初始化 git init進行配置連線遠端倉庫 vsc git remotes 連線遠端倉庫先跟遠端倉庫同步git pull 同步遠端庫 git branch set upstream to origin 分支名 遠端分支名 master 為...

Git專案建立與提交

右鍵 git bash here 先輸入ssh keygen t rsa c 郵箱位址 注意ssh keygen之間是沒有空格的,其他的之間是有空格的,郵箱位址是咱們在註冊github的時候用的郵箱。生成的金鑰在這裡 c users administrator ssh 右上頭像箭頭 settings...