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

【Git】ローカルリポジトリかどうか見分けるには

1. ローカルで「隠しファイルを表示」の設定にする(Windowsの場合、エクスプローラー左上の「表示」→「オプション」→「表示」→「詳細設定」から設定できる)。

2. 「.git」が見えていれば、それはリポジトリです。
リポジトリ見分け.png

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

git diffコマンドは何をしているのか?便利なオプションを含めたまとめ

git diffコマンドは何をしているのか?便利なオプション含む

gitコマンドの中でもよく使われる、git diffについてのまとめ。

diffはdifferenceの略で、その名の通り違い(差分)を表示するコマンド。

引数の有無や何を指定するかで、比較する対象が変わるので注意が必要。

自分が何を比較した差分を見ているのかを理解しておく必要がある。

目次

  1. ステージ(インデックス) vs 作業ツリー
  2. 指定コミット vs 作業ツリー
  3. 指定コミット vs ステージ(インデックス)
  4. 比較元コミット vs 比較先コミット
  5. 指定ブランチ vs 作業ツリー
  6. 指定ブランチ vs 指定ブランチ(リモートブランチも可)
  7. 指定ブランチ vs 指定ブランチの共通先祖
  8. 「diff A B」と「diff A..B」は同じ
  9. 「..」と「...」の違い
  10. git diffの便利なオプション
    1. 変更のあるファイル名のみ表示(--name-only)
    2. 2つ以上の連続するスペースを無視(-b)
    3. スペースを無視(-w)
  11. diffで表示される内容の詳細
    1. diff --git a/index.html b/index.html
    2. index 60f3b81..71b41cf 100644
    3. --- a/index.html
    4. +++ b/index.html
    5. @@ -7,5 +7,6 @@


(参考)ワークツリーとステージの位置
リモートレポジトリ
  ↑ push
ローカルレポジトリ
   ↑ commit
ステージ(インデックス)
   ↑ add
作業ツリー(ワークツリー)


1. ステージ(インデックス) vs 作業ツリー

引数を指定しない場合、ステージ(インデックス)と作業ツリーの内容の差分を表示する。

  • git addする前のファイルの変更内容を表示
  • git add後したあとは、変化なしとみなされる



▼index.htmlにh2タグを追加した場合
ファイルの変更のみで、git addは未実施の状態。

$ git diff

diff --git a/index.html b/index.html
index 60f3b81..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -7,5 +7,6 @@
 </head>
 <body>
        <h1>add h1</h1>
+       <h2>add h2</h2>
 </body>
 </html>

各行の内容を見ていく。

diffで表示される内容の詳細

1行目

diff --git a/index.html b/index.html

比較元ファイルa/index.htmlと、比較対象ファイルb/index.htmlをdiffに渡している。

index.htmlという元のファイルに変化があった場合、変更前後のファイルをa/とb/を自動でつけて区別できるようにしている。

「--git」は冒頭の「diff」がgitコマンドであることを示している。

2行目

index 60f3b81..71b41cf 100644

・60f3b81と71b41cd
ファイルのインデックス(ハッシュ値)を表す。コミットのハッシュ値ではない

「比較元のファイルのハッシュ値..比較対象のファイルのハッシュ値」

「git show 60f3b81」コマンドでファイルの中身が見れる。

$ git show 60f3b81

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
        <h1>add h1</h1>
</body>
</html>

・100644はファイルのアクセス権限
100644の「644は rw-r--r--」の意味。

100644の他に、100755というモードもよく見られる。「755はrwxr-xr-x」

この2行目は特に使う情報ではない。


3行目

--- a/index.html

下部に表示される変更内容で、比較元(変更前)のファイルで変化があった箇所を「-」で表すという意味。

4行目

+++ b/index.html

下部に表示される変更内容で、比較先(変更後)のファイルで変化があった箇所を「+」で表すという意味。

5行目

@@ -7,5 +7,6 @@

この下に表示しているコードが、比較元と比較先のファイルのどの行に当たるかを示している。

