Git基础
有人告诉我要用Git,但是我不太懂,所以我去做了一些调查。
我看了一些与Git相关的文章,但是有很多我不懂的词汇,所以我也整理了一下这些术语。
如果有错误的地方,请您指正。
文献引用
https://git-scm.com/book/zh/v2
http://programmerbox.com/2013-07-17_git_summary/
Git是什么?
代表性的”分散式版本管理系统”
分散型: 自分のマシンにリポジトリ(開発過程が保存されるデータベース)を持っている
バージョン管理システム:(複数人で)開発過程を記録しながら開発を行なうためのシステム
【术语】
リポジトリ:ファイルやディレクトリの状態や変更履歴(開発過程)が保存されるデータベース
(Gitでは連想記憶ファイルシステム??)
Git的概念图。

リモートリポジトリで開発過程を共有する
ローカルリポジトリを持つ事で,オフラインでの作業が可能に
開発過程(状態や変更履歴)のリモートリポジトリへの登録は3段階で行なわれる
ワークツリーの変更を加えたファイルをステージングエリアに追加 (add)
ステージングエリアのファイルをローカルリポジトリに登録 (commit)
ローカルリポジトリに登録された情報をリモートリポジトリに追加(push)
リモートリポジトリからの開発過程情報の取り寄せは後述
【术语】
ローカルリポジトリ:自分のコンピュータ内にあるリポジトリ
リモートリポジトリ:自分のコンピュータ外にある(複数人で共有する)リポジトリ
ステージングエリア:ローカルリポジトリに登録するファイルやディレクトリのリスト
ワークツリー:バージョン管理対象の(開発過程を記録する)ファイルやディレクトリ
ディレクトリ:=フォルダ
ステージング:ワークツリーの変更を加えたファイルをステージングエリアに追加すること (add)
コミット:ステージングエリアのファイルをローカルリポジトリに登録すること (commit)
プッシュ:ローカルリポジトリに登録された情報をリモートリポジトリに追加すること(push)
暂时尝试使用Git
-
- 安装 Git
https://git-scm.com/book/ja/v1/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
设置用户信息
$ git config —global user.name 用户名
$ git config —global user.email 邮箱地址
或编辑 ~/.gitconfig
リモートリポジトリが存在しない場合
リモートリポジトリを作成
Githubを利用
https://github.com/
bitbucketを利用
https://bitbucket.org/
自ら作成
http://qiita.com/nekogeruge_987/items/326ba157d5552f0076be
作業ディレクトリ(バージョン管理したいファイルがあるディレクトリ)に移動
$ mv 作業ディレクトリ
Gitディレクトリ(リポジトリに必要なファイルが格納されているディレクトリ)を作成
$ git init
$ ls -a → .git (Gitディレクトリ)ができている事を確認
リモートリポジトリを登録
$ git remote add 設定するリモートリポジトリ名 リモートリポジトリのurl
作業ディレクトリ内の(全ての)ファイルをステージングエリアにステージング
$ git add ファイル名 (指定したファイルをステージング)
$ git add —all (全てのファイルをステージング)
ローカルリポジトリにコミット(ステージングエリアのファイルをローカルリポジトリに登録)
$ git commit -m “メッセージ”
最初のcommitでmasterブランチ(開発の本流)が作成される
$ git branch → *master となっていることを確認
ブランチについては後述
リモートリポジトリへプッシュ(ローカルリポジトリに登録された情報をリモートリポジトリに追加)
$ git push リモートリポジトリ名 リモートブランチ名
リモートリポジトリが存在する場合
リモートリポジトリを自分のコンピュータにクローン(複製)(作業ディレクトリ・Gitディレクトリが自動生成される)
$ git clone リモートリポジトリのurl
※リモートリポジトリ名はoriginとなる
这样你就准备好开始使用Git了
【术语】
作業ディレクトリ:バージョン管理したいファイルやディレクトリ(ワークツリー)があるディレクトリ
Gitディレクトリ:リポジトリに必要なファイルが格納されているディレクトリ(.git)
クローン:リモートリポジトリを自分のコンピュータに複製し,作業ディレクトリとGitディレクトリを自動生成する事
分支
Git提供了分支功能,可以从主开发流程分岐出来,在不妨碍主流开发的情况下继续进行工作。
用于分支功能的三个数据

