コマンドラインでの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。
ファイルをリポジトリに登録するまでの流れ
この流れでコマンドを叩きます。
- add
- commit
- 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つを行います。
- fetch
- 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:トラッキングリポジトリというやつに、ダウンロードされるみたい。とりあえず中継的な人と覚えておけばいい気がする