20191101のGitに関する記事は8件です。

gitのコマンドメモ

gitをローカルで使う場合、よく使うコマンドについてのメモ。
push,pullなどのリモートリポジトリとの連携は後日書こうと思います。
gitのインストールは完了している想定です。

※筆者はgitにあまり慣れていないため、誤った認識、記載があるかもしれません。ご注意ください。

1.リポジトリ作成

作業ディレクトリ下に移動してgit initを実行。
これでgitリポジトリが作られる。ls -aで確認してやると、.gitができている。

$ git init
$ ls -a
.  ..  .git

2.ディレクトリ更新

適当な新しいファイルa.txtを作成してみた後にgit statusで状態を確認してみる。
現在のリポジトリでは追跡できていないファイルが表示される。

$ git status
On branch master

Initial commit

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

        a.txt

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

git addで、更新情報を保存してやる。--allオプションは、変更されたファイル一式が更新される。

$ git add --all

3.コミット

リポジトリにコミット。-m以下はメッセージ。

$ git commit -m "first commit"
[master (root-commit) d80db16] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt

git statusで作業ディレクトリの更新を確認して、nothing to commitになっていれば、無事完了

$ git status
On branch master
nothing to commit, working directory clean

4.ブランチの作成

各自開発をしていく時には、masterからブランチを切ってやり、作業完了後にmasterに統合してやる。
今はブランチがmasterのみなので、作業用のブランチを作成してやる。

$ git branch mywork
$ git branch
* master
  mywork

新しいブランチmyworkへ移動して、切り替わっていることを確認。

$ git checkout mywork
Switched to branch 'mywork'
$ git branch
  master
* mywork

もう一度新しいファイルb.txtを作って、コミットしてやる。

$ git add --all
$ git commit -m "b.txtを追加"
[mywork 0f05c45] b.txtを追加
 1 file changed, 1 insertion(+)
 create mode 100644 b.txt

myworkブランチでのgitのログを見てみると、2回コミットした履歴が確認できる。

$ git log -p
commit 0f05c45536fc6120da0a2c6c05d5e5e17946e817
Author: user
Date:   Fri Nov 1 06:39:51 2019 +0000

    b.txtを追加

diff --git a/a.txt b/b.txt
new file mode 100644
index 0000000..3e75765
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+bbbbb

commit d80db16e3263fc9b22978bafdfe790425ef17306
Author: user
Date:   Fri Nov 1 06:34:58 2019 +0000

    first commit

diff --git a/a.txt b/a.txt
new file mode 100644
index 0000000..2d832d9
--- /dev/null
+++ b/a.txt
@@ -0,0 +1 @@
+aaaaa

5ブランチのマージ

git mergeで、さっき新しく更新したmyworkをmasterに統合する。

$ git merge mywork
Updating d80db16..0f05c45
Fast-forward
 b.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 b.txt

6.過去の状態でブランチを作成する

今のディレクトリ内ではa.txt,b.txtの2ファイルが存在する。

$ ls -a
.  ..  .git  a.txt  b.txt

a.txtを作る前のfirst commitのタイミングに戻って作業したい時は、
git logで記載されているcommit以降のidを入力してgit checkout -bを行うと、過去の状態でのブランチを作成することができる。

$ git checkout mywork
Switched to branch 'mywork'
$ git log 
commit 0f05c45536fc6120da0a2c6c05d5e5e17946e817
Author: user
Date:   Fri Nov 1 06:39:51 2019 +0000

    b.txtを追加

commit d80db16e3263fc9b22978bafdfe790425ef17306
Author: user
Date:   Fri Nov 1 06:34:58 2019 +0000

    first commit
$ git checkout -b mywork_first  d80db16e3263fc9b22978bafdfe790425ef17306
Switched to a new branch 'mywork_first'

新しいブランチができていて、git logfirst commit時に戻っている。
ディレクトリ内もb.txtができる前の状態に戻った。

$ git branch
  master
  mywork
* mywork_first
$ git log
commit d80db16e3263fc9b22978bafdfe790425ef17306
Author: user
Date:   Fri Nov 1 06:34:58 2019 +0000

    first commit
$ ls -a
.  ..  .git  a.txt
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHubへのpushまでの流れ



githubへpushを勉強したのでアウトプットします。

前提

開発環境 AWScloud9

やること

  • githubにアカウント登録(飛ばす)
  • リモートリポジトリを作成(ここも飛ばす)
  • ssh公開鍵を登録
  • pushしたいディレクトリをgit管理下に置く
  • pushするディレクトリをcommitする
  • リモートリポジトリの登録
  • githubへpushする

