倧芏暡な1C-Bitrixプロゞェクトで心配を止めおGITにコミットし始めた方法

KdPVは、Summer Partnership Conference 1C-Bitrix 2012のテキストの著者です。



長い間、倧芏暡な1C-Bitrix Webプロゞェクトで管理者マネヌゞャヌある皮のコヌチずしお働く機䌚がありたしたさたざたな囜のさたざたな持株組織、Oracleデヌタベヌス、Webクラスタヌ゚ディタヌ、100 GBを超えるファむル、数幎の歎史を持぀40以䞊のサむト、カヌネル、パラノむアセキュリティモヌドの倚くの曎新に耐えたカヌネルの20以䞊の線集、および...バヌゞョン管理のヒントなしで戊闘サヌバヌの「ハンズオン」機胜ぞの盎接倉曎...

非垞に悲しい写真で、倚くの「産業事故」を匕き起こし、次の事件の埌に修正が呜じられたした。



この蚘事では私の経隓に぀いお説明したすが、䞻にバヌゞョン管理システムを䜿甚したこずがなく、どこから始めればよいかわからない小芏暡なむンタヌネットプロゞェクトの所有者に圹立ちたす。



実際、私たちのトラブルはすべお2぀の䞻な理由によるものです。

  1. 倧きなプロゞェクトは、狭いゲヌゞの鉄道に沿っお明るい未来に党速力で駆け぀けおおり、この時点でその䞋のレヌルを倉曎するのは少し困難でした。
  2. バヌゞョン管理システムず特にGITに関する膚倧な量の文献がありたすが、ほずんどすべおがスクリプトず明確なガむドラむンの欠劂に苊しんでいたす。 たずえば、壮倧なPro Gitは個々の機胜ず操䜜を完党に説明しおいたすが、この富をどこから䜿い始めるかに぀いおはほずんどわかりたせん。


キャプテンの蚌拠
GITを䜿い始めたい人ぞの私の最倧のヒントは、始めるこずです。

ずりあえず、少なくずも䜕かから始めおください。

そしお耇雑になりたす。

個人的には、棚に台本や指瀺を茉せるのに非垞に圹立ちたした。





物語はいく぀かの郚分に分けられたす。







パヌト1-状況の説明



私は顧客の領域に盎接䜍眮しおおり、顧客ず開発者の間の䞀皮のゞャンパヌずしお機胜したす。



お客様の優れたセキュリティガヌドは、䜕でも眮き換えるこずができるすべおのものぞのアクセスを制限したす。

おそらく、私ず開発者がSSH / FTPアクセスを持っおいれば、この蚘事は決しお登堎しなかったでしょうそしお、その背埌に朜む問題ははるかに少なかったでしょう。

ただし、玔粋に圢匏的には2぀の方法で倉曎を行うこずができるため、そのようなアクセスはありたせんでした。



そのため、䞀郚のタスクがロヌルオヌバヌされたずきに、開発者マネヌゞャヌから定期的に電話を受けたした。

アレクセむ、ここでタスクXXXをロヌルしたい。 init.phpを保存しおください


圓然のこずながら、「あなたは決しお知らない」が時々来お、指定されたファむルを埩元する芁求はチェヌン党䜓に行き、その時点でサむトは利甚できたせんでした...



同様に、セントラルリポゞトリGitLabぞのアクセスは、䜜成された時点では、お客様の領域に完党に制限されおいたした。 これにより、GITの実装に重芁な制限が生じたす。



お客様ず開発者のバヌゞョン管理システムは、実質的に盞互に分離されおいたす1C-Bitrix管理パネルを介した手動モヌドでのみ通信が行われたす。



たた、管理アクセス1C-Bitrixの1グルヌプには時間が制限されおいたす。 デヌタベヌスレベルOracleで私ず開発者に9.00で暩利を配垃し、17.50モスクワ時間で遞択する特別なスクリプトがありたす。



これは悪倢です。 コメントでこれを思い出さないでください。 =





パヌト2-ツヌル



2.1サヌバヌ





Prodはメむンの戊闘サヌバヌです。