「-」:比較元のファイル(--- a/index.html = 60f3b81)
「+」:比較対象のファイル(+++ b/index.html = 71b41cf)「x,y」:ファイルのx行目から、y行分を表示
 ┗ 「7,5」:7行目から5行分 (7~11行)を表示

▼元ファイル(a/index.html)

a/index.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4   <meta charset="UTF-8">
5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
6   <title>Document</title>
7 </head>
8 <body>
9   <h1>add h1</h1>  
10 </body>
11 </html>


6行目

 </head>
 <body>
        <h1>add h1</h1>
+       <h2>add h2</h2>
 </body>
 </html>

ファイルの変更点を表示。
「+」:追加された内容
「-」:削除された内容

現在作業中のコミットとワークツリーを比較すると、index.htmlファイルにh2タグが新たに追加されていることがわかる。


git add後のgit diff

git addでワークツリーの内容をステージ(インデックス)に上げると、ワークツリーとステージの差分はなくなるため、git diffで何も表示されなくなる。

何も表示されない
$ git add index.html
$ git diff
$


2. 指定コミット vs 作業ツリー

引数でコミットを指定すると、コミットと作業ツリーの差分を表示することができる。

git diff コミット

引数を何も指定しない場合はステージとの比較だったため、git addするとgit diffで何も表示されなくなった。

コミット自体はaddしても変化ないため、addした後でもgit diffで差分が表示される。

現在作業中のコミットとワークツリーを比較

コミットの指定方法はHEAD、ハッシュ値(SHA)、tagなど複数の方法で指定できる。

▼実例

作業中のコミットのログを確認
$ git log --oneline
0193c66 (HEAD -> master, tag: v1.0) add h1

例えば上記のように、現在作業中のコミットワークツリーでgit diffをする場合、git diff 0193c66 = git diff HEAD = git diff v1.0となる。


SHAで指定
$ git diff 0193c66
diff --git a/index.html b/index.html
index 60f3b81..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -7,5 +7,6 @@
 </head>
 <body>
        <h1>add h1</h1>
+       <h2>add h2</h2>
 </body>
 </html>
HEADで指定
$ git diff HEAD
diff --git a/index.html b/index.html
index 60f3b81..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -7,5 +7,6 @@
 </head>
 <body>
        <h1>add h1</h1>
+       <h2>add h2</h2>
 </body>
 </html>
タグ名で指定
$ git diff v1.0
diff --git a/index.html b/index.html
index 60f3b81..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -7,5 +7,6 @@
 </head>
 <body>
        <h1>add h1</h1>
+       <h2>add h2</h2>
 </body>
 </html>

昔のコミットとワークツリーを比較

引数で古いコミットを指定すれば、指定した時点でのコミットとワークツリーの差分を見ることができる。

例えば2つまえのコミットと比較する場合はgit diff HEAD^^となる。もちろん、ハッシュ値(SHA)やタグ名でも指定可能。

HEADで過去のコミットを参照する方法

2つ前のコミットと比較
$ git diff HEAD^^
diff --git a/index.html b/index.html
index e69de29..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+</head>
+<body>
+       <h1>add h1</h1>
+       <h2>add h2</h2>
+</body>
+</html>


3. 指定コミット vs ステージ(インデックス)

オプション--cachedをつけると、ステージの状態と比較することができる。

コミット指定なし

引数がない場合、現在のコミットとステージの状態を比較する。

git diff --cached

$ git diff --cached
diff --git a/index.html b/index.html
index 60f3b81..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -7,5 +7,6 @@
 </head>
 <body>
        <h1>add h1</h1>
+       <h2>add h2</h2>
 </body>
 </html>

コミット指定あり

git diff --cached <コミット>



▼実例

2つ前のコミットとステージを比較
$ git diff --cached HEAD^^

diff --git a/index.html b/index.html
index e69de29..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+</head>
+<body>
+       <h1>add h1</h1>
+       <h2>add h2</h2>
+</body>
+</html>