ssh公開鍵の登録

githubに登録する用の秘密鍵/公開鍵のペアを作成する。

$ cd~/.ssh
$ ssh-keygen
#色々と入力が求められるが空欄でEnterでも可能
$ cat ~/.ssh/id_rsa.pub

作成した公開鍵の内容を表示し、コピペしてgithubに登録。


pushしたいディレクトリをgit管理下に置く

githubにpushしたいディレクトリに移動して下のコマンドを実行するとディレクトリをgit管理下に置くことができる。

$git init


pushするディレクトリをcommitする

#このコマンドで対象をステージングエリアへ(git addの後に続く「.(ピリオド)」は、今のディレクトリ配下全てのファイルという意味)
$git add . 

#このコマンドでローカルリポジトリへコミットする。 -mの後はコミットメッセージ
$git commit -m "コミットメッセージ"



リモートリポジトリを登録する

#以下のコードでリモートリポジトリを登録する
$git remote add origin git@github.com:アカウント名/リポジトリ名.git

※間違ったリモートリポジトリを登録してしまった場合

#以下のコマンドで変更可能
$git remote set-url <リポジトリの名前> <新しいリポジトリのURL>

#以下のコマンドでリモートリポジトリのURLを確認できる
$ git remote -v


githubにpushする

#以下のコマンドでpushできる
$git push -u origin master



参考
http://tetsuyai.hatenablog.com/entry/20110912/1315798082

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git command

●gitをダウンロードした後に、下記設定をする
git config --global user.name [username]
git config --global user.email [mailaddress]

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●ローカルリポジトリには三つのエリアがある
・ワークツリー
↓add
・ステージ
↓commit
・ローカルリポジトリ
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●ローカルリポジトリの新規作成
cd [path]
git init

●リモートリポジトリからローカルに落とす
例えば
git clone "https://github.com/atom/atom"
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●ステージに追加する(=次回のコミット対象に追加する)
git add [file name]
git add [directory name]

全てのファイル変更をステージする
git add .

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
コミットする
git commit
・オプション
[-m]editorを立ち上げず、直接メッセージ付きで変更する
[-v]変更箇所を表示させる

コメント追記のルール
一行目:変更箇所
三行目:変更の目的

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●git status
・ワークツリーからステージ間の変更(ファイル新規、変更、削除)を表示させる
・ステージからローカルリポジトリ間の変更を表示させる
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●git diff(git addとgit commitする前にやる)
・git addする前の変更差分(ファイル変更、削除)(ワークツリーとステージの間)
git diff
git diff [ファイル名]
※新規のファイルは比較対象外

・git addした後の変更差分(ステージとローカルリポジトリの間)
git diff --staged
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
リポジトリにコミットした履歴を表示させる
●git log

・オプション
[--oneline] 一行だけを表示させる
[-n 3] 最新の3世代を表示させる
[-p] 変更詳細を表示させる
[ファイル名] 指定のファイルだけを表示させる

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●管理したくないファイルをgitから除外する
.gitignore というファイルで管理する(直接ファイル名を指定)
windowsでは「.gitignore」を作れないので、「.gitignore.」を作る
※コミットするまで除外できる

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●git rm
コミットしたファイルを管理から外す
・ファイルも一緒に削除する
git rm [file name]
git rm -r [directory name]
・ファイルを残し、管理だけを外すとき
git rm --cached [file name]
あと、.gitignoreに追加する必要がある

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●git mv
・改名
git mv [旧ファイル名] [新ファイル名]

・移動
git mv [ファイル名] [パス]
相対パスも絶対パスもOK

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●コマンドに別名をつける
git config --global alias.[別名] [コマンド名]
例えば:
git config --global alias.ci commit

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●ワークツリーの変更を取り消し
git checkout [--file name] ステージの状態に戻す

●ステージした変更を取り消す
git reset HEAD [--file name] コミットしたブランチの状態に戻す

●直前のコミットをやり直す(ローカルリポジトリ限定)
ファイル変更、ステージした後に、下記コマンドを実行
git commit --amend

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●プッシュ
まず、リモートリポジトリ新規作成
git remote add origin https://github.com/xiewenna123/intro_repo.git
※origin:リモートリポジトリ名、自分で定義する
 https://github.com/xiewenna123/intro_repo.git リポジトリ

あと、リモートリポジトリのマスタにプッシュ
git push origin master
もし、branch_aにプッシュする場合:
git push origin branch_a
git push [リポジトリ名][ブランチ名]