Battle Serverに加えお、Headsの指瀺で2぀のコピヌが䜜成されたした。



私ず開発者の䞡方にずっお、3぀すべおのサヌバヌぞのアクセスはhttps経由のみです この堎合、蚌明曞は自動的に1C-Bitrixにログむンしたす。

SSH / FTPアクセスは、私の盎属の䞊叞ずのみです。 =

GitLab - GitLabをデプロむするための別個のサヌバヌで、䞭倮リポゞトリずしお䜿甚されたす。 サヌバヌは、盎接IPを介しおお客様のネットワヌクからのみアクセスできたすこの蚘事の詳现に぀いおは172. ***。***。61ず仮定したすが、実際には、たずえばgithub.comなどの任意のIPたたはドメむンを䜿甚できたす 。

3぀のWebサヌバヌProd / Test / PreliveはすべおGitLabにsshアクセスできたす。

http経由でのみGitLabにアクセスできたす実際、リポゞトリの䜜成/削陀ず、枝のある矎しい画像しか芋るこずができたせん。

DEV-開発者のサヌバヌずワヌクステヌションのセグメントの指定。 蚘事は考慮されたせん。 セグメントからのすべおの倉曎は、私たたは開発者が1C-Bitrix管理パネルを通じお手動でお客様のサヌバヌに転送したす。



最初のタスクロヌルアップスキヌムでは、チェヌン党䜓を枡す必芁がありたした。

DEV→TEST→PRELIVE→PROD

タスクが戊闘に入る前に、最終チェックは「最も関連性の高い」プレリュヌドで行われるこずになっおいた。 スキヌムは圓然非垞に退屈でほずんど圹に立たないこずが刀明したした。

珟時点では、タスクのチェックに2台のサヌバヌを䜿甚するこずに賛成したしたテストでは長いチェックが必芁で、Preliveではすぐにチェックされたす。

DEV→TEST / PRELIVE→PROD

コヌドは、セントラルリポゞトリGitLabを介しおのみ顧客セグメントの1぀のサヌバヌから別のサヌバヌに転送されるため、ロヌルアップスキヌムは次のように衚すこずができたす。





2.1.1サヌバヌ䞊のGIT



システム管理者によっおむンストヌルされたす。 残念ながら、このトピックに関しお有甚なこずは䜕も蚀えたせん質問は私の胜力を超えおいたす。

SSHキヌの生成以倖の特別な操䜜はありたせんサヌバヌず䞭倮リポゞトリGitLab間の通信甚。

手順は簡単にグヌグルで怜玢できたす。たたは、GitLabヘルプセクションに蚘茉されおいたす。



2.1.2サヌバヌ䞊のWebコン゜ヌルgit_console.php



前述のように、私も開発者もサヌバヌにSSHアクセスできないため、GITコマンドを送信するには、ブラりザヌにコン゜ヌルを実装する別のスクリプトをむンストヌルする必芁がありたした。

圌に感謝したすElfet  Habré のコン゜ヌルに関する蚘事 

非垞に小さな倉曎を加えたした。





この゜リュヌションの重芁な利点は 、コン゜ヌルの自埋性です ぀たり 開発者がinit.phpを倉曎しおペンのストロヌクに倱敗したサむトを蚭定した堎合でも、コン゜ヌルは動䜜し1C-Bitrixを䜿甚しないため、開発者はロヌルバックできたす。



2.1.3リポゞトリ構造



残念ながら、システム内のすべおのサむトがバヌゞョン管理䞋にあるわけではなく、ホヌルディングの「ヘッド」のみです。 これにより、特定の䞍䟿ず問題が発生したすたずえば、開発者が嚘の1人に察しおカヌネルを修正する堎合などが、これは基本的にこれらのサむトの所有者自身が「地䞊」で抱える問題です。 おそらく将来的には、オヌバヌヘッドにもかかわらず、GITにも远加されるでしょう。

リポゞトリの実際の構造のスキヌム名前ずアドレスは郚分的に消去されたす

リポゞトリの実際の構造のスキヌム名前ずアドレスは郚分的に消去されたす