4. 比較元コミット vs 比較先コミット

コミットを指定することで、コミット同士の比較も可能。

git diff <比較元コミット> <比較先コミット>

基本的に比較元は古いコミットを指定する。(出力結果で追加された項目が+で表示されるため)

例えば、現在のコミットと3つまえのコミットを比較する場合は「$ git diff HEAD^^^ HEAD」

3つ前のコミットと比較
$ git diff HEAD^^^ HEAD
diff --git a/index.html b/index.html
index 71b41cf..7e03fa2 100644
--- a/index.html
+++ b/index.html
@@ -8,5 +8,8 @@
 <body>
        <h1>add h1</h1>
        <h2>add h2</h2>
+
+       <h3>add h3</h3>
+       <h4>add h4</h4>
 </body>
 </html>
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..e69de29



▼引数を逆にした場合
引数を逆にすれば、+と−の符号が置き換わる。

3つ前のコミットと比較(逆)
$ git diff HEAD HEAD^^^
diff --git a/index.html b/index.html
index 7e03fa2..71b41cf 100644
--- a/index.html
+++ b/index.html
@@ -8,8 +8,5 @@
 <body>
        <h1>add h1</h1>
        <h2>add h2</h2>
-
-       <h3>add h3</h3>
-       <h4>add h4</h4>
 </body>
 </html>
diff --git a/style.css b/style.css
deleted file mode 100644
index e69de29..0000000


5. 指定ブランチ vs 作業ツリー

git diff <コミット>で指定コミットと作業ツリーを比較できたが、ブランチを指定すれば、指定ブランチと作業ツリーを比較できる。

git diff <ブランチ名>

ブランチft1と作業ツリーを比較
$ git diff ft1
diff --git a/index.html b/index.html
index 7636e4b..7e03fa2 100644
--- a/index.html
+++ b/index.html
@@ -10,5 +10,6 @@
        <h2>add h2</h2>

        <h3>add h3</h3>
+       <h4>add h4</h4>
 </body>
 </html>
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..e69de29


6. 指定ブランチ vs 指定ブランチ(リモートブランチも可)

ブランチ同士の差分を比較することも可能。

git diff <比較元ブランチ名> <比較先ブランチ名>


ローカルブランチ同士の比較

ft1とmasterを比較
$ git diff ft1 master
diff --git a/index.html b/index.html
index 7636e4b..7e03fa2 100644
--- a/index.html
+++ b/index.html
@@ -10,5 +10,6 @@
        <h2>add h2</h2>

        <h3>add h3</h3>
+       <h4>add h4</h4>
 </body>
 </html>
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..e69de29

変更点は2つあることがわかる。
(1)masterはindex.htmlにはh4タグがない(ft1にはh4タグが追加されている)。

(2)masterにはstyle.cssファイルが新規作成されている(ft1にはない)

ソースコードの+, -とファイル追加のnew, deleteが微妙にわかりにくい。。


ローカルブランチとリモートブランチの比較

git diff <ローカルブランチ名> <リモートレポジトリ名/ブランチ名>

▼実例
ローカルのmasterブランチと、リモートレポジトリ名originのmasterブランチを比較。

$ git diff master origin/master
diff --git a/index.html b/index.html
index 9d8e2e9..7e03fa2 100644
--- a/index.html
+++ b/index.html
@@ -11,7 +11,5 @@

        <h3>add h3</h3>
        <h4>add h4</h4>
-
-       <h5>add h5</h5>
 </body>
 </html>


7. 指定ブランチ vs 指定ブランチの共通先祖

git diff <比較元ブランチ名> <共通先祖を参照するブランチ名>

▼実例

git diff ft1...master

この場合、ft1と、ft1とmasterの共通先祖のコミットを比較する。

ドットあり
$ git diff ft1...master
diff --git a/index.html b/index.html
index 7636e4b..9d8e2e9 100644
--- a/index.html
+++ b/index.html
@@ -10,5 +10,8 @@
        <h2>add h2</h2>

        <h3>add h3</h3>