●git remote
リモート名一覧を表示する
●git remote -v
リモートリポジトリも表示したい時

●git remote show [リポジトリ名]
より詳細のリポジトリ情報を取得できる

●git remote rename [旧リポジトリ名] [新リポジトリ名]

●git remote rm [リポジトリ名]

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
リモートリポジトリからローカルに情報を反映させたい方法二つある
●フェッチする
①git fetch [リポジトリ名] リモートリポジトリの情報をダウンロードする
 
②git branch -a ブランチ名リストを表示
 
③git checkout [branch name] ブランチを切り替える(このステップはやらなくてもいい)
 
④git merge [リポジトリ名]/[ブランチ名] 指定したブランチと現在にいるブランチと統合させる

●プルする(上記の①+④と同じ意味)
git pull [リポジトリ名][ブランチ名]

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●github workflow
①ローカルリポジトリに新しいブランチを作成し、チェックアウトする。
git checkout -b new_branch
②資源を変更し、コミットする
git add [file_name]
git commit -v
③変更をプッシュする
git push [ローカルリポジトリ名] new_branch
④github画面でpull requestを新規し、レビューしてもらう
⑤github画面で「merge pull request」ボタンを押し、新ブランチを削除する
⑥ローカルの跡片付け処理をする
git checkout master
git pull origin master
git branch -d new_branch

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●git tag
すぐ切り戻しできるようにに、重要なコミットの後に付く(よくリリース時に使う)
git tag -a "tag name" -m "comment message"

タグ一覧を表示させる:
git tag

タグの詳細を表示させる
git show [tag_name]
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●stash(一時退避する)
・作成(現在ワークツリーとステージにある変更ファイルを一時避難する、つまり、変更を隠すこと)
git stash

・一覧
git stash list

・復元
git stash apply

ステージの内容も復元する
git stash apply --index

特定のstashを復元する
git stash apply [stash name]

・削除
git stash drop

特定のstashを削除する
git stash delete [stash name]

全部削除
git stash clear

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

初めてのGit

今年(2019年)の4月に中途入社した、ペーペー社員です。

初めてちゃんとした?プロジェクトに入り、Gitを触る機会が増えた為、アプトプット。

中途とはいえ、業界未経験の私には、Gitがなんなのかさっぱり・・・


今回は初投稿という事で、Markdown記法の勉強も兼ねて、Gitの基本的用語から。

※SourceTree(Version:3.1.1)を使用

ローカルリポジトリ

自分のマシン上にあるリポジトリ

リモートリポジトリ

ネットワーク上にあるリポジトリ

Commit(コミット)

ファイルやデュレクトリの変更をローカルリポジトリ内で変更を行う事
commit.png

Push(プッシュ)

ローカルリポジトリの修正内容をリモートリポジトリに反映させる事
push.png

Pull(プル)

リモートリポジトリの内容をローカルリポジトリに取り込む事
pull.png

Fetch(フェッチ)

リモートリポジトリの最新データを取得する事
※Pullと違ってローカルリポジトリに取り込んだりしない
fetch.png

Stash(スタッシュ)

作業中の変更を一時退避させる事
※差し込み作業が入った時に、現時点ではCommitをしたくない時に使用
stash.png

Cherry-pick(チェリーピック)

特定のCommitした内容だけをピックアップして取り込む事(複数OK)
cherry_pick.png

Conflict(コンフリクト)

同じファイルに同じ箇所の変更が同時に起こる事

// コンフリクトの見方
<<<<<< HEAD
自分の変更内容
=====
コンフリクトが起きているブランチ
master >>>>>>

<<<<<< HEAD
private func hogeMethod() {
   print("hoge")
}
=====
private func fugaMethod() {
   print("fuga")
}
master >>>>>>

どちらが正しいのか修正する必要がある



基本的な用語と意味を理解しておくと、操作しやすくなります。

学んだ事や理解したことがどんどん蓄積されていくので、おいおい投稿していこうと思います!

では、また!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Githubにpushしたときmasterがなかった話

概要


git init するときに気をつけないと、Githubにpushした際おかしなことになるよ、というお話。

詳細

sam init するときの通常手順

$ mkdir sam_sample && cd sam_sample 
$ sam init --runtime ruby2.5


この1行目のコマンドで一つ目のディレクトリを作り、2行目のコマンドでsam-appのディレクトリを作ります。

ここで、 git init するときに気をつけたいのが、sam-app ディレクトリ内で git init すること!


sam-app のなかでしないと、Githubにプッシュしたときにmasterが表示されないというおかしなことになります。。。
誰も同じことはしないと思いますが、備忘録として!

