質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

2回答

1618閲覧

git hub 追跡という表現と削除のコマンドの使い方

blossan

総合スコア154

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2016/10/27 00:37

御世話になります。
git hub 初心者になります。
新しく git を使ったプロジェクトを始めたのですが、開発にあたり、削除コマンドを調べることになりました。
失敗しても元通りできるので、開発しやすいと考えました。

しかし、git で削除というワードを検索すると、

git

1rm 2reset 3clean 4revert

というコマンドと「追跡対象」という概念が出てきました。
「追跡対象」の扱いで、上記のコマンドの使い分けがされていると推測しています。

しかし、「追跡対象」という日本語が、イメージできず、上記のコマンドの使い分けが出来ずに困っています。
私は、「追跡対象」とは、変更した時にその変更を覚えておく対象だと考えています。

単純な解釈でわかりやすく説明していただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

「追跡対象」とは

ここで言う「追跡対象」とは、わかりやすく言えばバージョン管理の対象としてGitに登録してあるファイルのことです。

変更した時にその変更を覚えておく対象

という認識で問題無いと思われますが、正確には「変更した時」ではなく「コミットした時」ですね。

なお、「追跡」という言葉は「tracking」を直訳した言葉であり、「追跡ブランチ」のようにブランチに対して使われた場合「あるブランチを追いかけているブランチ」という意味になります(「masterorigin/masterを追跡している」「origin/masterはリモートoriginmasterブランチを追跡している」)。

各コマンドの説明

rm

指定したファイルをバージョン管理の対象から外すコマンドです。ファイルは削除され、コミットすると以後そのファイルはGitの管理対象から外されます。
おそらくGitにおいて「削除」と言ったらこれを指すのではないでしょうか。

reset

今チェックアウトしているブランチが指すコミットを強制的に変更したり、indexの内容をチェックアウトしているコミットの内容に戻したり、作業コピーの内容をindexの内容に戻したりするコマンドです。
「たり」が多いですが、実際resetコマンドはいくつかの機能を複合したものであり、コマンドの実行方法や指定したオプションによって使われる機能が変わってきます。
もし「index」や「staging」の概念をまだ知らないのであれば、きちんと知っておいてください。他のバージョン管理システムには無いGit特有の概念です。

例えば単にgit resetすると、indexの内容のみが今チェックアウトしているコミットの内容に戻り、作業コピーの内容は変更されません。間違えてaddrmしてしまった時などにどうぞ。

--hardオプションを付けてgit reset --hardすると、上に加えて作業コピーの内容も戻され、作業コピーの内容が今いるコミットの内容に戻ります。コミットしていない変更をすべてリセットしたいときにどうぞ。

更にコミットを指定してgit reset --hard <commit>とすると、今いるブランチが指定したコミットへ強制的に移動され、さらにindex・作業コピーの内容もそれに合うように書き換えられます。origin/*以前でやっちゃダメよ。

他にも色々オプションがあるのでご自分で調べてください。

clean

作業ディレクトリにあるバージョン管理外のファイルをお掃除するコマンドです。開発中にできたキャッシュ等のゴミファイルを削除してくれます。ただしバージョン管理対象外のファイルをすべて削除してしまうので、その中に必要なファイルが含まれないか注意してください。

従って、git reset --hard && git clean -xdfすると、作業ディレクトリの内容がチェックアウトしているコミットの内容に完全に一致します。とにかく全部リセットしたいときに使えます。

revert

指定したコミットの逆コミットを作るコマンドです(「逆コミット」は今勝手に考えた言葉です)。上の3つとは違い、新たにコミットが作られます。

以前行ったコミットを取り消したいと思ったとき、そのコミットをrevertすると、そのコミットの変更を逆にしたコミットを作成してくれます。失われる歴史が無いので安心して使えます。ただしもちろん、そのコミットと同じ行を何度か編集していた場合は競合が起こります。

投稿2016/10/27 06:50

編集2016/10/27 07:02
Bakudankun

総合スコア173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

blossan

2016/10/27 07:07

分かりやすい回答をありがとうございます。
guest

0

複数のサイトを確認されることをお勧めします。
「git で削除」で検索したらちゃんと解説されているサイトが見つかります。

投稿2016/10/27 02:13

matsu

総合スコア702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問