最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Git教程 - Git 命令與操作

2021-03-22 18:42 作者:信碼由韁  | 我要投稿

【注】本文譯自:https://www.edureka.co/blog/git-tutorial/

? ? 學(xué)習(xí) Git 與使用該工具一樣容易。這個 Git 教程的目的就是要把這個難題從您的腦海中剔除。我相信,通過這個 Git 教程,您將了解到所有的概念。

? ??我希望您已經(jīng)了解了 Git 的基本概念和術(shù)語,并在我的 Git 教程系列的第一個博客中了解了有關(guān)版本控制的所有知識。

? ? 在本教程中,您將學(xué)習(xí):

  • Git 命令

  • Git 操作

  • 還有一些使用 Git 有效地管理項(xiàng)目的提示和技巧

? ??在開始使用命令和操作之前,讓我們首先理解 Git 的主要目的。

? ??Git 的目的是管理一個項(xiàng)目或一組隨著時間變化的文件。Git 將這些信息存儲在稱為 Git 存儲庫的數(shù)據(jù)結(jié)構(gòu)中。存儲庫是 Git 的核心。

如何查看我的 GIT 存儲庫?

? ? 明確地說,Git 存儲庫是存放所有項(xiàng)目文件和相關(guān)元數(shù)據(jù)的目錄。

? ??Git 通過從索引中創(chuàng)建樹形圖來記錄項(xiàng)目的當(dāng)前狀態(tài)。它通常采用有向無環(huán)圖(DAG)的形式存在。

? ??現(xiàn)在您已經(jīng)理解解了 Git 的目標(biāo),讓我們繼續(xù)討論操作和命令。

如何學(xué)習(xí) Git 命令?

? ??Git工作原理的基本概述:

  • 使用 git 托管工具(如 Bitbucket)創(chuàng)建“存儲庫”(項(xiàng)目)

  • 存儲庫復(fù)制(或克?。┑奖镜赜?jì)算機(jī)

  • 將文件添加到本地存儲庫并“提交”(保存)更改

  • 將更改“推送”到主分支

  • 使用 git 托管工具對文件進(jìn)行更改并提交

  • 將更改“拉”到本地計(jì)算機(jī)

  • 創(chuàng)建一個“分支”(版本),進(jìn)行更改,然后提交更改

  • 打開一個“拉取請求”。

  • 將您的分支“合并”到主分支

Git Shell 和 Git Bash 有什么區(qū)別?

? ??Git Bash 和 Git Shell 是兩個不同的命令行程序,可讓您與底層的 Gi t程序進(jìn)行交互。Bash 是基于 Linux 的命令行,而 Shell 是本機(jī) Windows 命令行。

一些操作和命令

? ? Git中的一些基本操作有:

  1. Initialize (初始化)

  2. Add (添加)

  3. Commit (提交)

  4. Pull (拉?。?/span>

  5. Push (推送)

? ? 一些高級的 Git 操作有:

  1. Branching (分支)

  2. Merging (合并)

  3. Rebasing (變基)

? ??首先讓我簡要介紹一下這些操作如何與 Git 存儲庫一起使用??纯聪旅娴腉it架構(gòu):

? ??如果您已經(jīng)理解了上面的圖,那很好,但是如果您不了解,則不必?fù)?dān)心,我將在本教程中逐一解釋這些操作。讓我們從基本的操作開始。

Git Bash 的用途是什么?

? ??本 Git Bash 教程重點(diǎn)介紹可在 Git Bash 上使用的命令和操作。

如何瀏覽 Git Bash?

? ??在 Windows 系統(tǒng)中安裝 Git 之后,只需打開要存儲所有項(xiàng)目文件的文件夾/目錄即可;右鍵單擊并選擇“Git Bash Here”。

? ??這將打開 Git Bash 終端,您可以在其中輸入命令以執(zhí)行各種 Git 操作。

? ??現(xiàn)在,下一個任務(wù)是初始化存儲庫。

初始化(Initialize)

? ? ?為此,我們使用命令 git init。請參考下面的截圖。

? ? git init 創(chuàng)建一個空的 Git 存儲庫或重新初始化一個現(xiàn)有的存儲庫。它基本上會創(chuàng)建一個帶有子目錄和模板文件的 .git 目錄。在現(xiàn)有存儲庫中運(yùn)行 git init 不會覆蓋已經(jīng)存在的內(nèi)容。它會選擇新添加的模板。

? ? 現(xiàn)在我的存儲庫已初始化,現(xiàn)在讓我在目錄/存儲庫中創(chuàng)建一些文件。例如我創(chuàng)建了兩個文本文件,即 edureka1.txt 和 edureka2.txt。

