この記事は3年以上前に書かれた記事で内容が古い可能性があります
Gitの基本操作
Gitの基本についてまとめ
前提
- なるべくCLIでの操作(SourceTreeとか使わない)
- GitHubを使う
https://github.com
基本
リポジトリを作成する
GitHubの画面でリポジトリ作成
※GitHub使うにはアカウント登録が必要
作成すると以下のような画面になるので、インストラクションの通り操作すれば良いのですが、
一応以下より詳細メモ、CLIで操作します
操作概要
これから操作する概要は以下の通り、右のWorkSpaceでの変更を左のRemote Repositoryに送って行くイメージ
なぜこんなに多段になっているかというと、変更点などを後々管理しやすくするためで、特にチーム開発などをすると利点を理解できるらしい
gitを始める
% git init Initialized empty Git repository in /Users/yoshi/git_test/.git/
試しにREADME.mdファイルを作ってみる
% echo "# git_test" >> README.md
git addとgit commit
% git add README.md % git commit -m "first commit" [master (root-commit) c46258e] first commit 1 file changed, 1 insertion(+) create mode 100644 README.md
リモートブランチの追加とgit push
% git remote add origin https://github.com/yoshi-island/git_test.git % git push -u origin master Counting objects: 3, done. Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/yoshi-island/git_test.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
確認
これで晴れてリポジトリが作成できた
参考:Commitまでの作業で確認するためのコマンド
ステージング (git add)状況を確認する時には「git status」、変更差分を確認したい時には「git diff」を使う
git add前のステージング状況確認
% git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md no changes added to commit (use "git add" and/or "git commit -a")
git add前の変更差分確認
% git diff diff --git a/README.md b/README.md index 1e523a5..2ccc2e5 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ # git_test +# change1
git addとステータス確認
% git add README.md % 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) modified: README.md
Git Clone
次は、もともとあるリモートリポジトリをローカルにダウンロードする作業
GitHubのリポジトリ画面からURLをコピー
コピーしたURLをgit cloneに続けて入力すればローカルにリモートリポジトリをダウンロードすることができる
% git clone https://github.com/yoshi-island/git_test.git Cloning into 'git_test'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done.
% cd git_test % cat README.md # git_test
Commitを消したい
Commitをしてしまったが、消したい時
例えば、こんな感じで先ほどのREADMEファイルに一行ずつ追加→Commitを繰り返したとする
% cat README.md # git_test # change1 # change2 # change3 # change4 # change5
commit履歴は「git log」で確認できる
% git log commit bdcc9032a31e1f7cfe902cb4e330fadeea64f35c (HEAD -> master) Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:05:15 2018 +0900 change5 commit 4e59834f5f47a4b626affc0a2210eed1856f94cf Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:05:02 2018 +0900 change4 commit 3d3bb86234045bc3bc7b360cf67ccbea6c9c2821 Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:04:39 2018 +0900 change3 commit a4fa11fa778421a6fe27a76652dce19aa4994fec Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:04:26 2018 +0900 change2 commit f560b32cde86bede64e14c7220c20ab3f055d118 Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:03:38 2018 +0900 change1 commit c46258e50e103b6b8bd0256a98f8f2a6ff74fcfb (origin/master, origin/HEAD) Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 14:52:26 2018 +0900 first commit
change3に戻したいとして、一旦Commit IDを使って差分を確認する
% git diff bdcc9032a31e1f7cfe902cb4e330fadeea64f35c 3d3bb86234045bc3bc7b360cf67ccbea6c9c2821 diff --git a/README.md b/README.md index a18fdf7..a57677a 100644 --- a/README.md +++ b/README.md @@ -2,5 +2,3 @@ # change1 # change2 # change3 -# change4 -# change5
よければ戻したいCommit IDを指定して戻す
直前ならHEAD^とかで戻せるが、自分的にはIDをしっかり指定した方が良いと思っている
% git reset --soft 3d3bb86234045bc3bc7b360cf67ccbea6c9c2821
logを確認すると戻っている
% git log commit 3d3bb86234045bc3bc7b360cf67ccbea6c9c2821 (HEAD -> master) Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:04:39 2018 +0900 change3 commit a4fa11fa778421a6fe27a76652dce19aa4994fec Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:04:26 2018 +0900 change2 commit f560b32cde86bede64e14c7220c20ab3f055d118 Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 15:03:38 2018 +0900 change1 commit c46258e50e103b6b8bd0256a98f8f2a6ff74fcfb (origin/master, origin/HEAD) Author: yoshiisland <yoshi@yoshiisland.com> Date: Sun Aug 5 14:52:26 2018 +0900 first commit
addを消したい
addを消すのはcommitを消すより簡単で「git reset」だけ
% git status On branch master Your branch is ahead of 'origin/master' by 3 commits. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: README.md % % git reset Unstaged changes after reset: M README.md % % git status On branch master Your branch is ahead of 'origin/master' by 3 commits. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md no changes added to commit (use "git add" and/or "git commit -a")
今回はここまで。
続きはこちら
Gitの基本操作_その2