+       <h4>add h4</h4>
+
+       <h5>add h5</h5>
 </body>
 </html>
diff --git a/style.css b/style.css
new file mode 100644

▼(参考)ドットなしの場合
ドットがない場合は、指定したブランチ同士の比較となる。

ドットなし
$ git diff ft1 master
diff --git a/index.html b/index.html
index 7636e4b..9d8e2e9 100644
--- a/index.html
+++ b/index.html
@@ -10,5 +10,8 @@
        <h2>add h2</h2>

        <h3>add h3</h3>
+       <h4>add h4</h4>
+
+       <h5>add h5</h5>
 </body>
 </html>
diff --git a/main.js b/style.css
similarity index 100%
rename from main.js
rename to style.css


8. 「diff A B」と「diff A..B」は同じ

コマンドの記述で、間にドット2つ(..)がある場合があるが、これはドットの前後を比較している意味。

ドットなしと同じ結果となる。

▼実例

ドットなし
$ git diff HEAD HEAD^
diff --git a/index.html b/index.html
index 9d8e2e9..7e03fa2 100644
--- a/index.html
+++ b/index.html
@@ -11,7 +11,5 @@

        <h3>add h3</h3>
        <h4>add h4</h4>
-
-       <h5>add h5</h5>
 </body>
 </html>
ドットあり
$ git diff HEAD..HEAD^
diff --git a/index.html b/index.html
index 9d8e2e9..7e03fa2 100644
--- a/index.html
+++ b/index.html
@@ -11,7 +11,5 @@

        <h3>add h3</h3>
        <h4>add h4</h4>
-
-       <h5>add h5</h5>
 </body>
 </html>


9. 「..」と「...」の違い

git diff A..Bgit diff A...Bはドット2つとドット3つの差だが、実行内容は大きく異なる。

・ドット2つ git diff A..B

ブランチAとブランチBを比較。

・ドット3つ git diff A...B

ブランチAと、ブランチAとブランチBの共通祖先を比較。


git diffの便利なオプション

変更のあるファイル名のみ表示(--name-only)

--name-onlyをつけると、変更のあるファイル名のみを表示する。表示がだいぶ短くなる。

--name-only
$ git diff ft1 master --name-only
index.html
style.css

ft1ブランチとmasterブランチを比較すると、index.htmlとstyle.cssの2つのファイルに違いがあることが一目でわかる。



▼(参考)比較用

オプションがない場合
$ git diff ft1 master
diff --git a/index.html b/index.html
index 7636e4b..9d8e2e9 100644
--- a/index.html
+++ b/index.html
@@ -10,5 +10,8 @@
        <h2>add h2</h2>

        <h3>add h3</h3>
+       <h4>add h4</h4>
+
+       <h5>add h5</h5>
 </body>
 </html>
diff --git a/main.js b/style.css
similarity index 100%
rename from main.js
rename to style.css


2つ以上の連続するスペースを無視(-b)

-bオプションをつけると2つ以上の連続するスペースの差分は無視した、差分を表示する。

--ignore-space-changesと同じ。

▼参考

-bあり
$ git diff -b
diff --git a/index.html b/index.html
index 9d8e2e9..c3e3029 100644
--- a/index.html
+++ b/index.html
@@ -9,9 +9,11 @@
        <h1>add h1</h1>
        <h2>add h2</h2>

-       <h3>add h3</h3>
+
+
+       <h3>a d d h3</h3>
         <h4>add      h4</h4>

-       <h5>add h5</h5>
+       <h5>a d d    h5</h5>
 </body>
 </html>
-bなし
$ git diff
diff --git a/index.html b/index.html
index 9d8e2e9..c3e3029 100644
--- a/index.html
+++ b/index.html
@@ -9,9 +9,11 @@
        <h1>add h1</h1>
        <h2>add h2</h2>

-       <h3>add h3</h3>
-       <h4>add h4</h4>