? ??讓我們使用 git status 命令查看這些文件是否在我的索引中。索引保存工作樹/目錄的內(nèi)容的快照,該快照將作為本地存儲庫中要進(jìn)行的下一次更改的內(nèi)容。

Git status

? ??git status?命令列出了所有準(zhǔn)備好添加到本地存儲庫的已修改文件。

? ??讓我們輸入命令,看看會發(fā)生什么:

? ??這表明我有兩個文件尚未添加到索引中。這意味著除非在索引中顯式添加了這些文件,否則無法提交對這些文件的更改。

添加(Add)

? ??該命令使用在工作樹中找到的當(dāng)前內(nèi)容來更新索引,然后在臨時區(qū)域中準(zhǔn)備下一次提交的內(nèi)容。

? ??因此,在更改工作樹之后,并且在運(yùn)行?commit?命令之前,必須使用?add?命令將所有新文件或已修改的文件添加到索引中。為此,請使用以下命令:

git add <directory>

git add <file>

? ??讓我為您演示 git add,以便您可以更好地理解它。

? ??我還創(chuàng)建了兩個文件 edureka3.txt 和 edureka4.txt。讓我們使用命令 git add -A 添加文件。此命令會將所有目錄中的文件添加到索引中,但尚未在索引中更新。

? ??現(xiàn)在,新文件已添加到索引中,您可以提交它們了。

提交(Commit)

? ??它指的是在給定時間記錄存儲庫的快照。提交的快照永遠(yuǎn)不會改變,除非電焊工地完成。讓我用下圖來解釋一下 commit? 是如何工作的:

? ??這里,C1 是初始提交,即第一個更改的快照,從該更改創(chuàng)建另一個名為 C2 的快照。請注意,主節(jié)點(diǎn)指向最新的提交。

? ? 現(xiàn)在,當(dāng)我再次提交時,將創(chuàng)建另一個快照C3,現(xiàn)在主快照指向C3,而不是C2。

? ??Git 的 目標(biāo)是使提交盡可能輕量。因此,它不會每次提交時都盲目復(fù)制整個目錄;它包括作為一組更改的提交,或從一個版本的存儲庫到另一個版本的“增量”。 簡單來說,它只復(fù)制在存儲庫中所做的更改。

? ? 您可以使用以下命令提交:

git commit

? ??這將提交暫存的快照,并將啟動文本編輯器,提示您輸入提交消息。

? ??或者您可以使用:

git commit -m “<message>”

? ??讓我們嘗試一下。

? ??如您在上面看到的,git commit 命令已經(jīng)提交了本地存儲庫中四個文件中的更改。

? ??現(xiàn)在,如果要一次提交工作目錄中所有更改的快照,則可以使用以下命令:

git commit -a

? ? 我在工作目錄 viz 中又創(chuàng)建了兩個文本文件。edureka5.txt 和 edureka6.txt,但它們尚未添加到索引中。

? ??我正在使用命令添加 edureka 5.text:

git add edureka5.txt

? ??我已將 edureka5.txt 顯式添加到索引中,但沒有將 edureka6.txt 添加到索引中,并在先前的文件中進(jìn)行了更改。我想一次提交目錄中的所有更改。請參考下面的快照。

? ??該命令將提交工作目錄中所有更改的快照,但僅包括對跟蹤文件的修改,即在歷史記錄中的某個時刻使用?git add?添加的文件。因此, edureka6.txt 尚未提交,因?yàn)樯形磳⑵涮砑拥剿饕?。但是會提交對存儲庫中所有先前文件的更改,?/span> edureka1.txt、edureka2.txt、edureka3.txt、edureka4.txt edureka5.txt

? ??現(xiàn)在,我已經(jīng)在本地存儲庫中完成了所需的提交。

? ??請注意,在影響對中央存儲庫的更改之前,應(yīng)始終將更改從中央存儲庫拉到本地存儲庫,以更新在中央存儲庫中做出貢獻(xiàn)的所有協(xié)作者的工作。為此,我們將使用 pull 命令。

拉?。≒ull)

? ??git pull 命令將更改從遠(yuǎn)程存儲庫獲取到本地存儲庫。它合并了本地存儲庫中的上游更改,這是基于 Git 的協(xié)作中的常見任務(wù)。

? ??但首先,您需要使用以下命令將中央存儲庫設(shè)置為原始存儲庫:

git remote add origin <中央存儲庫的鏈接>

? ??現(xiàn)在已經(jīng)設(shè)置了原點(diǎn),讓我們使用 pull 從原點(diǎn)提取文件。 為此,請使用命令:

git pull origin master