それでもやっちまったよ!っていう方はこちら↓


① まずはリポジトリの中身を消去します。
② 先ほどgit initしたディレクトリ内で、このコマンドを打ちましょう

$ rm -rf .git

sam-app (または名前を変更していればそのディレクトリ内)に入り、再度git init !

これで、再度Githubにpushしましょう!
今度はうまくいくはずです!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gitでよく使うコマンド個人的まとめ

個人的にGitで割と使うコマンドをまとめました.

Gitにあげるときに最初にやること

Gitにpushしたいファイルをおいているディレクトリに移動し,以下のコマンドを順に実行

git remote add origin (リポジトリのURL)
git push --set-upstream origin master

<補足>
push:ローカルで行なった変更を、リモートに送り込む
originはURLの短縮名で、慣習的に"origin"が使われることが多い
新規ブランチ作成の儀

rgnarnq2.jpg

Git初心者の頃(今もですが…笑)はよくこんな感じになりました…
エラーなしで通ったのは結局上にまとめている2行だけなのが分かると思います.
(一部個人情報の関係で塗りつぶしていて見にくいですが)

リモートでの変更をローカルで受け取る場合

以下のコマンドを順に実行

$ git fetch
$ git pull

注)fetchとpullの違い
fetch -> すべての変更の取得:○、 カレントブランチの変更の取得: ○、 マージ: ×
pull -> すべての変更の取得:×、 変更の取得: ○、 マージ: ○

ローカルでの変更をリモートに送る場合

以下のコマンドを順に実行

$ git add .
$ git commit -m "ここに変更点などを書く"
$ git push

注) "."オプションは,対象がすべてのファイルだという意味

一度pushしたあとにGitHubのリポジトリ名の変更またはローカルのファイルの場所や名前を変更する

GitHubのリポジトリ名を変更した場合

GitHub上で名前変更後,コマンドプロンプトを起動,Gitにpushしたファイルをおいているディレクトリに移動して次のコマンドを実行

$ git remote set-url origin (新しいリポジトリのURL)

ローカルのファイルの場所や名前を変更した場合

Gitにpushしたファイルをおいているディレクトリ(変更後の場所)に移動して次のコマンドを実行

$ git remote set-url origin (リポジトリのURL)

Gitのローカルでの変更を破棄する場合

以下のコマンドを順に実行

$ git reset HEAD
$ git checkout .
$ git clean -fd

参考サイト
【Git】リポジトリ内の不要なファイルを削除して元の状態に戻す方法(git clean) - メモ魔のめもまみれBlog(閲覧日:2019年11月1日)
http://memomamire.hatenablog.com/entry/2016/01/27/210607

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git checkout/switch しようとして、error: cannot stat 'xx/yy/zz': Permission denied エラーが出た時の対処法

ある日…

Gitを使ってブランチAで開発をしていて、他の人が作業しているブランチBに移動し、確認だけして自分のブランチAに戻ろうとしました。

ブランチBでの確認作業を終え、

git switch ブランチA

とした私は

error: cannot stat 'xx/yy/zz': Permission denied

というエラーが出てきてブランチAに戻れなくなってしまいました!

ブランチの移動に伴う、ファイルの変更・削除ができないときにこのエラーが出るようです。

解決方法

'xx/yy/zz'のディレクトリ階層のファイルをテキストエディタなどで開いていれば、それを全て閉じましょう。
再度 checkout / switch でブランチ移動できるはずです。

私は体験していませんが、

error: cannot stat 'xx/yy/zz': Protocol error

の場合でも、同様の対処方法で解決できそうです。

参考にしたサイト

https://codeday.me/jp/qa/20190713/1250687.html
https://teratail.com/questions/60939
https://codeday.me/jp/qa/20190429/732351.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

mac Github .DS_Storeを登録しないようにする

目的

  • macで自動生成されるファイル.DS_Storeをgithubのリポジトリの管理から外す方法を記載する。
  • 一回の設定で全てのリポジトリで.DS_Storeを管理から外す。

実施詳細

  1. 下記コマンドを実行してHomeディレクトリに移動する。

    $ cd
    
  2. 下記コマンドを実行して.gitignore_globalファイルを作成する。

    $ vi touch ~/.gitignore_global
    
  3. 開いたtouch ~/.gitignore_globalファイルに下記の内容を記載して保存する。

    .DS_Store
    
  4. 下記コマンドを実行して設定を反映させる

    $ git config --global core.excludesfile ~/.gitignore_global
    
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む