構造に芋られるように



300 MBを超えるリポゞトリはありたせん最悪の日でも。

これは、特定の皮類のコンテンツPDF、avi、jpgなどのバむナリファむルを.gitignoreの必芁性ずそれに察応する犁止なしにそのようなリポゞトリに含めないずいう政治的決定によっお達成されたした。

2.1.4ドキュメント



この蚘事のすべおの写真もちろんKdPVを陀くは、お客様、私、および開発者が利甚できる特別なリ゜ヌスにあるドキュメントから取埗されたす。

最初テスト運甚期間、ドキュメントのドラフトがマシンに保存されおいたしたが、今ではチヌム党員がアクセスできるようにすべおのドキュメントが公開されおいたす。





パヌト3-手順



だから、私たちは最も興味深いこずに到達したした。

パヌト1で曞かれたすべおが玔粋にコンテキストを䜜成するためのもので経隓豊富なナヌザヌの心を぀かむため、パヌト2でさらに質問を深めるこずです私たちの倧きなプロゞェクトのように、地平線に急速に近づいおいる人たちのためにむベント、次にパヌト3-これらは、私が個人的に開始するのに十分ではなかった指瀺の基本的な䟋にすぎたせん。

GITを䜿甚しなかったが、開始したい人共有ホスティングに小さなオンラむンストアがある堎合でもがGITに技術サポヌトを䟝頌し、以䞋で説明するスクリプトを䜿甚しおGitHubたたはBitBucketを䞭倮リポゞトリずしお䜿甚できるこずを願っおいたす仕事を始めたしょう。 そしおその過皋で、圌らはすでにPro Gitのドキュメントを研究し、䜜業方法を適合させ、より柔軟で完璧なものにするこずができたす。

䞊蚘のすべおが1日以䞊で生たれたした。 しかし、それがようやく珟れたずきでさえ、疑問はこの富をすべお䜿甚する方法に留たりたした。

以䞋のすべおの指瀺は血で曞かれ、それから私自身が「自分のために」曞いたものです。





3.1リポゞトリの初期化



3.1.1 Prodでのリポゞトリの初期化およびProd / Preliveの再構築



最も簡単で正しい方法。

これは、バトル甚のリポゞトリを䜜成しおから、サむト党䜓リポゞトリを含むをバトルからTest and Reliveにコピヌするこずにありたす。

たずえば、ディレクトリ/ local /耇数のサむトに共通

Webコン゜ヌルPROD䞊-https//********.ru1119 / bitrix / admin / git_console.php

cd /u-app/bitrix/Apache/htdocs/site/******/local/



他の堎所のPress Serviceサむトのディレクトリ/ local / commonに移動したす

pwd



珟圚のディレクトリを確認したす堎所を確認したす

git status



-GITステヌタスを確認したすリポゞトリが衚瀺されないはずです

.gitignoreを配眮したす付録のサンプルを参照

git init





git config user.name "Zadoiny Alexey"





git config user.email "aleksey.zadoiny@******.ru"





git add -A .





git commit -m 'initital'





レポゞトリがGitLabで䜜成されおいない堎合local-******ずいう名前で䜜成したす

git remote add origin git@172.***.***.61:Alexey.Zadoiny/local-******.git





git push -u origin master







/ local /のリポゞトリのGitignoreの䟋
/.htaccess

* .log

* .tar

* .gz

* .sql

*。flv

*。mp4

*。pdf

*。avi

*。png

*。jpg

*。gif

*。bmp

* .rar

* .zip

* .7z

* .webm

*。mp3

*。wav

*。swf

/log.txt

* ._ログ

/ mail_log /

/_log.txt

*サむトマップ_ *。xml



.htaccess

urlrewrite.php





リポゞトリを䜜成したら、.htaccessファむルを

次のコンテンツ

すべおを拒吊




3.1.2補品䞊のリポゞトリの初期化および空のTEST / PRELIVEぞの移怍



なぜこれが必芁ですか たずえば、テストサヌバヌずバトルサヌバヌは既に䜜成および構成されおおり、近い将来それらの間で同期を行うこずはできたせん。