? ??此命令會將所有文件從遠(yuǎn)程存儲庫的 master 分支復(fù)制到本地存儲庫。

? ??由于我的本地存儲庫已經(jīng)使用 master 分支中的文件進(jìn)行了更新,因此該消息已經(jīng)是最新的。請參閱上面的屏幕截圖。

? ??注意:也可以嘗試使用以下命令從其他分支提取文件:

git pull origin <branch-name>

? ??現(xiàn)在,您的本地 Git 存儲庫已使用所有最近的更改進(jìn)行了更新?,F(xiàn)在是時候使用 push 命令在中央存儲庫中進(jìn)行更改了。

推送(Push)

? ??此命令將提交從本地存儲庫傳輸?shù)竭h(yuǎn)程存儲庫。它與拉取操作相反。

? ? 將導(dǎo)入提交到本地存儲庫,而將導(dǎo)出將提交到遠(yuǎn)程存儲庫。

? ??git push?的用途是將本地更改發(fā)布到中央存儲庫。積累了多個本地提交并準(zhǔn)備與團(tuán)隊(duì)其他成員共享之后,可以使用以下命令將其推送到中央存儲庫:

git push <遠(yuǎn)程>?

注:該遠(yuǎn)程引用在使用 pull 命令之前設(shè)置的遠(yuǎn)程存儲庫。

? ??這將把更改從本地存儲庫推送到遠(yuǎn)程存儲庫,以及所有必要的提交和內(nèi)部對象。并將在目標(biāo)存儲庫中創(chuàng)建一個本地分支。

? ? 我來為您演示一下。

? ??上面的文件是我們之前在 commit 部分中已經(jīng)提交的文件,它們都是“ push-ready”的。我將使用命令 git push origin master 來將這些文件反映在中央存儲庫的 master 分支中。

? ? 現(xiàn)在讓我們檢查這些更改是否發(fā)生在我的中央存儲庫中。

? ??是的,確實(shí)如此。 :-)

? ??為了防止覆蓋,當(dāng)Git在目標(biāo)存儲庫中導(dǎo)致非快進(jìn)合并時,它不允許推送。

注意:非快進(jìn)合并是指上游合并,即與子分支的祖先或父分支合并。

? ??要啟用這種合并,請使用以下命令:

git push <remote> –force

? ??上面的命令將強(qiáng)制執(zhí)行推操作,即使它會導(dǎo)致非快進(jìn)合并。

? ??到目前為止,我希望您已經(jīng)了解了 Git 的基本命令?,F(xiàn)在,讓我們進(jìn)一步學(xué)習(xí)在 Git 中進(jìn)行分支和合并。

分支(Branching)

? ??Git 中的分支只是指向特定提交的指針。Git通常更傾向于保持其分支盡可能輕量級。

? ??基本上有兩種類型的分支,即本地分支遠(yuǎn)程跟蹤分支。

? ??本地分支只是您的工作樹的另一條路徑。另一方面,遠(yuǎn)程跟蹤分支有特殊用途。 其中一些是:

  • 他們將您的工作從本地存儲庫鏈接到中央存儲庫上的工作。

  • 當(dāng)您使用 git pull 時,它們會自動檢測要從哪個遠(yuǎn)程分支獲取更改。

? ? 您可以使用以下命令檢查當(dāng)前分支是什么:

git branch

? ??分支時您應(yīng)該經(jīng)常念誦的口號是“早分支,常分支”。

? ? 要創(chuàng)建一個新分支,我們使用以下命令:

git branch <branch-name>

? ??上圖顯示了創(chuàng)建新分支時的工作流程。 當(dāng)我們創(chuàng)建一個新分支時,它源自master分支本身。

? ??由于創(chuàng)建多個分支沒有存儲/內(nèi)存開銷,因此邏輯上劃分您的工作比擁有大塊的分支要容易得多。

? ??現(xiàn)在,讓我們看看如何使用提交分支。


? ??分支包括特定提交和所有父提交的工作。如您在上圖中所看到的,newBranch 已與主服務(wù)器分離,因此將創(chuàng)建一條不同的路徑。

? ??使用以下命令:

git checkout <branch_name> 然后執(zhí)行

git commit

? ??在這里,我創(chuàng)建了一個名為“ EdurekaImages”的新分支,并使用命令 git checkout 切換到該新分支。

? ??上述命令的一種快捷方式是:

git checkout -b[ branch_name]

? ??此命令將創(chuàng)建一個新分支并同時簽出新分支。

? ??現(xiàn)在,當(dāng)我們在分支 EdurekaImages 中時,使用以下命令添加并提交文本文件 edureka6.txt