-       <h5>add h5</h5>
+
+       <h3>a d d h3</h3>
+        <h4>add      h4</h4>
+
+       <h5>a d d    h5</h5>
 </body>
 </html>


スペースを無視(-w)

-wオプションをつけるとスペースの差分は無視した、差分を表示する。

--ignore-all-changesと同じ。

▼参考

-wあり
$ git diff -w
diff --git a/index.html b/index.html
index 9d8e2e9..c3e3029 100644
--- a/index.html
+++ b/index.html
@@ -9,6 +9,8 @@
        <h1>add h1</h1>
        <h2>add h2</h2>

+
+
        <h3>a d d h3</h3>
         <h4>add      h4</h4>
-wなし
$ git diff
diff --git a/index.html b/index.html
index 9d8e2e9..c3e3029 100644
--- a/index.html
+++ b/index.html
@@ -9,9 +9,11 @@
        <h1>add h1</h1>
        <h2>add h2</h2>

-       <h3>add h3</h3>
-       <h4>add h4</h4>

-       <h5>add h5</h5>
+
+       <h3>a d d h3</h3>
+        <h4>add      h4</h4>
+
+       <h5>a d d    h5</h5>
 </body>
 </html>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git プルリクで他の人のコミットが含まれていた

間違っていたらコメントください

状況

プルリクを出そうとした時に、commit履歴に他の人のcommitが含まれていた。

環境

マージ先のブランチ
・develop
自分が作業しているリモートブランチ
・feature
自分が作業しているローカルブランチ
・feature

解決

コマンドの流れ

$ git log
$ git rebase -i コミットID
  不要なコミットの削除
$ git rebase origin/feature
$ git push -f origin feature 

解説

消したいcommitIDを確認する

$ git log

消したいcommitの直前のIDを利用することで削除できる

$ git rebase -i コミットID

〜〜〜コミットを削除する〜〜〜

自分が作業していたローカルブランチに自分が変更したcommitだけくっつける

$ git rebase origin/feature

作業中のリモートブランチに正しいものを適用

$ git push -f origin feature
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitのHEAD位置の指定方法まとめ(HEAD~, HEAD^, @~, @^とは?)

GitのHEAD位置の指定方法まとめ(HEAD~, HEAD^, @~, @^とは?)

現在作業中のコミットを表すHEADを使って、コミットの位置を指定できる。

たまに見かける、HEAD、HEAD~, HEAD^, @~などがそれぞれ何を指すかのまとめ。

目次

  1. HEADの履歴表示(git reflog)
  2. HEADを使った過去のコミット参照方法
  3. 同じ表記一覧
  4. (参考)コミットを引数にとる主なコマンド


HEADの履歴表示(git reflog)

現在のHEAD位置および、過去のコミットのHEADでの表記を一覧で参照できる、便利コマンド:

git reflog

image.png

HEAD: 現在作業中のブランチ
HEAD -> master: 現在作業中のブランチがmasterブランチと同じ
HEAD@{0} 0番目のHEAD=現在作業中のブランチ
HEAD@{1} 1つ前のコミット(現在作業中のブランチから1つ遡る)
HEAD@{n} n個前のコミット(現在作業中のブランチからn個遡る)

上記のようにHEADを使ってn個前のコミットを参照することが可能。

間違ったmergeやcommitなどを修正する場合によく使われる。

HEADを使った過去のコミット参照方法

HEAD@{n}以外にも過去のコミットを参照する方法が存在する。

HEAD~: ~の数がn個前になる。例は「HEAD@{1}」と同じ。
HEAD^: ^の数がn個前になる。例は「HEAD@{1}」と同じ。
@^: ^の数がn個前になる。例は「HEAD@{1}」と同じ。
@~: ~の数がn個前になる。例は「HEAD@{1}」と同じ。

  • v1.8.5から@がHEADのエイリアスに設定された。
  • ~ と ^ は同じキー(~ = shift+^)

同じ表記一覧