同期の察象ではないが必芁なファむルの数が少ないこずが重芁です぀たり、デヌタベヌス接続ファむルのみが同期されおいないため、この方法はカヌネルに適しおいたすが、倚くのコンテンツがある堎合は公開郚分には適しおいたせんリポゞトリから陀倖されるバむナリファむル、それ以倖の堎合は3.1.3項を参照



たずえば、すべおのサむトに共通のカヌネル/ bitrix /
戊いに぀いお

Webコン゜ヌルPROD䞊-https//*******.ru1119 / bitrix / admin / git_console.php

cd /u-app/bitrix/Apache/htdocs/bitrix/



他の堎所からすべおのサむトに共通のディレクトリ/ bitrix /に移動したす

pwd



珟圚のディレクトリを確認したす堎所を確認したす

git status



-GITステヌタスを確認したすリポゞトリが衚瀺されないはずです

.gitignoreを配眮したす付録のサンプルを参照

git init





git config user.name "Zadoiny Alexey"





git config user.email "aleksey.zadoiny@********.com"





git add -A .





git commit -m 'initital'





リポゞトリがGitLabで䜜成されおいない堎合bitrixずいう名前で䜜成したす

git remote add origin git@172.***.***.61:Alexey.Zadoiny/bitrix.git





git push -u origin master









䟋.gitignore

* .log

* .tar

* .gz

* .sql

* .flv

* .mp4

* .pdf

* .avi

* .rar

* .zip

* .7z

* .webm

* .mp3

* .wav

* .swf



キャッシュ

stack_cache

managed_cache

tmp



php_interface / dbconn.php

.settings.php





テスト/再珟

ファむル/bitrix/.settings.phpおよび/bitrix/php_interface/dbconn.phpGITを䜿甚しお同期されないその他の重芁なファむルのバックアップコピヌを䜜成したす。

/ bitrix /フォルダヌの内容を削陀したす

Webコン゜ヌルが機胜しおいたせん。 通垞のコン゜ヌルに行きたしょう

cd /u-app/bitrix/Apache/htdocs/bitrix/



どこからでも/ bitrix /ディレクトリに移動したす

pwd



珟圚のディレクトリを確認したす堎所を確認したす

git init





git remote add origin git@172.***.***.61:Alexey.Zadoiny/bitrix.git





git pull origin master





/bitrix/.settings.phpおよび/bitrix/php_interface/dbconn.phpファむルのバックアップコピヌを埩元したす





リポゞトリを䜜成したら、.htaccessファむルを

次のコンテンツ

すべおを拒吊






3.1.3 Prod䞊のリポゞトリの初期化および空でないTEST / PRELIVEぞの移怍



なぜこれが必芁ですか たずえば、テストおよびバトルサヌバヌは既に䜜成および構成されおおり、近い将来それらの間の同期は䞍可胜であり、ディレクトリにはバヌゞョン管理システムを䜿甚しお同期されない倧量のコンテンツが含たれたすたずえば、バむナリコンテンツファむルpdf、jpg、swf、avi、など



いずれかのサむトのモバむルバヌゞョンの䟋
戊いに぀いお

Webコン゜ヌルPROD䞊-https//*******.ru1119 / bitrix / admin / git_console.php

cd /u-app/bitrix/Apache/htdocs/site/******/m-ru/



どこからでもモバむルRUディレクトリに移動

pwd



珟圚のディレクトリを確認したす堎所を確認したす

git status



-GITステヌタスを確認したすリポゞトリが衚瀺されないはずです

.gitignoreを配眮したす付録のサンプルを参照

git init





git config user.name "Zadoiny Alexey"





git config user.email "aleksey.zadoiny@******.ru"





git add -A .





git commit -m 'MOBILE RU 2014 initital'





レポゞトリがGitLabで䜜成されなかった堎合m-ru2014ずいう名前で䜜成したす

git remote add origin git@172.***.***.61:Alexey.Zadoiny/m-ru2014.git





git push -u origin master





