2016-07-03 165 views
-1

我想成爲Git專家,因爲我在工作中使用它,但只有一半瞭解它,並且因爲我運行了一些錯誤的命令而多次失去了一天的工作。我在互聯網上發現了幾個教程,但我不覺得其中任何一個都能幫助我真正理解應用程序的工作方式。所有的教程都會說「這是如何初始化回購,以下是如何進行提交」等,但他們永遠不會解釋發生了什麼事幕後Git的概念框架是什麼?

例如,我仍然不明白當我push會發生什麼情況:我實際上用我的commit中的遠程位置替換了整個存儲庫?順便說一句,是commit和版本庫的實際副本,或者它只是關於我的副本和其他版本之間的變化的信息?我想了解這些類型的東西,我還沒有找到幫助很大的教程。

+2

以下是源代碼的鏈接:https://github.com/git/git – mattias

+3

閱讀[Git book](https://git-scm.com/book/en/v2/),尤其是一些內部的章節[10](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain)。 – poke

+0

對於視頻質量差的道歉,但[此演示文稿可能有所幫助](https://www.youtube.com/watch?v=1ffBJ4sVUb4)可讓您瞭解Git的工作原理。不幸的是,這是一個很早的版本,不包括遙控器,所以[我的答案是Git如何確定在版本庫之間需要發送什麼對象?](http://stackoverflow.com/a/28140834/14660)可能會有所幫助。 – Schwern

回答

0

我最近發現自己在同一條船上,做了一大堆研究。

你需要在概念上了解的第一件事是,基本上,Git的工作有三個方面

發展區,臨時區域,最後是庫(回購)

發展區域:

這是您的文件保存在您的計算機上的地方。當你安裝Git時,你基本上會得到一個命令框架,它將允許你指定你的計算機上的哪些目錄被視爲一個開發區域(以及其他命令的作用 - 我們將在一點)。要在您的系統上指定一個目錄作爲您希望Git跟蹤您的地方,請使用'git init'。

暫存區域:

原來這就是把我關在第一。在開發區域中對文件進行更改時,請在將其發送到存儲庫之前將其發送到暫存區域。這是作爲變化的臨時空間。這樣做的原因是,您可以進行一些更改並將它們提交爲項目的一組更改。這實際上非常有用,因爲它允許您控制發送的更新和提交。要將您在開發區更改的文件發送到暫存區類型「git add filename.ext」,或者如果目錄中的所有文件都準備好進入暫存區,只需鍵入「git add」。

資源庫:

當您準備好發送您的所有更改從臨時區域使用該命令的存儲庫:git的承諾-am「消息,說明/你所添加的變化,等等。」然後「git push」

讓Git幫助你!

Git中的東西起初可能會讓人困惑,所以我也建議讓Git幫助你一點。您可以通過使用命令「git status」來始終詢問Git工作區/開發區的狀態。這會引導你。如你所知,Git最大的吸引力之一是從開源項目獲取某人的代碼,在本地進行工作,進行更改,然後詢問他們是否會採取所做的更改 - 將它們添加到項目。

這背後的概念是克隆一個項目到您的本地系統,然後做上面的一切。

看,這是一個簡單的概述,你顯然將不得不補充它。我建議在這裏的Git檢查出德里克巴尼亞斯的Youtube教程:https://www.youtube.com/watch?v=r63f51ce84A&list=PLGLfVvz_LVvQHO1PfyscjIPkNJjgHsLyH

-1

所以,你想成爲一個GIT專家...

首先,我要說的是,當我開始從Subversion我切換到GIT有同樣的問題。我的第一個建議是一本教科書,這本書讓我在駝峯Version Control with GIT(看起來它現在是$ 3!)。我發現GIT的教程非常以命令爲中心。

關於你提到的細節:

  • git的初始化:初始化當前目錄的根目錄的項目;基本上它會在那裏放置一個.git /目錄,其中存儲了回購庫的所有內部工作。
  • 推送:你並沒有更換倉庫,你是推擠你的持續提交(git對象,文件,修改等),以便遠程知道目標分支歷史日誌
  • 什麼是提交?想想一個像保存狀態這樣的提交,你總是可以返回,但它比這個稍微多一點,因爲它可以與之比較,並保留其他信息,比如誰做了工作以及完成了什麼時間。

我想知道如果您從另一個VCS切換到另一個VCS,是否有必要對VCS概念進行初步研究。 GIT具有根本性的差異,這使得它在大多數情況下都很優秀。

最後一點是GIT不存儲您的文件,它存儲您的文件的散列。 -祝你好運。