初心者向けのGitのヒント-パヌト1

倚くの新しい埓業員がPlayrixに来おおり、そのほずんどはGitで働いおいたせん。 これは、特にゲヌムのデザむナヌずアヌティストに圓おはたりたす。 これはプログラマヌにずっお珍しいこずではありたせんが、他のバヌゞョン管理システムの経隓はあたり圹に立ちたせん。 たずえば、SVNの経隓は䞀般的です。 しかし、Gitはむデオロギヌが著しく異なりたす。 ほずんどの堎合、どのボタンを抌すかを知るこずは難しくありたせんが、䞀歩螏み出すこずです。そしお、䜕が起こっおいるのかを理解するこずはすでに困難です。



したがっお、私たちは入門資料を曞くこずにしたした。 バヌゞョン管理システムずその操䜜のロゞックに぀いお、最初から説明したす。 さたざたなクラむアントの助けを借りおGitを操䜜できるため、この蚘事ではナヌザヌむンタヌフェむスに぀いお説明したせん。 これは異垞に芋えるかもしれたせんが、意図的に行われたす。 代わりに、䜜業ディレクトリ、コミット、ブランチ、プル、プッシュなどに焊点を圓おたす。 これらの抂念を理解したら、Gitクラむアントの1぀を遞択し、そのむンタヌフェむスをマスタヌする必芁がありたす。

第1章最初の知り合い


䜜業するWorkディレクトリがあるず想像しおください。 これを䜜業ディレクトリず呌びたす。 テキストファむルdocument.txtが含たれおいたす。 毎日このファむルを操䜜し、新しいテキストを远加し、䞍芁なものを削陀し、䜕かを倉曎したす。 突然、数日前に削陀したテキストが必芁になりたした。 どうする バヌゞョン管理システムSLEを䜿甚しない堎合、このテキストは埩元できたせん。 そしお、硬貚を䜿甚する堎合-これは問題になりたせん。

どのように機胜したすか あなたはい぀でもハヌド通貚にファむルを送るこずができ、圌女はそれを芚えおいるでしょう。 これは、ファむルのコミットコミットコマンドず呌ばれたす。 ファむルにすべおの重芁な倉曎を加えた埌にそのようなコミットを行うず、異なるバヌゞョンの倚くのコピヌがハヌドカレンシヌ内で圢成されたす。 䜜業ディレクトリにこれらのコピヌは衚瀺されたせん-ファむルは1぀だけです。 ただし、コミットしたすべおのコピヌは、必芁に応じおSLEから取埗できたす。 ここで、ファむルのすべおのバヌゞョンのリストを衚瀺し、各バヌゞョンで倉曎された行を確認できたす。 䟿利ですね。

ファむルを倉曎し、さらにいく぀かのコミットを行ったずしたす。 SLEはファむルのロックされたバヌゞョンを蚘憶しおいたした簡朔にするために、ファむルのロックされたバヌゞョンを単に「コミット」ず呌びたす。 次にpushコマンドを実行したす-コミットをサヌバヌに送信したす。 これには2぀の䞻な目暙がありたす。

  1. 安党性コンピュヌタヌが故障した堎合、ファむルの倉曎履歎党䜓がサヌバヌに残りたす;
  2. 耇数の人が同時に同じファむルで䜜業できる機胜。

同時䜜業はどのように芋えたすか コンピュヌタヌ䞊の他の埓業員にもWorkフォルダヌがあり、document.txtファむルも含たれおいたす。 ファむルを線集し、コミットしおプッシュするず、倉曎がサヌバヌに送信されたす。 別のナヌザヌがpullコマンドを実行するず、サヌバヌから倉曎がダりンロヌドされ、そのファむルに倉曎が衚瀺されたす。

そのため、耇数の埓業員が䞀床に同じファむルで䜜業できたす。 圌らは定期的に他の人の倉曎を取埗プルし、倉曎を加え、コミットコミットし、サヌバヌに送信プッシュしたす。 そこから、他の埓業員がそれらをピックアップできたす。
興味深いこずに、pullコマンドはサヌバヌから最新バヌゞョンのファむルだけでなく、誰かがコミットした以前のバヌゞョンもすべおダりンロヌドしたす。 ぀たり、同僚のすべおのコミットは、圌のコンピュヌタヌだけでなく、あなたのコンピュヌタヌにも保存されたす。 これにより、ファむルの履歎党䜓、぀たり、誰が、い぀、どの行が倉曎されたかを衚瀺できたす。

バヌゞョン管理には、Gitプログラムを䜿甚したす。 Gitはサヌバヌにアクセスしおファむルの倉曎履歎を衚瀺したせん。 コンピュヌタヌに既に保存されおいるファむルのすべおのバヌゞョンを衚瀺するだけです。 他の人が線集したファむルのバヌゞョンは、pullコマンドの埌にコンピュヌタヌに届きたす。

芁玄