git log







最埌のコマンド git log



を実行しお、コミットのハッシュを芋぀けたす



テスト/リレヌで、GITによっお制埡される䞀郚のファむルが異なる堎合に必芁になりたすその埌、このコミットにロヌルバックしたす。戊闘では、珟圚のサヌバヌステヌタスがあり、実際に同期したす



䟋.gitignore

ビトリックス

ロヌカル

アップロヌドする

docs



/.htaccess

* .log

* .tar

* .gz

* .sql

* .flv

* .mp4

* .pdf

* .avi

* .png

* .jpg

* .gif

* .bmp

* .rar

* .zip

* .7z

* .webm

* .mp3

* .wav

* .swf

/log.txt

* ._ログ

/ mail_log /

/_log.txt

*サむトマップ_ *。xml



.htaccess

urlrewrite.php





ここで、モバむルバヌゞョンディレクトリの暹皮に衚瀺されるバトルから.gitフォルダヌ党䜓をコピヌし内郚に小さなファむルがたくさんあるため、最初にアヌカむブする方がよい、Test / Reliveに転送したす。

そこで、リポゞトリの状態を解凍しお確認したす。

Webコン゜ヌルTEST / PRELIVE-https//*******.ru1119 / bitrix / admin / git_console.php

cd /u-app/bitrix/Apache/htdocs/site/******/m-ru/



どこからでもモバむルRUディレクトリに移動

pwd



珟圚のディレクトリを確認したす堎所を確認したす

git status



-GITステヌタスを確認したす倉曎は衚瀺されたせん

ただ倉曎がある堎合

git reset --hard #HASH#



whereHASH-バトルで取埗したコミットハッシュの最初の4〜5文字もっず倚い堎合もありたすが、通垞は少数





リポゞトリを䜜成したら、.htaccessファむルを

次のコンテンツ

すべおを拒吊






3.1.4 Prodのサブモゞュヌルリポゞトリの初期化および空でないTEST / PRELIVEぞの移怍



サブモゞュヌルの難しさは、既存の゚コシステムに倉曎を加える必芁があるずいう事実にありたす぀たり、リポゞトリが既に存圚し、突然、「 ええ、いや、芪愛なる、フェンスがあり、Vasyaはフェンスの埌ろに䜏んでいたす」 「

特に、いく぀かの機胜を最初にデプロむしおコミットする堎合、䜜成したすべおのファむル/ディレクトリを削陀しお、この堎所にサブモゞュヌルを䜜成する必芁がありたす このトピックに関するTOSTERの質問 。



既存のリポゞトリ内にサブモゞュヌルd ****を䜜成する
セントラルリポゞトリGitLabに新しい空のリポゞトリ****-project-d ****ずいう名前を䜜成したす



戊闘を確認し、存圚する堎合は、フォルダヌ/ u-app / bitrix / Apache / htdocs / site / ********** / ru / ***** / ****** / d *を削陀したす*** /

Webコン゜ヌルにアクセスしたす-https//********.ru1119 / bitrix / admin / git_console.php

cd /u-app/bitrix/Apache/htdocs/site/*********/ru/



他の堎所からリポゞトリディレクトリに移動

pwd



珟圚のディレクトリを確認したす堎所を確認したす

git status



-GITステヌタスを確認したすルヌトリポゞトリの存圚を衚瀺する必芁がありたす

git submodule add git@172.***.251.61:Alexey.Zadoiny/****-project-d****.git *****/****/d****/







git statusを実行するず、次のように衚瀺されたす



git add -A .





git commit -m 'INIT SUBmodule D****









  • これで、サブモゞュヌルを独立したリポゞトリずしお䜿甚できたすその状態をコミットし、GitLabを介しおProd / Test / Preliveサヌバヌなどで倉曎したす
  • Test / Preliveのメむンリポゞトリの状態を曎新するず、新しいサブモゞュヌルが自動的にむンストヌルされたす








3.2ロヌリングタスクの曎新



最初に、このプロセスはスキヌムに埓っお行われるこずになっおいたこずを思い出させおください。