下記のようにc1〜c4までの4つのコミットがあり、現在作業中のコミットがc4の場合の各コミットの参照方法について。

c1 -> c2 -> c3 -> c4(HEAD)
c1 c2 c3 c4
3つ前 2つ前 一つ前 現在作業中
HEAD^^^ HEAD^^ HEAD^ HEAD
HEAD~~~ HEAD~~ HEAD~ HEAD
@^^^ @^^ @^ @
@~~~ @~~ @~ @
HEAD@{3} HEAD@{2} HEAD@{1} HEAD@{0}
@@{3} @@{2} @@{1} @@{0}



パッと見ややこしいが、実質は簡単。
(HEAD = @ = HEAD@{0} = @@{0})

書くときは迷うが、HEADで記述するのが迷う人が少ないと思われる。

3つ前ぐらいまでは「^」、それ以上は「@{n}」がわかりやすい。


(参考)コミットを引数にとる主なコマンド

コミット引数にとるコマンドはいくつか存在する。主には下記が挙げられる。

git diffgit showgit revertgit cherry-pickなど。

実例(show)
$ git show HEAD^^
commit 0a14ddec59fc0c124b5260018a64740d57d1dd12 (ft2)
Author: Y M <example@google.com>
Date:   Tue Sep 15 14:27:42 2020 +0900

    del text2, add style.css

diff --git a/style.css b/style.css
index b82d73d..1142a71 100644
--- a/style.css
+++ b/style.css
@@ -1 +1,2 @@
+#add comment
diff --git a/text2.txt b/text2.txt
deleted file mode 100644
index ce01362..0000000
--- a/text2.txt
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【git 公式リンク集】便利でよく使うgit公式リンク集まとめ

便利でよく使うgit公式リンク集まとめ

よく使うgitの公式リンク集。参照したいときに検索では上位に出てこないことがあるのでリンクをまとめておく。

目次

  1. gitチュートリアル一覧
  2. gitコマンド一覧
  3. チュートリアル主要リンク抜粋
  4. 主要コマンドのリンク抜粋


gitチュートリアル一覧(日本語)

チュートリアルのチャプター一覧へのリンク。
https://git-scm.com/book/ja/v2

image.png

gitコマンド一覧(English)

https://git-scm.com/docs/

image.png


チュートリアル主要リンク抜粋(日本語)

主要リンクと使われている主なコマンド(gitは省略)。

・「git statusの短縮表記とgit ignoreの使い方」(https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E5%A4%89%E6%9B%B4%E5%86%85%E5%AE%B9%E3%81%AE%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%B8%E3%81%AE%E8%A8%98%E9%8C%B2)

status (A, M, ??), .gitignore,

gitタグの使い方

tag, tag -l, tag -a

gitエイリアスの設定方法

config --global alias.xx xxxx, 'xxx yyy zzz', !xxx

リモートでの作業

clone, remote (-v), fetch, push, remote show, remote rename, remote rm,

コミット履歴(ログ)の参照

log

ログ参照 応用編

log --abbreb-commit --pretty=oneline,
log --pretty=format:'%h %s' --graph,
show, rev-parse, reflog, log -g,

作業のやり直し方法

commit --amend, reset HEAD

マージ方法

checkout (-b), branch (-d), merge,

リモートブランチ、 追跡/上流ブランチ

[remote-name]/[remote-branch],
[localb-ranch]:[remote-branch],
checkout --track, checkout -b, branch -u, branch -vv, push --delete,

リベースとは?使い方

rebase [base-branch],
rebase [base-branch] [topic-branch],
rebase --onto [base-branch] [topic-branch] [subtopic-branch],

ssh公開鍵の作成

ssh-keygen,

ブランチの名前空間

branch xx/yyyyyyyy,
checkout xx/yyyyyy,
apply, am

作業の隠し方、 一時中断

stash, stash list, stash apply,
stash -s (--save),
stash -u (--keep-index),
stash --patch,
clean

resetとは?使い方

reset (--hard) (--mixed) (--soft)

