0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Git]基本的なコマンド入門

Last updated at Posted at 2021-01-07

はじめに

結構忘れてしまうことがあるのでこちらも備忘録としてメモしていきたいと思います!!

Git

バージョンの管理システムの役割をし、コードの修正履歴を記録します。
いつどこをなぜ修正したのかの確認、複数メンバーで共同開発をする際に使用します。
シェルコマンドで操作します。

3つの場所

gitを使用する際はこの場所を考えながら操作をしていきます。

ワーキングディレクトリ
 自分が作業を行なっている場所

ステージングエリア 
 変更内容を仮登録する場所。indexともいう

リポジトリ
 実際に変更内容が記録される所

スクリーンショット 2021-01-07 12.11.05.png

もっと詳細が書いてあるのを貼っておきます。

1.3 使い始める - Gitの基本

使用したバージョン管理の機能

  • add, commit コードの変更を記録

  • log, diff 状態や変更箇所を記録

  • reset, revert 前の状態を復活

  • branch, checkout 作業に合わせて分岐

  • push, merge 作業結果を統合

リポジトリを作る

確認をしていくために実際にディレクトリを作っていきます。


1.  mkdir mysample    (作業のするディレクトリを作る)

2.  cd mysample       (移動)

3.  git init          (initでリポジトリを作るとmysampleが記録対象になる)

4.  ls -a             (確認)


 % ls -a
.       ..      .git  (隠しディレクトリができております)

状態を確認するコマンドたち

  • git status 現在のステージングやリポジトリの状態を確認できる

  • git status -s もっとシンプルに見る

  • git log コミットの履歴を確認する

  • git log --oneline

  • git log -1  直近のログだけを確認できる

  • git branch どこのブランチにいるのか確認ができる

  • ls -al

使っていく

「kiroku.txt」というファイルを作ったのでまず仮登録していきます。


git add kiroku.txt


# 「git status」 で確認するとような感じ
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   kiroku.txt

リポジトリに追加します。


git commit

そうすると「vim」 というシェルで利用できるテキストエディタが開かれます。
Gitでコミットしようとすると、コミットメッセージの入力のために、自動的に起動します。

コミットメッセージを入力します。
どんな変更をしたか、なぜ変更したのかを書いていきます。


1st commit      # ← (ここにコミットメッセージ)
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
#       new file:   kiroku.txt
#
~                                                           
~       
             # (下はまだ続いてます。)

「vim」 はコマンドモードと編集モードを切り替えて使用します。

編集モードに切り替える。

  • A 現在の行の末尾に入力する
  • a 現在のカーソル位置の右から入力する

コマンドモード

  • u 元に戻す-
  • :wq 保存して終了-
  • :q! 保存しないで終了

うーむ・・ここら辺はまた今度深掘りしましょう・・・。


無事にコミットできると
# 「git status」 で確認

On branch master
nothing to commit, working tree clean

コミットできました!!

このようなリポジトリにコミットしたひとまとまりの状態を 「スナップショット」 と言います。

複数ファイル

「.」をつけるとワーキングディレクトリの全てのファイルを指定してくれます。


git add .

# (「git status」 で見る)
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   kiroku.txt
        new file:   kiroku2.txt

仮登録とコミットを一度にやってくれるコマンドもあります。


git commit -a -m "2nd commit"
                    # ↑コミットメッセージ

  • 「-a」 
    ステージングエリアに登録済みのファイルの変更について仮登録とコミットを同時にやってくれる

  • 「-m」
     コミットメッセージを1行だけ指定できる

「差分」を見る

どのような変更が行われたのかを確認します。
このような比較情報を「差分」と言います。


git diff

最新コミットとステージングエリアを比較します。


git diff --cached

最新コミットとワーキングディレクトリを比較します。


git diff HEAD

こんな感じで出てきます。


mysample % git diff HEAD

diff --git a/kiroku2.txt b/kiroku2.txt
index 360cddf..db701bb 100644
--- a/kiroku2.txt
+++ b/kiroku2.txt    # (比較しているファイル)