コミットオブジェクト:コミットに関する以下の要素を持つオブジェクト(データのまとまり)
Key:リポジトリに保存される名前(ステージングエリアのファイルからハッシュを用いて生成)
blob:リポジトリに登録される,(変更が加わった)ファイルのスナップショット← (差分でない所がGitの特徴らしい)
Parent Key:1つ前のコミットにより生成されたコミットオブジェクトのKey
Tree:blobの集合を表すオブジェクト
コミットオブジェクト(変更の加わったファイル)を辿って行く事で,過去の作業ディレクトリの状態を復元できる(コミットグラフ)
ブランチ:直近のコミットで生成されたコミットオブジェクトを指すポインタ.複数作ることで分岐を実現
HEAD:作業中の分岐のブランチを指すポインタ
分岐点之前的流程 de

-
- 最初的提交
-
- 从暂存区文件创建提交对象(commit0),并保存到本地仓库
-
- 第一个提交对象没有父键
-
- 生成主分支(表示开发主线的分支)并保存到本地仓库
-
- 将主分支设置为当前工作分支,HEAD指向主分支的键
第二次提交
创建提交对象(commit1),并保存到本地仓库
主分支的值改为新生成的提交对象的键
创建分支
使用命令“git branch 分支名称”创建新分支(branch1)
新创建的分支指向HEAD指向的分支=当前工作分支(master)所指向的提交对象
第三次提交
创建提交对象(commit2),并保存到本地仓库
当前工作分支(master)的值改为新生成的提交对象的键
切换分支
使用命令“git checkout 分支名称”切换到指定的工作分支
HEAD的值改为指定分支的键
从仓库中读取指定分支所指向的提交对象的状态,并更新工作目录(检出)
第四次提交
创建提交对象(commit3),并保存到本地仓库
当前工作分支(branch1)的值改为新生成的提交对象的键
通过在分支1提交,可以在不干扰主线(主分支)开发的情况下进行工作。
术语
オブジェクト:データのまとまり
スナップショット:変更が加えられるファイルのある時点を抜き取ったもの
コミットオブジェクト:コミットに関するオブジェクト(変更したファイル・開発過程)
ブランチ:直近のコミットで生成されたコミットオブジェクトを指すポインタ
HEAD:作業中の分岐のブランチを指すポインタ
チェックアウト:リポジトリから作業ディレクトリにファイルやディレクトリをコピーすること
コミットグラフ:コミットオブジェクトをグラフ形式で表現したグラフ(赤色のグラフ)
分支的整合 de hé)
将两个分支(独立的更改)合并为一个状态的方法有两种。


似乎根据情况不同,有不同的合并方法可供选择。
[Chinese Paraphrase]
【术语】
合并:重新创建在两个分支上进行更改的文件的快照,并自动生成一个新的提交对象的分支集成方法
快进:当可以通过跟随分支的父级来达到集成时的合并(只是将分支的值向子级移动)
冲突:当不同的分支对同一个文件进行编辑时,无法自动创建新的提交
变基:一种将一方分支上的更改在另一方分支上重新生成的分支集成方法
与远程库的交互
分支的分类 – de

ローカルブランチ:ローカルリポジトリのブランチ
リモートブランチ:リモートリポジトリのブランチ
リモート追跡ブランチ:リモートリポジトリとの接続時にリモートブランチが指していたコミットオブジェクトを指すローカルリポジトリのポインタ
ブランチ名は「リモートリポジトリ名/リモートブランチ名」となる ex) origin/master
リモート追跡ブランチに切り替える(リモート追跡ブランチのKeyをHEADのValueにする)事はできない
追跡ブランチ:プル(後述)の為にリモート追跡ブランチと対応づいたローカルブランチ
タグ:ブックマークしたいのコミットオブジェクトを指すポインタ
四个交流
与具体的的远程代码库的连接(互动)涉及以下四个方面。

现作为中国当地人,在中文中将以下内容转述一遍即可:
【用语】
プッシュ:ローカルリポジトリのコミットオブジェクトをリモートリポジトリに追加すること
フェッチ:リモートリポジトリのコミットオブジェクトをローカルリポジトリに追加すること
プル:フェッチ + 追跡ブランチと対応しているリモート追跡ブランチをマージすること
ローカルブランチ:ローカルリポジトリのブランチ
リモートブランチ:リモートリポジトリのブランチ
リモート追跡ブランチ:リモートブランチとの接続時にリモートブランチが指していたコミットオブジェクトを指すローカルリポジトリのポインタ
追跡ブランチ:リモート追跡ブランチと対応づいたローカルブランチ(プル用)
タグ:ブックマークしたいのコミットオブジェクトを指すポインタ