lisz-works

プログラミングと興味を貴方に

Gitをコマンドで操作する基礎

【スポンサーリンク】

Git

コマンドラインでのgit操作について、まとめました。

最近gitに翻弄されることが多々あったので、基礎のお勉強をすべく調査!
またアプリに頼りがちだと、すぐ忘れがちなのでメモがてらに。

clone

まずはリポジトリからのcloneを行います。

>git clone <リポジトリのパス> <cloneするパス>

例えば

  • リポジトリ: \169.254.0.111\work\repository\projectX\
  • 作業フォルダ: c:\work\proj

の場合

>git clone \\169.254.0.111\work\repository\projectX\ c:\work\proj

となります。

GitHubやBitbucketのような外部サービスをリモートリポジトリに使っている場合、cloneコマンドやパスが提示されるので、そちらを使うと楽ちんです。

cloneするパスに移動している場合は、カレントを指定(.)でOK。

ファイルをリポジトリに登録するまでの流れ

この流れでコマンドを叩きます。

  1. add
  2. commit
  3. push

add

test.txtというファイルをaddする場合

>git add test.txt

のようにします。

フォルダ内の未addファイルを全てaddするなら

git add .

のようにします。

commit

addしたファイルをコミットするなら

>git commit -m "commit 1"
[master (root-commit) 11616c2] commit 1
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

とします。

「-m "message"」は、コミットログを設定します。
ログは設定する必要があるので、入力しましょう。

ログを確認。

>git log
commit 11616c26b41cd5cb901a3dc39e97929f19637bd8 (HEAD -> master)
Author: lis <xxx@mail.com>
Date:   Fri Jan 4 10:50:37 2019 +0900

    commit 1

push

pushでリモートリポジトリにアップロードするには

>git push -u origin master

のようにします。

こんな感じでログが出ます。

>git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 210 bytes | 210.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To \\169.254.0.111\work\repository\projectX\
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

ちなみに「git push -u origin master」をすると次回以降は

>git push

でpushできます。

どうやらpush先をgitの設定に覚えさせるみたい。

originとかmasterとかってなに?

gitを使っていると出てくるワード

  • origin
  • master

についてです。

origin

originは、リモートリポジトリURLの短縮名。

名称は任意でいいものの、慣習的に「origin」らしいので、俺ルールするよりは慣習に従ったほうが何かと面倒が減ると思います。

「どうしてもoriginなんて嫌だ!(謎)」という場合、

>git remote add origin <名称>

で変更ができるようです。

master

masterは、デフォルトのブランチ名。
SVNだとtrunkにあたるらしい。

「masterブランチを、リモートリポジトリ(origin)にアップロードしたいな!」が

>git push -u origin master

となるようです。

リポジトリから更新するまでの流れ

この2つを行います。

  1. fetch
  2. merge

pullで一気に行えますが、なにやら面倒になるケースがあるようなのでfetch→mergeで運用して方が良さそうです。

fetch

リモートからダウンロードを行うやつ。
ダウンロードするだけで、ローカルリポジトリ(フォルダ内のファイル)には反映はされない。*1

>git fetch

merge

対象リポジトリとローカルリポジトリをマージするやつ。
fetchしておいたやつをマージすることで、ダウンロードした版を反映できます。

>git merge origin/master

status

特に何もないときは

>git status
On branch master
Your branch is up to date with 'origin/master'.

のように表示されます。

未commitのファイルについて表示されます。

例えば、新しいファイル作成すると「addされていないファイル」として表示されます。

>git status
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test9.txt

nothing added to commit but untracked files present (use "git add" to track)

コレをaddすると、add済みのファイルとして表示されます。

>git add test9.txt
>git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   test9.txt

更にコミットすると、statusに表示されなくなります。

>git commit -m "commit 9"
[master 6cc82ec] commit 9
 1 file changed, 1 insertion(+)
 create mode 100644 test9.txt

>git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

log

ログ表示を行うとこのように表示されます。
このログの場合、コミットまで行っている状態です。

>git log
commit 6cc82ec60957c20b3a4c14f36f3728263954ec9e (HEAD -> master)
Author: lis <xxx@mail.com>
Date:   Fri Jan 4 12:20:17 2019 +0900

    commit 9

commit 9f807309dd3b0e4a9cb90e99cce0bceec26dbabf (origin/master)
Author: lis <xxx@mail.com>
Date:   Fri Jan 4 12:10:18 2019 +0900

    commit 8

commit 2c87f1c3c5088895a9df16e3ac86e47b2cc2913f
Author: lis <xxx@mail.com>
Date:   Fri Jan 4 12:00:12 2019 +0900

    commit 7

ログは昇順で表示されます。

「commit ~」の英数字の羅列のあとに付いている、()書きのものは

  • (HEAD -> master): commitした版
  • (origin/master): リモートリポジトリの版

という感じみたい。

pushをすると

>git log
commit 6cc82ec60957c20b3a4c14f36f3728263954ec9e (HEAD -> master, origin/master)
Author: lis <xxx@mail.com>
Date:   Fri Jan 4 13:08:17 2019 +0900

    commit 9

commit 9f807309dd3b0e4a9cb90e99cce0bceec26dbabf
Author: lis <xxx@mail.com>
Date:   Fri Jan 4 11:57:18 2019 +0900

    commit 8

となる。

なので、(HEAD -> master)だけが新しい方についている場合、

「作業してるブランチで更新したものあったわ!まだリモートに反映してないやつ!」

というのが確認できます。

参考

コチラを参考にしました。ありがとうございました!

https://eng-entrance.com/git-clone https://qiita.com/ironsand/items/6c301fef730d53f35bc3 https://qiita.com/KosukeQiita/items/cf39d2922b77ac93f51d http://dqn.sakusakutto.jp/2011/10/git_push_origin_master.html

あとがき

ということでGitのコマンドについてでした!

実のところGitの運用

*1:トラッキングリポジトリというやつに、ダウンロードされるみたい。とりあえず中継的な人と覚えておけばいい気がする