Git / Subversion用語コマンド比較

by codechord. 0 Comments

  • このエントリーをはてなブックマークに追加
  • このエントリーをはてなブックマークに追加

Github使い出したのはいいけど、Git自体の用語があんまりわかってなかったので、調べてみた。
せっかくなので、書き記します。

GitとSubversionの違いは

そもそもリポジトリとは、更新履歴が保存できる特殊な仕組みのディレクトリのようなもの。
SVNは単一、Gitは分散。(分散型はGitの他にMercurialやSVKでも使われている)

  1. Subversionの場合はリポジトリは1つ。各々が1つのリポジトリに対して更新。ローカルには特定バージョンが、ワーキングコピーとしてファイルが保存される。
  2. Gitの場合はリポジトリが分散。各自が持てる。(作業ディレクトリそのものが、ローカルリポジトリになる。)
  3. Gitの場合は、分散型なのでメインとなるマスタリポジトリが消滅しても安心。
  4. SVNだと、各フォルダに隠しフォルダ「.svn」が作成されてしまう。うっとおしい。
    Gitの場合は、親フォルダにのみ隠しフォルダ「.git」が作成される。
  5. SVNでできていた連番のリビジョン番号での管理がGitではできなくなる
  6. Gitはコミットはローカルリポジトリに対してだからスピーディ。

コマンド比較表

自分なりにまとめました。間違ってるかもしれません。
(Subversionのコマンドは空欄が多いですが、GUIのツールを普段使ってたからコマンドを知らんのです。。。)

Git Subversion
リポジトリを作る git init –bare svnadmin create
ローカルにもってくる git clone 〜〜〜〜
(SVNと違い、ローカルにリモートリポジトリの複製をつくる)
checkout
ローカルリポジトリ内でコピー
(ブランチを作る)
git branch 新しいブランチ名 copy
ローカルリポジトリのブランチを調べる git branch
ブランチを切り替える git checkout 切り替え先のブランチ名
(SVNのcheckoutとは意味が違うので注意)
switch
ブランチをマージする git merge マージしたいブランチ名
(メインブランチにて実行する)
コミットできる状態にする git add ファイル名
(commitにaオプションを付けると、addしなくてよい
git commit -am “コメント”」)
add
addを取り消す git rm –cached ファイル名
コミットする git commit -m “コメント”
(ローカルリポジトリにコミットする)
commit
(リモートリポジトリにコミットする)
直前のコミットをやりなおす git commit –amend
(コメントミスや、add忘れ等のために使用)
コミットを取り消す git reset –hard
(更新ファイルも元に戻す)
git reset –soft HEAD^
(更新ファイルはそのまま。
「HEAD^」は直前のコミットの事)
ローカルリポジトリの変更を
リモートリポジトリに反映
git push
(リポジトリ間の同期のようなもの?)
commit
リモートリポジトリの更新をローカルに反映 git pull update
最新コミットとして、マージする? rebase
コミットログをみる git log
変更ファイルをチェック git status
diffする git diff ファイル名

コミットまでの一連の流れ

cd ~/リポジトリ
echo "test" > test.txt
git add test.txt
git commit -m "テストファイルをコミットします"

ブランチのマージテストしてみたが、コンフリクトが生じた時は、修正メッセージが現れて自動的に追記された。
が、コンフリクト時の上手な解消方は未だわからない。

それ以外のGitならではのメモ

リポジトリを保管するディレクトリ名は「~/hogehoge.git」という具合に、“拡張子を「.git」”とするのが風習がある。

参考にさせていただいたサイト


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>