@@ -1 +1,2 @@    # ファイルがどのように変更されているか @@変更前 変更後@@
-おはようございます。
\ No newline at end of file    # どのような違いなのか
+おはようございます。                # 空白であれば変更なし
+お元気ですか                     # 「-」 は削除
\ No newline at end of file     # 「+」 は追加

作業の履歴を取り消す

ステージング上の特定ファイルを一つ前の状態に戻したい時に使用します。


git reset kiroku.txt

ワーキングディレクトリのファイルを前の状態に戻します。


git checkout kiroku.txt

最新のコミットを打ち消すコマンドです。


git revert HEAD

ブランチを切る

作業内容に合わせてリポジトリを分岐する機能です。ブランチを使うと昨日の追加やバグの修正といった作業内容をリポジトリにまとめることが簡単にできます。

デフォルトでは「master」というブランチが用意されています。


ブランチを作ります。


git branch add_html

# 「git branch」で確認してみます。
  add_html
* master        # できた。

切り替えます。


git checkout add_html


* add_html
  master     # できた。

戻します。


git checkout master


add_html
* master      # 戻った。

コミットの仕方ははじめにやったものと基本同じなのでブランチを切って移動した後もやり方は同じです。 ・・・とのこと!!!!

わかりました!!!!!

ブランチをマージする

ブランチのデータをmasterブランチに統合します。


git checkout master

git merge add_html


Updating 019bd0d..2a3e430
Fast-forward
 kiroku.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

不要になりましたら
ブランチを削除します。


git branch -d add_html


Deleted branch add_html (was 2a3e430).

ちなみに
ブランチを作って、移動をもっと簡単に入力するには


git checkout -b add_html2


Switched to a new branch 'add_html2'

# 「git log」 で確認してみます。
  add_css
* add_html2
  master         # 便利

コンフリクトを解決する

同じファイルに別々の人が同じファイルを変更して統合するとコンフリクトという衝突が起きます。

ファイルを確認して、<<<<< や ===== で囲まれているところが
衝突部分なので残したいコードのみ残して消去するか、全てを変更するかします。


<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>hello git</title>
  </head>
  <body>
    <h1>見出し</h1>
<<<<<<< HEAD
    <p>ここはmasterです。</p>
=======
    <p>ここはadd_htmlです。</p>
>>>>>>> add_html
  </body>
</html>

このような感じで。残したいもの以外は消します。


<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>hello git</title>
  </head>
  <body>
    <h1>見出し</h1>                            (これを消す)
                                      <!-- <<<<<<< HEAD -->
    <p>ここはmasterです。</p>
                                      <!-- =======
                                       <p>ここはadd_htmlです。</p>
                                       >>>>>>> add_html   -->
  </body>
</html>

最後に通常通り仮登録とコミットをします。



git add index.html


git commit


プロジェクトを複製する(クローンする)

他のメンバーと共同開発しているプロジェクトに参加する方法です。


1. mkdir sample               (格納するディレクトリを作成する)

2. cd sample                   (移動)

3. git clone [共有リポジトリのファイルパス].git    (複製する)

共有した共同のリポジトリの情報を表示します。


git remote -v

修正して、仮登録とコミットしたのち、
コミットを共同リポジトリに反映させます。


git push origin master

また、プロジェクトの変更を取り込みたい場合はこのようにします。


git pull [共有リポジトリのファイルパス].git

まとめ

なんだか後半急いでダッシュな感じになってしまったので、もう少し詳しく調べてみたいと思います。

後は情報を見る時のオプションも次回は詳しくみていきたいです。

今日は終わりです!

参考

最近調べものをすると頻繁に出会うことに気付いたサイト。
見た目も素敵ですので貼っておきませう。

SMART

Gitについての色々な資料が載っている興味深いものも発見です。

Git、GitHubを教える時に使いたい資料まとめ

こちらはコマンドがたくさん載っています。

Linux基本コマンドTips

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?