Skip to content
Yuuta-watanabe edited this page Oct 16, 2014 · 1 revision

Git: バージョン管理ツール

 バージョン管理とは、変更を一つのファイル、もしくは時間を通じたファイルの集合に記録するシステムで、そのため後で特定バージョンを呼び出すことができる。このような機能を用いてチームで共同作業、バージョン管理、バックアップ、コードレビューができる。バージョン管理ツールはRCS、CVS、Subversion、Perforce、Git、Mercurial、Bazaar、Darcsなどがありますが、Gitは分散バージョン管理システムとして最近もっともホットなものである。詳しい内容はProGitというウェブに公開されている本を参考すること!


Gitlab: Gitリポジトリの管理するサービス系ツール

 GitLabとは、GitHubのようなサービスを個人目的でも自分の環境に独自で構築できるように公開されたオープンソースである。名前で分かるように、Gitを用いて共同作業をする時、よく使うサービスです。我々もオリオンサーバにGitLabを設置し利用している。得に、issue trackerの機能に優れているので、我々のROSーTMS開発に最適な共同作業の環境を提供している。


Git関連の参考資料

  1. Git - 簡単ガイド 猫でもわかるGit 最初の一歩 (日本語) 👍
  2. Git cheat sheet
  3. Pro GIT (English)
  4. Pro GIT (日本語) 👍
  5. Learn Git Branching! (english) 👍
  6. A successful Git branching model

Gitのインストールからクーロンまで

Install

sudo apt-get install git

Git Default Setting

git config --global user.name "Ichi Tanaka"
git config --global user.email [email protected]
git config --global --add color.ui true
git config --global --list

Git clone the ros-tms pkgs

cd ~/catkin_ws/src/
git clone ssh://[email protected]:55928/HRSG/ros_tms.git

❗ Don`t forget the SSH Keys! Read here! >> http://orion.ait.kyushu-u.ac.jp/help/ssh


GitとGitLabを使ったROS-TMSの作業の流れ

Workflow

1. Clone 又は Pull

cd ~/catkin_ws/src/
git clone ssh://[email protected]:55928/HRSG/ros_tms.git
cd ~/catkin_ws/src/ros_tms
git pull

2. Create branch with your feature

git checkout -b BRANCH_NAME

3. Write code. Commit changes

git commit -am "add xxx feature for xxxx"

4. Push your branch to GitLab

git push origin BRANCH_NAME

5. Review your code on Commits page

6. Create a merge request

7. Team lead will review code & merge it to main branch

git checkout master
git pull

Gitの使い方・よく使うコマンド

[基本動作]

リモートリポジトリの複製

git clone ユーザ名@ホスト:/リモート/リポジトリ/経路 
ex) git clone ssh://[email protected]:55928/HRSG/ros_tms.git 

状態チェック

git status

ファイルの追加

git add <ファイル名>

ファイルの削除

git rm <ファイル名>
git rm -r <フォルダ名>          フォルダ内のすべてのファイルを再帰的に削除

[確定、発行、更新]

確定

git commit -m "説明"
git commit -am "説明"                addコマンドを含む〜

発行(ローカル:arrow_right:リモート)

git push origin <ブランチ名>
ex) git push origin master
ex) git push origin issue11
ex) git push

更新 (リモート:arrow_right:ローカル),受け入れて( fetch ),マージ(merge)する。

git pull

 

[元に戻す]

ローカルの変更内容を変更前の状態(HEAD )に戻す

git checkout -- <ファイル名、あるいはフォルダ>

❗ 注意) git add 、rmなどのIndexする前に可能な措置である

削除されたファイルの表示

git ls-files -d

削除されたファイルを復元する

git ls-files -d | xargs git checkout -- 

ローカルにあるすべての変更を確定したものを断念

git fetch origin
git reset --hard origin/master

 

[ブランチ]

ブランチの作成とそのブランチにチェックアウト

git checkout -b <ブランチ名>

そのブランチにチェックアウト

git checkout <ブランチ名>
ex) git checkout master
ex) git checkout issue21

リモートのブランチの登録とソースプッシュ

git push origin <ブランチ名>

ブランチの削除(ローカル)

git branch -d <ブランチ名>

ブランチの削除(リモート)

git push origin :<ブランチ名>

 

[マージ]

マージ

git checkout master   (変更対象となるブランチに移動する)
git merge <ブランチ名>   (他のの変更内容を現在(例えばmaster)に結合)

[タグ ]

タグ付け

git tag <タグ名又はバージョン> <コミット番号>
ex) git tag v1.5.1 1b2e1d63ff

タグを共有する

git push origin <タグ名>
ex) git push origin v1.5.1
ex) git push origin --tags

タグの確認

git tag

 

[その他]

GUI画面の表示

gitk

ファイルを無視する

.gitignore

削除されているリモートブランチを削除

git remote prune origin 
Clone this wiki locally