DEV→TEST→PRELIVE→PROD

そのため、曎新スキヌムには11のメむンステップず4぀の远加ステップが含たれ、いく぀かのブランチがありたした。

地獄のスポヌン


この悪倢の氎平バヌゞョンはただ職堎に残っおいたす おそらく削陀する必芁がありたすが、特別なプロゞェクトを開始するために来た新しい請負業者の代衚者など、初めお䞀緒に働いおいる人々の思いやりのある銖振りを芋るのは本圓にばかげおいたす 





スキヌムは、

DEV→TEST / PRELIVE→PROD





ご泚意 実際、すべおの指瀺には、1぀の䜏所cdではなく、すべおの䜏所のリストが蚘茉されたプレヌトがありたす。 ぀たり アクションを実行するずきに、いずれか1぀を遞択しお党䜓をコピヌできたす特定のレポのディレクトリを芚えさせないでください。

どのように芋えるかの䟋




簡朔にするため、簡朔にするためにどこでも1぀のアドレスを䜿甚したすほずんどの新しいGITナヌザヌはすぐに倚くのリポゞトリを操䜜する必芁はないず考えおいるためです。



各ステップは独立した自埋的なものず芋なされるため、リポゞトリディレクトリぞの移行から始たりたす。 プロセスが䞭断しない堎合、呜什のこのセクションは単玔に無芖できたす。



3.2.0タスク曎新のロヌルバック-ステップ0





cd /u-app/bitrix/Apache/htdocs/bitrix/



-プロゞェクトフォルダヌに移動したす。 pwd



自分自身を確認する

git status



status-コミットされおいない倉曎はありたせん。

git log



log-最埌のコミットは、䞭倮のGitLabリポゞトリのMasterブランチの最埌のコミットに察応する必芁がありたす

git log



最埌のコミットが衚瀺されなかった堎合は、ステップ3.4に進み、珟圚の状態をバトルからテスト/再珟たでロヌリングした埌、手順を最初から開始したす。

Nakat-䜕らかの手段FTP、管理パネルで機胜するタスクをテスト/再珟したす。



3.2.1タスク曎新プログラムのロヌルアップ-ステップ1





cd /u-app/bitrix/Apache/htdocs/bitrix/





git add -A .





git commit -m 'TIKET ######'





git push origin master:TIKET_######





倉曎をコミットし、開発ブランチテスト/リラむブサヌバヌのりィザヌドから䞭倮リポゞトリのタスクブランチに送信したす。

代替オプション
git statusがGITに察しお行われるタスクのファむルだけでなく倉曎を瀺す堎合、以䞋を䜿甚するこずをお勧めしたす。

git add -A /puth/





どちらか

git add -A /puth/file.php





バヌゞョン管理システムに远加する必芁があるすべおのディレクトリずファむル。 パスの代わりのポむントは、すべおの倉曎されたおよび䜜成および削陀されたファむルをむンデックス付けしたす。





3.2.2タスク曎新のロヌルバック-ステップ2





cd /u-app/bitrix/Apache/htdocs/bitrix/





git status





git add -A .





git commit -m 'Prod changes ##'





git push origin master





戊闘ステヌタスを確認しおください。

バトルステヌタスが倉曎された堎合およびテスト/リリヌスがより䞍適切な状態にある堎合、倉曎をコミットし、同期のために䞭倮リポゞトリに送信したす。

倉曎がない堎合は、手順4に進みたす。



3.2.3タスク曎新のロヌルバック-ステップ3





cd /u-app/bitrix/Apache/htdocs/bitrix/





git pull origin master





Test / Reliveのタスクのロヌルアップ䞭に戊闘が倉曎された堎合ステップ2を参照、䞭倮リポゞトリを介しお戊闘の倉曎をTest / Reliveにロヌルし、倉曎をモデレヌトする必芁がありたす。

GITが単独でブランチをマヌゞできない堎合たずえば、同じファむルの倉曎により競合が発生する堎合、競合を手動で解決する必芁がありたす。

ステップの最埌に→ステップ1に戻りたす。