高度なマージ、 コンフリクト解消方法

merge --abort, git reset --hard HEAD,
merge -Xignore-space-change (Xignore-all-space),
show :1~3:ファイル名 > 出力先ファイル,
ls-files -u, merge-file -p,
diff --ours (--theirs) (--base),
clean -f,
checkout --conflict=diff3,
reset --hard HEAD~,
revert -m 1 HEAD,
merge -Xours (-Xtheirs),
merge -s ours,

フォーク, GitHub Flowについて

検索で欲しいログを素早く見つける

grep

サブモジュールとは?使い方

submodule add [URL],
submodule init,
submodule update,

git configのカスタマイズ

config --global,


主要コマンドへのリンク抜粋(English)

各コマンドの引数オプション詳細がみたい場合に便利。

[A]
git add

[B]
git branch

[C]
git config
git clone
git commit
git checkout
git cherry-pick
git clean

[D]
git diff

[F]
git fetch

[L]
git log
git ls-files

[M]
git merge

[P]
git pull
git push

[R]
git reset
git remote
git rebase
git revert
git reflog

[S]
git status
git stash
git show

[T]
git tag

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

【Git】管理外ファイル、フォルダを削除するコマンド。

自分用のメモとして残します。

■やり方

削除対象確認。

git clean -xdn

削除実行。

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

間違えて別ブランチにpush -f したときの対処法

普段の開発は一人1ブランチみたいな感じで複数人で1つのブランチを触ることが無いのでgit push -f hogehogeをたまに使うんですが、この間push先のブランチ名を間違えてそのブランチの修正内容を吹き飛ばしてしまいました…

自分のGit史上1番の大やらかしだったのですが、なんとか回避したのでメモがてら残しておきます。

元々のコミットハッシュを取得する。

まずはやらかしたの元々のを取得します。

自分はテンパリすぎてGitHubでみましたがGit logとかでも多分大丈夫だと思います。

PRのログの
2020-09-15 14-30-34.png
という部分を確認します。

この79282afがforce pushされる前のコミットハッシュなのでこれで大丈夫だとは思うのですが念のためコミットの詳細画面へ行って

2020-09-15 14-40-51.png

フルバージョンのコミットハッシュを確認してコピーしておきます。

元のコミットに戻す

やらかしたブランチに移動してそのブランチで

git reset --hard [コピーしたコミットハッシュ]

を実行して元の状態に戻します。
コマンドを実行した状態で元の状態に戻っているはずなので一応確認してください。

再度プッシュする

元の状態に戻っていることを確認できたら

git push -f origin [やらかしたブランチ]

でリモートブランチも元に戻っているはずです。

あとがき

まじでめちゃめちゃ焦りましたが

git reset --hard [コピーしたコミットハッシュ]

が実行できて戻った時点でめっちゃ安心しました。

やらかした時点で落ち着いて解決策をググれたのでなんとか大丈夫でした。
やらかしたときはまず落ち着くことが大事ですね。

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

gitの使い方(チームメンバー用)

チームメンバー向けgit,cmd,railsの使い方説明

※チームメンバー用なので雑です

ディレクトリを移動する
cd path\to\railsapp

git初期化
git init

gitのユーザー設定
git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"

リモートリポジトリをクローンする
git clone {URL}

読み込み元,書き込み先のURLを確認する
git remote -v

リモートリポジトリの最新状態を取得する
git pull origin master

現在の状態をステージに上げる(仮保存的なもの)
git add [ステージに上げるファイル]

仮保存をコミット(保存)する
git commit -m "コミットメッセージ"

リモートリポジトリに反映させる(最新状態でないとエラー)
git push origin master


DBを削除する
del db\development.sqlite3

マイグレーションする(テーブル作成)
rails db:migrate

DBにデータを挿入する
rails db:seed

Railsサーバー起動
rails s
※Ctrl+Cでサーバーを止める

Permission deniedのエラーが発生した場合はtmpフォルダを消すと治る時がある

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