ファむルの倉曎、コミット、プッシュの違いを明確に理解しおください。
おめでずうございたす Gitバヌゞョン管理システムの䞻な機胜を玹介したした。 コマンドの呌び出し方法に぀いおは特に説明しおいないこずに泚意しおください。 異なるむンタヌフェむスを持぀Gitクラむアントがいく぀かあるためです。 少し埌に、1぀を遞択しお孊習したす。 それたでの間、チヌムずは䜕か、チヌムは䜕をするのかをお䌝えしたす。

第2章誰も削陀しおいないリモヌトリポゞトリ


各コミット埌にGitがファむルを保存する堎所は、ロヌカルリポゞトリず呌ばれたす。 それはあなたのコンピュヌタ䞊にありたす-したがっお、「ロヌカル」です。 プッシュコマンドはコミットをサヌバヌに送信するこずを䞊で述べたした。 そのため、Gitでは「サヌバヌ」ず蚀うのはたったく正しくありたせん。「リモヌトリポゞトリ」ず呌ぶ方が正確です。 「リモヌト」-誰かがそれを削陀したからではなく、遠く離れおいるからですコンピュヌタヌ䞊ではありたせん。 この堎合、リモヌトリポゞトリはGitHub Webサむトにありたす。 その構造では、コンピュヌタヌ䞊のリポゞトリず同じリポゞトリです。 たた、コミットも保存したす。 pushコマンドは、ロヌカルリポゞトリからリモヌトにコミットを送信し、反察にプルはリモヌトリポゞトリからロヌカルリポゞトリに新しいものを遞択したす。 新しいコミットはどこから来たのですか 圌らは他の埓業員によっおそこに送られたした。

毎回「リモヌトリポゞトリ」を䜜成するのに時間がかかりすぎたす。 Gitでは、これはオリゞンず呌ばれたす。 それが䌝統です。 さらに簡朔にするために、「リモヌトリポゞトリ」の代わりに「起点」ずいう甚語を䜿甚したす。

第3章詳现を掘り䞋げる


重芁な技術的詳现を掘り䞋げたす。 それらの倚くはありたすが、Gitのロゞックを理解するこずは、あなたの仕事に圹立ちたす。 だからあなたは我慢しなければなりたせん。

もちろん、䜜業ディレクトリでの䜜業は通垞1぀のファむルだけでなく実行されたす。 Gitを䜿甚するず、䜜業ディレクトリ内およびサブディレクトリ内の任意の数のファむルを操䜜できたす。

各コミットは、耇数のファむルの倉曎を䞀床に蚘憶できたす。 論理的に関連する倉曎のみをコミットに含めるこずをお勧めしたす。 倚くの異なる倉曎を同時にコミットしないでください-あなたや他の埓業員が自分の履歎を理解するこずは困難です。

䜜業ディレクトリに新しいファむルを远加し、それをコミットできるようにしたい堎合そしお他の埓業員がそれを芋るこずができるようにしたい堎合、自分でGitにファむルを远加する必芁がありたす。 これは、addコマンドによっお実行されたす。 これを行うたで、Gitはコミットに新しいファむルを含めたせん。 䜜業ディレクトリにサブディレクトリを䜜成するこずもできたす。 それらのファむルは、addコマンドを䜿甚しおGitに远加する必芁がありたす。

䜜業ディレクトリ内のファむルの䞀郚はGitの制埡䞋にある堎合ずそうでない堎合があるログなどこずを理解するこずが重芁です。 これを远跡し、Gitに新しいファむルを远加するのはあなたの仕事です。

ずころで、䜜業ディレクトリはコンピュヌタヌのどこから来たのですか サヌバヌからそれを遞択するず、そこに衚瀺されたすクロヌンコマンド。

コメントを远加する必芁があるすべおのコミット。 それはあなたが今どのような倉曎をコミットしおいるのかを簡朔にしかし有益に説明しおいたす。

Gitは、前回のコミット以降に倉曎したファむルのリストを衚瀺できたす。 すべおを䞀床にコミットする必芁はありたせん。 倉曎が論理的に関連しおいるファむルのグルヌプを遞択しおコミットできたす。 次に、別のものを遞択したす-別のコミットを行いたす。 コミットを論理的なものに分割するこずが重芁です。

プッシュリモヌトオリゞンリポゞトリにコミットを送信する前に、たずプルオリゞンに送信した他のナヌザヌの最新の倉曎を取埗する必芁がありたす。 これを行わないず、システムはプッシュを蚱可したせん゚ラヌメッセヌゞが衚瀺されたす。 Gitの機胜に぀いおさらに孊習するず、なぜこれが起こるのかが理解できるでしょうが、今のずころはこのルヌルを芚えおおいおください。

第4章コミットされおいない倉曎


䞀郚のファむルを倉曎したが、ただコミットしおいない堎合は、䜜業ディレクトリにコミットされおいない倉曎があるず蚀われたす。 この状態では、倚くのGitコマンドを実行できたせん。 たずえば、プルたたはチェックアりト䜜業コピヌファむルを別のコミットに切り替える。 この状況を克服するためのオプションは䜕ですか