3.2.4タスク曎新のロヌルバック-ステップ4





cd /u-app/bitrix/Apache/htdocs/bitrix/





git pull origin TIKET_######





䞭倮リポゞトリからバトルにタスク曎新をロヌルしたす





3.3毎日の倉曎をコミットする䞀日の終わり



残念ながら、䞊蚘のプロセスにも関わらず、2぀の䞻な理由により、戊闘には垞に倉化がありたす。



したがっお、営業日の終わりに毎日そしお、17.50モスクワ時間埌の蚘事の冒頭から芚えおいるように、開発者ず私はバトルでphpを線集する胜力を倱いたす私はタスクの倖で行われたすべおの線集をたずめおコミットしたす。

朝はどうしお
䜕らかの理由で早めに仕事を蟞めなければならない堎合は、通垞、ワヌクフロヌが始たる前の翌日に開発者が暖かいベッドで寝おいる間にそのたたにしたす。

ただし、PreliveずProdは倜間に同期されるため、これは耇雑さを増したす ぀たり 午前䞭のコミットされおいない倉曎は、戊闘だけでなく喜びにもなりたす

぀たり、日䞭は無料でタスクの展開を攟棄するか、GITを䜿甚しおファむルを同期する必芁がありたす。

  • Prelive状態から最埌のコミットぞのロヌルバック3.4.1を参照
  • 珟圚の状態をGitLabからPreludeにロヌルアップしたすgit pull、3.1.3を参照




このプロセスは、戊闘での倉曎のコミットずたったく同じです3.1.2を参照。

cd /u-app/bitrix/Apache/htdocs/bitrix/





git status





git add -A .





git commit -m 'Prod changes ##'





git push origin master









3.4ロヌルバックの倉曎



  1. 倉曎をロヌルバックする必芁がある状況は3皮類ありたす状況が悪化するため。
  2. テスト/リラむブのロヌルバック゚ラヌが発生したか、タスクが正垞に怜蚌されたかは関係ありたせん-「サむトを解攟」する必芁がありたす。テスト/リラむブの倉曎は必芁ありたせん
  3. GITを介した軜埮な゚ラヌのバトルぞのロヌルバックキヌワヌドは重芁ではありたせん。たずえば、GitLabでの分析にはバヌゞョン履歎が重芁ですが、バトルに安定したバヌゞョンを戻す必芁がありたす。FRESH線集に察しおのみ実行されたす
  4. 重倧な゚ラヌの戊いぞのロヌルバックシリヌズ「 シェフ、すべおがなくなった!!!! 1111ワンりェむ 」の状況、プロゞェクトのパフォヌマンスがGitLabの矎しいストヌリヌよりも重芁な堎合




3.4.1テスト-最埌の安定状態ぞのロヌルバック



「頭に浮かぶ」ずいうタスクを持぀テストサヌバヌでの䜜業は実行されたせん。 このため、開発者には開発環境がありたす。顧客に匕き枡す前にテストするためだけにここに来たす。したがっお、無菌状態は履歎よりも重芁ですそのため、フラグは硬く、チェックアりトなどではなくリセットされたす。

git reset --hard HEAD







耇数のコミットをロヌルバックする必芁がある堎合は、GitLabから特定のコミットのハッシュを取埗しおロヌルバックしたす。

git reset --hard #HASH#









3.4.2ファむト-膚匵したタスクが゚ラヌを匕き起こしたすGIT経由で発生



線集によっおサヌバヌが配眮されず、100が最埌のコミットに付属し、2か月前に䜜成されおおらず、既に同化されおいお、他のタスクずの䟝存関係が䜜成された堎合、線集をキャンセルするカりンタヌコミットを䜜成できたす。

利点は、この線集の履歎をGitLabに保存し、開発者アクセスできる堎合がもう䞀床コミットを調べ、頭を動かすこずができるこずです。 はい。コミットがGitLabマスタヌブランチに既に到達しおいる堎合、問題はありたせん。

線集が戊闘ですぐに行われた堎合誰が手を離すべきか、この戊略では、最初にコミットする必芁がありたすが、これは明らかに合理的ではありたせん。



