일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스마트시티
- ads.txt
- 코로나바이러스
- certification
- 한국판뉴딜
- 5G
- 일본대학원
- 명령어
- 스펙정보
- 리눅스
- 200-301
- 동시접속
- 다음메일
- 정보처리기사
- move앱
- 韓国ヒップホップ
- QA
- 환경정보
- gbd-200
- DevNet
- 韓国
- 사양
- 4차산업
- 사양정보
- JMeter
- 성능측정
- 일본유학
- ios
- 사용자100명
- 부자아빠가난한아빠
- Today
- Total
IT 컴퓨터공학 자료실
Git(ギット)에 대해 본문
git(ギットは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。現在のメンテナンスは濱野純 (Junio C Hamano) が担当している。
gitでは、各ユーザのホームディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
Git은 프로그램의 소스 코드 등의 변경 내역을 기록하고 추적하기 위한 분산 버전관리 시스템이다. 원래는 Linux 커널의 소스 코드 관리에 이용하기 위해 리누스 토발스에 의해 개발 된 이후 다른 많은 프로젝트에서 사용되고 있다. Linux 커널과 같은 거대한 프로젝트에도 대응할 수 있도록 동작 속도에 중점을 두고 있다.
Git은 각 사용자의 홈 디렉토리의 모든 기록을 저장소 안에 완전히 복제한다. 따라서 네트워크 액세스하지 않고 중심 저장소에 액세스 할 수 없는 환경이라도 기록 조사 및 변경 기록 등 대부분의 작업을 할 수 있다. 이것이 「분산형」 이라고 불리는 이유이다.
作業の流れ
워크 플로우
gitは分散型のソースコード管理システムであるため、リモートサーバ等にある中心リポジトリの完全なコピーを手元(ローカル環境)に作成して、そのローカルリポジトリを使って作業を行う。
一般的な開発スタイルでは、大雑把に言えば、以下のようなステップの繰り返しで作業が行なわれる:
- リモートサーバ等にある中心リポジトリをローカルに複製する (git clone)。
- ローカルでコンテンツの修正・追加・削除を行い、ローカルリポジトリに変更履歴を記録する (git commit)。必要に応じて過去の状態の閲覧や復元などを行う。場合によってはこのステップを何度か繰り返す。
- 中心リポジトリに加えられた他人による変更をローカルに反映させる (git pull)。他人の変更内容が自分の変更内容と衝突することもある。衝突は、gitが自動で解決できることもあれば、手動で解決しなければならないこともある (git merge)。
- ローカルの変更内容を中心リポジトリに反映させる (git push)。ステップ2.へ戻る。
リポジトリ間の通信 (clone, pull, push) では以下のプロトコルが使用できる。
rsyncやFTP/FTPSは、もはや使うべきではないとされている。
Git은 분산 형 소스 코드 관리 시스템이기 때문에 원격 서버 등의 중심 저장소의 전체 복사본을 수중(로컬 환경)에 작성하여 로컬 저장소를 사용하여 작업을 한다.
일반적인 개발 스타일은 대략적으로 말하면 다음과 같은 단계로 구성될 수 있다.
1. 원격 서버 등의 중심 저장소를 로컬에 복제 (git clone).
2. 로컬 콘텐츠를 수정 · 추가 · 삭제하고, 로컬 저장소에 변경 내역을 기록한다 (git commit). 필요에 따라 과거의 상태 검색 및 복원 등을 실시한다.
3. 중앙 리포지토리에 추가 한 타인에 의한 변경을 로컬에 반영 (git pull). 타인의 변경 내용이 자신의 변경 내용과 충돌 할 수도 있다. 충돌은 Git이 자동으로 해결할 수 있는 경우도 있으며, 수동으로 해결해야하는 경우도 있다 (git merge).
4. 로컬 변경 내용을 중심 저장소에 반영 (git push). 2 단계로 돌아간다.
저장소 간 통신 (clone, pull, push)은 다음 프로토콜을 사용할 수 있다.
∙ 로컬 파일 시스템
∙ SSH
∙ Git ( 인증 기능 없음)
∙ HTTP / HTTPS ( WebDAV ) (push하기 위해서는 WebDAV 필요)
設計
Git의 설계
gitの設計はBitKeeperとMonotoneが元になっている[8][9]。元々のgitはローレベルなエンジンとして設計されていたが、これは、他の開発者がCogitoやStGITのようなフロントエンドを容易に開発できるようにすることを目的としていた[10]。現在では、gitのコア自体もユーザから直接利用できるようになっている[11]。
gitの設計には、リーナスが大規模プロジェクトのメンテナンスを行った経験や、ファイルシステムのパフォーマンスに関する深い知識、また実用性のあるシステムを短期間に作成しなければならないという差し迫った必要性(BitKeeperを参照)が反映されている。これらの影響は、以下のような形で実装に現れている。
ノンリニアな開発スタイルに対する強力なサポート。gitではブランチやマージが高速に行える。また、ノンリニアな開発の履歴を可視化・ナビゲートするための専用のツールを同梱している。また、ツリーに対する1回の変更に対して、複数回のマージが発生するという前提を置いているが、これは変更点が複数のレビュアーによってレビューされることを想定しているためである。
Git 디자인은 BitKeeper 와 Monotone이 바탕으로 되어있다. 원래 Git은 로우 레벨 엔진으로 설계되어 있었지만, 이것은 다른 개발자가 Cogito 과 StGIT 같은 프론트엔드를 쉽게 개발할 수 있도록 하는 것을 목적으로 하고 있었다. 현재에는 Git의 코어 부분도 사용자가 직접 이용할 수 있게 되었다.
Git의 설계는 리누스가 대규모 프로젝트의 유지 · 보수를 수행 한 경험과 파일 시스템의 성능에 대한 깊은 지식, 또한 실용성 있는 시스템을 단기간에 작성해야한다는 절박한 필요성이 반영되어 있다.
이러한 영향은 다음과 같은 형태로 구현 나타나고 있다.
分散開発。他の分散型バージョン管理システム(Darcs、BitKeeper、Mercurial、SVK、Bazaar、Monotone)と同様に、gitでも各々の開発者がリポジトリの完全なコピーをローカルに保持しており、各開発者の行った変更は他のリポジトリへコピーされる。これらの変更は新しい開発用ブランチとしてインポートされる。また、ローカルな開発用ブランチへのマージも可能である。
HTTP、FTP、rsync、gitプロトコル(sshを利用したトンネリングも可能)を使用したリポジトリの配布が可能。また、CVSサーバのエミュレーション機能を使用すれば、既存のCVSクライアントやIDEのプラグインからgitリポジトリへアクセスできる。
git-svnを使用すれば、Subversionおよびsvkのリポジトリを直接操作できる。
大きなプロジェクトにおける処理の効率化。gitは非常に高速かつスケーラブルになるよう記述されている[12]。Mozillaによって行われたパフォーマンステストでは、他のリビジョンコントロールシステムと比較して10倍、処理によっては100倍高速に動作することが示された[13][14]。
ツールキット化された設計。gitはC言語で書かれたプログラム一式と、それらのラッパーとなる何本かのシェルスクリプトで構成されている[15]。gitをWindowsに移植する過程で、シェルスクリプトのほとんどはC言語で書き直された。しかし、現在でも複数のコンポーネントを繋げることで複雑な処理を容易に行えるような設計になっている[16]。
∙ 비선형 개발 스타일에 대한 강력한 지원. Git에서 분기 및 병합이 빠르게 할 수 있다. 또한 비선형 개발 기록을 시각화 · 탐색하기 위한 전용 도구를 포함하고 있다. 또한 트리에 대한 1 회 변경에 대해 여러 차례의 병합이 발생한다는 전제를 두고 있지만, 이것은 변경 사항이 여러 작성자에 의해 검토되는 것을 기대하고 있기 때문이다.
∙ 분산 개발. 다른 분산 버전 관리 시스템 ( Darcs , BitKeeper , Mercurial , SVK , Bazaar , Monotone ) 뿐만 아니라 Git에서도 각각의 개발자가 저장소의 전체 로컬 복사본을 보유하고 있으며, 각 개발자가 행한 변경은 다른 저장소로 저장된다. 이러한 변화는 새로운 개발 브랜치로 가져된다. 또한 로컬 개발 브랜치에 병합도 가능하다.
∙ HTTP , FTP , rsync , Git 프로토콜 ( ssh 를 이용한 터널링도 가능)을 사용하여 저장소의 배포가 가능하다. 또한 CVS 서버의 에뮬레이션 기능을 사용하면 기존의 CVS 클라이언트와 IDE 플러그인에서 Git 저장소에 접근 할 수있다.
∙ git-svn을 사용하면 Subversion 및 svk 저장소를 직접 조작 할 수 있다.
∙ 큰 프로젝트에서 처리에 효율적으로 설계되었다. Git은 또한 매우 빠르고 또한 확장성이 뛰어나도록 작성되었다. Mozilla 의해 시행된 성능 테스트에서는 다른 형상관리 시스템과 비교하여 10 배, 처리 테스트는 100 배 빠르게 동작할 수 있음이 드러났다.
∙ 툴킷 된 디자인. Git은 C 언어로 작성된 프로그램 세트와 그 래퍼가되는 몇 개의 쉘 스크립트로 구성되어있다. Git를 Windows로 포팅하는 과정에서 쉘 스크립트의 대부분은 C 언어로 재 작성되었다. 그러나 현재에도 여러 구성 요소를 연결하는 것으로 복잡한 처리를 쉽게 할 수 있도록 설계되어있다.
출처 : https://ja.wikipedia.org/wiki/Git
'etc.. 기타 카테고리 2 > 영어 번역 & 일본어 번역' 카테고리의 다른 글
ASSOCIATION에 대해 (0) | 2015.07.19 |
---|---|
스켈레톤 코드(Skeleton (Computer Science)) 에 대해 (0) | 2015.07.19 |
버전 관리 시스템(バージョン管理システム)에 대해 (0) | 2015.07.14 |
Separation of Concerns에 대해 (0) | 2015.07.14 |
Event Handler에 대해 (0) | 2015.07.14 |