git add edureka6.txt

git commit -m”adding edureka6.txt”?

合并(Merging)

? ??合并是將不同分支的工作合并在一起的方法。這將允許我們進(jìn)行分支,開發(fā)新功能,然后將其合并回來。

? ??上圖為我們展示了兩個不同的分支-> newBranch 和 master?,F(xiàn)在,當(dāng)我們將 newBranch 的工作合并到master 中時,它將創(chuàng)建一個新提交,其中包含 master 和 newBranch 的所有工作。

? ??現(xiàn)在,讓我們使用下面的命令合并兩個分支:

git merge <branch_name>

? ??上述命令中的分支名稱應(yīng)該是你想要合并到當(dāng)前所簽出分支的分支。因此,請確保您已在目標(biāo)分支中檢出。

? ??現(xiàn)在,讓我們將分支 EdurekaImages 的所有工作合并到 master 分支中。為此,我將首先使用 git checkout master 命令檢出master分支,然后用 git merge EdurekaImages 命令合并 EdurekaImages。

? ??如上所示,分支名稱中的所有數(shù)據(jù)都合并到了master分支中。現(xiàn)在,文本文件 edureka6.txt 已添加到 master 分支中。

? ??在 Git 中合并會創(chuàng)建一個特殊的提交,該提交具有兩個唯一的父級。

變基(Rebasing)

? ??這也是組合不同分支之間的工作的一種方式。變基接受一組提交,將其復(fù)制并存儲在您的存儲庫外部。

? ??變基的優(yōu)點(diǎn)是它可以用于制作線性的提交序列。如果完成了重新基準(zhǔn)化,則提交日志或存儲庫的歷史記錄將保持干凈。

? ? 讓我們看看它是如何發(fā)生的:


? ??現(xiàn)在,我們在 newBranch 上的工作緊隨 master 之后,我們有了不錯的線性提交序列。

? ??注意:重新設(shè)置基準(zhǔn)還可以防止上游合并,這意味著您不能將 master 放在newBranch之后。

? ??現(xiàn)在,要重設(shè) master,請?jiān)?Git Bash 中鍵入以下命令:

git rebase master

? ??此命令會將我們所有的工作從當(dāng)前分支移至主節(jié)點(diǎn)。 它們看起來好像是順序開發(fā)的,但是卻是并行開發(fā)的。

提示和技巧

? ??現(xiàn)在,您已經(jīng)完成了本Git教程中的所有操作,這里是您應(yīng)該知道的一些提示和技巧。 :-)

  • 歸檔存儲庫

? ??使用以下命令:

git archive master –format=zip? –output= ../name-of-file.zip

? ??它將所有文件和數(shù)據(jù)存儲在一個 zip 文件中,而不是 .git 目錄中。

? ??請注意,這僅會創(chuàng)建一個快照,從而完全忽略了版本控制。當(dāng)您要將文件發(fā)送給未在計(jì)算機(jī)上安裝Git的客戶端進(jìn)行審核時,這非常方便。

  • 綁定存儲庫

? ? 它將存儲庫轉(zhuǎn)換為單個文件。

? ??使用以下命令:

git bundle create ../repo.bundler master

? ? 這會將 master 分支推送到一個遠(yuǎn)程分支,該分支僅包含在文件中,而不是存儲庫中。

? ? 另一種方法是:

cd..

git clone repo.bundle repo-copy -b master

cd repo-copy

git log

cd.. /my-git-repo

  • 隱藏未提交的更改

? ??當(dāng)我們要撤消臨時添加功能或任何種類的數(shù)據(jù)時,可以臨時“隱藏”它們。

? ??使用以下命令:

git status

git stash

git status

? ??當(dāng)您要重新應(yīng)用“隱藏”的更改時,請使用以下命令:

git stash apply

? ??我希望您喜歡這個 Git Bash 教程,并學(xué)習(xí)了 Git 中的命令和操作。


Git教程 - Git 命令與操作的評論 (共 條)

分享到微博請遵守國家法律
顺昌县| 牡丹江市| 邛崃市| 芜湖市| 麟游县| 枣强县| 南安市| 大邑县| 崇文区| 会理县| 江达县| 堆龙德庆县| 嘉善县| 洪湖市| 海口市| 蚌埠市| 宜良县| 太仓市| 松江区| 五大连池市| 新泰市| 渭南市| 临湘市| 宁夏| 融水| 湾仔区| 洱源县| 麦盖提县| 格尔木市| 广元市| 腾冲县| 浦东新区| 建昌县| 中山市| 象州县| 镇雄县| 墨竹工卡县| 探索| 自治县| 邹城市| 肥城市|