git revert HEAD







前回の倉曎を砎棄しお、カりンタヌコミットを䜜成したす。



3.4.3戊い-線集が戊いを壊した完党に



すべおが非垞に悪い堎合サヌバヌが嘘を぀いおいるか、たたは「非垞に重芁な機胜」がずっず前に壊れおいたこずが突然刀明した堎合、特に行く堎所はありたせん

git reset --hard HEAD







耇数のコミットをロヌルバックする必芁がある堎合は、GitLabから特定のコミットのハッシュを取埗しおロヌルバックしたす。

git reset --hard #HASH#







このようなロヌルバックの結果、砎棄されたコミットがGitLabのmasterブランチに既にヒットしおいるこずが刀明した堎合、順序を埩元するには、GitLabのリポゞトリ党䜓を削陀しお再䜜成する方が簡単なこずがよくありたす。 =





おわりに



説明したシナリオは非垞に単玔です。 これは同時に長所ず短所です。



ただし、このような限られたツヌルキットでも、GitLabでこのような玠晎らしい写真を芳察できたす。





いく぀かのコミットは、私のルヌルに埓っお名前が付けられおいたせん。これは、タスクがロヌルオヌバヌしたずきに、開発者がTest / Preliveサヌバヌの機胜をすばやく蚭定した結果です。 そのような堎合、TIKET _ ###### Patch _ ##チケット番号ずパッチシリアル番号を䜜成しお、トラッカヌが関連するタスクを簡単に識別できるようにしたした。





䞀郚のタスクは、開発者ではなく、私によっお盎接実装されたす。 この堎合、TiketではなくTaskから呌び出し、別の䌚蚈システムの関連タスクのIDを瀺したす。



実際、そのような枝や亀差点はたったく玠晎らしいものではありたせん。 クヌルに芋えたすが、実際には、チェックのために1週間たたは1か月延期されたすべおのタスクは、誰かにhemo栞を䜜成し、それがすべおを統合したす。

䜕かが壊れおいるわけではありたせんただし、GITで修正できない競合が数回あったため、解決しなければなりたせんでした。 しかし、それはあなたを緊匵させたす。





よくある質問
Qブランチが倚すぎたすか

A原則ずしお、各サヌバヌには1぀のブランチマスタヌしかありたせん。 倚くのブランチは、䞭倮リポゞトリGitLabにのみ存圚したす。 そこから個別のブランチをダりンロヌドする必芁はほずんどありたせんこのシナリオは、珍しいため䞀般的ではないため、説明しおいたせん。 自然に䞍芁なブランチコミットがマスタヌにマヌゞされるは定期的にクリヌンアップする必芁がありたす。 SVNに非垞に䌌おいるこずを理解しおいたすが、私たちにずっおはうたく機胜し、倚くの助けになりたす。



Qマヌゞが説明されおいたせん。 どうやっおやるの

A原則ずしお、マヌゞはGITによっお自動的に実行されたす。 たれに、競合の解決が必芁です。 この堎合、自動マヌゞが倱敗したずいう通知を受け取りたす。

この時点でgitステヌタスを実行するず、競合するファむルのリストが受信されたす。 それらを調べおすべおの競合を解決する必芁がありたす特別なマヌカヌは、異なるコミットからのコヌドの䞀郚を匷調衚瀺したす。

ただし、組織的な方法ずのマヌゞの競合を解決するよりも回避する方が簡単です。 いずれにしおも、倚くの堎合、経隓豊富なプログラマヌだけがこれを行うこずができたす。

そうだずすれば、Pro Gitのマヌゞに関する章は非垞に䟿利です。



Qコヌド䟋からアスタリスクを削陀したり、写真の塗り぀ぶした堎所を削陀したりするこずはできたすか

A陰謀神孊のこの巚倧な創造に぀いお読者に謝眪したす。

これは、実際の指瀺の最小限のゆがみであり、セキュリティ䞊の理由から、顧客の代衚者はドラフト蚘事に同意するこずに同意したした。




All Articles