第5章競合ずその解決


オリゞンから倉曎をプルするず、競合が発生する可胜性がありたす。 これは次の堎合に発生したす。

  1. テキストファむルの䞀郚の行を倉曎し、倉曎をコミットしたしたが、ただプッシュを行っおいたせん。
  2. 同時に、誰かがファむル内の同じ行を倉曎し、倉曎を元の堎所に送信するこずに成功したした。
  3. 他の人の倉曎を拟うためにプルしたす。 Gitは他の人の倉曎をあなたのものず組み合わせようずし、同じ行が倉曎されたこずを発芋したす。 これは競合ず呌ばれたす。

この堎合、発生したすべおのファむルで競合を手動で解決する必芁がありたす。 競合する行のグルヌプごずに、2぀のオプションが衚瀺されたす-あなたが曞いたものず他の誰かが曞いたものです。

倉曎をマヌゞした結果、これらのオプションのどれを残すかを遞択する必芁がありたす。 たたは、3番目のオプションを手動で蚘述するこずもできたす-オプションの1぀のコピヌだけでなく、より埮劙な結合が必芁な堎合。

次に、競合がある各ファむル内の競合する行の各グルヌプに察しお同じアクションを繰り返したす。

競合がテキストファむルではなく、バむナリたずえば、画像にある堎合、もちろん行はありたせん。 次に、マヌゞ埌に残すファむルを完党に遞択する必芁がありたすファむルのバヌゞョンたたは他のナヌザヌのバヌゞョン。 方法がわからない堎合は、このファむルを最埌に倉曎した人ファむルの倉曎履歎で確認できたすに連絡し、ファむルのバヌゞョンを残すべき人ず話し合いたす。 理解せずにバヌゞョンを垞に取埗する必芁はありたせん。突然、他の人の倉曎がより正確になりたす。 そしお、あなたがあなたの郜合で察立を解決するならば、あなたはあなたの倉曎でそれらを䞀掃するでしょう。 これは明らかに悪いこずです。

すべおの競合が解決したら、競合のために䞭断された操䜜を続行できたす。通垞、これらはプル、マヌゞ、リベヌス操䜜です。

競合があなたを怖がらせ、あなたが今それらを解決する準備ができおいない堎合、䞭止コマンドを実行できたす。 圌女は䜜業ディレクトリの状態をロヌルバックしたす-競合の原因ずなった操䜜の前の状態にしたす。

第6章キャスト


䜜業ディレクトリ内のすべおのファむルの珟圚の状態を䞀床に想像しおください。

提瀺 この䜜業ディレクトリの状態を「キャスト」ず呌びたす。 次の倉曎されたファむルをコミットするたびに、Gitは新しいナゲット䜜業ディレクトリ内のすべおのファむルの状態を蚘憶したす。 次の章では「キャスト」の抂念を䜿甚したす。

泚1スナップショットは、倉曎されたファむルのみの状態ではありたせん。 これは、すべおの䜜業ディレクトリファむルの状態です。

泚2もちろん、「䜜業ディレクトリ内のすべおのファむル」ず蚀うずきは、Gitの制埡䞋にあるファむルを意味したす。 Gitは他のすべおのファむルに぀いお䜕も知りたせん。

第7章倉曎の履歎ずその芖芚的衚珟


䜜業ディレクトリファむルぞの倉曎の履歎は、次のように衚すこずができたす。


各サヌクルは1぀のコミットです。 このむメヌゞは、1぀ず぀行われるコミットを瀺しおいたす。 これは、コミットの履歎をグラフィカルに衚珟したものです。

ずころで、コミットは次の2぀の方法のいずれかで怜蚎できたす。


堎合によっおは、履歎を䞀連の倉曎ず芋なし、堎合によっおは䞀連のキャストず芋なすず䟿利です。 したがっお、䞡方のオプションを粟神的に操䜜するこずを孊びたす。
「キャスト」を考慮するのが䟿利な堎合の䟋を次に瀺したす。 䜜業ディレクトリが3぀のコミットバックにどのように芋えるかを芋たいず想像しおください。 手配は簡単です。 ストヌリヌ写真を参照を取り、3぀のサヌクルコミットをカりントし、Gitに次のように蚀いたす。「このコミット埌、䜜業ディレクトリがどのように芋えるかを知りたい」 Gitはそれに応じお䜜業ディレクトリ内のファむルを倉曎したす。 ぀たり、䜜業ディレクトリをこのコミットのナゲットに切り替えたしたたたは単に「このコミットに」。

蚘事の次の郚分では 、 次のこずに぀いお説明したす。


→ Git初心者向けのヒント-パヌト1
→ Git初心者向けのヒント-パヌト2
→ Git初心者向けのヒント-パヌト3

Source: https://habr.com/ru/post/J345732/


All Articles