Git初心者の私が理解するために、まとめをしてみました。
まだまだ分からないことだらけなので、
            自分自身のまとめ・振り返りのためにGit Bashと兼用しているSourcetreeについても軽く触れながらGitについて記事にしていけたらなと思います。
            環境はWindowsです。
また、私と同じようにGit勉強中の方のお役に立てれば幸いです。
Gitに挑戦する前に Git用語集
基本用語を忘れてしまうと最初から「よくわからない…」となってしまうので、まずはGitの基本用語についておさらいをします。
| よく使用される Git用語集  | 
                説明 | 
|---|---|
| リポジトリ | ファイルの追加や変更など履歴が保存される場所で、Gitではこのリポジトリが複数作成可能です。 また、リポジトリにはローカルリポジトリとリモートリポジトリがあり、個人用のローカルリポジトリで個別に作業を進め、複数人で使用するリモートリポジトリ(元となる大きな一本の木)に共有をします。 ローカルリポジトリでファイルを追加・変更した後にプッシュすることでリモートリポジトリに反映されるようになります。  | 
              
| ブランチ | 元となる大きな一本の木からブランチ(木の枝)が伸びているイメージで、個別にタスクが進められます。 このブランチはフェッチとマージをしなければ、元となる大きな一本の木には反映されないので要注意です。  | 
              
| フェッチ | 自分以外の人のファイルの追加や変更、履歴をリモートリポジトリからローカルリポジトリに持ってくることです。 | 
| マージ | マージは異なるブランチ同士を統合する大事な工程です。 これをすることによって、リモートリポジトリと、ローカルリポジトリは最新の状態になります。  | 
              
| プッシュ | ローカルリポジトリからリモートリポジトリへ反映させることです。 プッシュをしないとサーバに反映されず、サーバからはそのファイルを見ることが出来ません。  | 
              
| コミット | コミットではメッセージをつけ、自分が何をしたのかを他の人にもわかるようにすることが可能です。 コミットをするとSourcetreeのブランチに自分のメッセージが表示されます。  | 
              
| ステージ | 変更されたファイルが待機している場所です。 | 
| クローン | リポジトリの内容を取得し、もう1つ全く同じリポジトリを作成することです。 クローンは、リポジトリが同じように複製されるのでバックアップや初めて(又は途中から)開発に参加する場合などに活用されます。  | 
              
| チェックアウト | 自分の今いるブランチから、別のブランチに移動したいときなどに使います。また、他の人のブランチを引き継いで作業する場合などにも必要になります。 | 
他にもたくさん用語があるみたいです。
変更したファイルをプッシュするコマンド紹介
今回はいつも私がしているローカルリポジトリのPush方法を流れにしてみました。主にGit BashとSourcetreeを使用しています。
1.Sourcetreeでコミットされていない変更の表示を確認
この作業はSourcetreeで行います。

“コミットされていない変更があります”をクリック。

そして、変更したファイルを選択し、indexに追加します。
            ここでぼかしてあるのは変更したファイルです。変更したファイルの数だけ表示されます。
            追加をすると”indexにステージしたファイル”へ選択したファイルが移動するので確認ができたら次の過程、コミットへ移ります。
また、以下のコマンドでもできます。
$ git add -A
          このコマンドはSourcetreeでの【全てindexに追加】というボタンに値します。
$ git add 追加したいファイル名
          1つだけ選んでindexに追加したいときには上のコマンドを使います。
$ git add -u
          以前に1回でもコミットをしたことのあるファイルのコミットがしたいときは上のコマンドを使います。
            Git Bash初心者の私は視覚的にindexへ追加できたと確認できるSourcetreeのほうがわかりやすく、間違いも少なくなると思い、Sourcetreeでステージに変更を追加しています。
            追加するだけではなく、除くことも簡単にできてしまうのでおすすめです。
2.コミットをする
$ git commit -m 'ファイルを変更しました。'
          Git Bashで行います。
            後から自分でコミットした場面に戻ることができるのでこまめにコミットを!
            また、-m ''でコメントをすることによって、Viエディタを開かずに手軽にコミットを作成できます。
            私は他人からみて何を変更したのかわかりやすくコメントすることを心がけています。
3.フェッチをする
$ git fetch origin
          Git Bashで行います。
            リモートリポジトリの最新状態を取り込み、まずは自身のローカルにorigin/{ブランチ名}として保存しておきます。
このとき保存されたいずれかのブランチの内容を、自分のブランチに反映させたい場合は4のステップに移りましょう。
            当記事では、元となる大きな木(origin/masterというブランチ名と仮定)の変更を取り込んでみます。
4.自分のブランチを最新状態に統合するため、マージをする
$ git merge origin/master
          Git Bashで行います。 フェッチの際にも登場したorigin/masterは、自分のローカルにあるものなので、それを使い自分のブランチへ統合(最新)にするために行います。
5.プッシュをする
$ git push -u origin 現在のブランチ名
          Git Bashで行います。
            サーバに反映させるため、プッシュをします。
            現在自分がいるブランチで、2回目以降のPushは$ git pushを使用します。
            詳しくは服部さんのブログ、Git勉強中☆ローカルで作業ブランチを作成しリモートへPushするまでの手順に掲載されています。
            とてもわかりやすく説明されていて、参考になります。
6.元となる大きな一本の木へ自分のブランチをマージをする
グランフェアズ流になってしまいますがBitbucket上でプルリクエストをして、マージをします。
            Bitbucketで、プルリクエストというものを作成し、他のメンバーの方々に承認を貰ってから、元となる大きな一本の木に自分のブランチを統合することが完了します。
疑問Q&A
私が実際にGitに挑戦してみてつまずいたところ、分からなかったことをいくつか挙げてみました。
            疑問を自分で調べて得たAnswerを紹介します。
Q. ブランチの名前を間違えてしまった時はどうするのか
A. 以下のコマンドで名前を変更できます。
$ git branch -m 新しいブランチ名
          私がブランチ名を間違えた時はGit Bashから名前の変更をしましたが、個人的にSourcetreeで変更したほうが簡単だと思います。
            変更したいブランチを左クリック、するとブランチ名を変更というタブが出現します。

個人的に日本語でわかりやすいです。上図のようにブランチの削除もすいすいとできます。
            Git Bashで変更したい場合は
            $ git branch -m 名前を変更したいブランチ名 新しいブランチ名
          
また、変更したいブランチを開いている場合は
            $ git branch -m 新しいブランチ名
            を入力することによって変更可能です。
          
Q. Pushしようとすると、エラーが出てPushできない
A. エラーの種類によって対処の仕方が違います。
まずはエラーの解読からですね。今回はよくある事例を紹介します。
            それは現在のブランチで初めてpushする時、普通に$ git pushをしている事例です。
            pushをした時に
            
fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use...
            と出てくるのは、追跡オプション指定ができていないからです。
          
$ git push -u origin 現在のブランチ名
          上のように、ブランチ名を記述してからpushをしないと、GitさんはどこのブランチにPushしたらいいのかわからないらしいです。 私は数回間違えてやっと覚えました…お気をつけくださいね。
Q. Git Bashでmargeをした時に見たことの無い画面が表示され、次に進めなくなった
A. その場合は:q!を入力し、Enterを押すと元の入力画面に戻ります。
服部さんに伺ったのですが、:q!は強制終了(保存せずに終了)ということなので表示された画面をしっかり確認してから:q!の使用をおすすめします。
強制終了をして終わりではなく、何故いつもと違う画面がでたのかを考える必要があります。
            私の場合、確かコミットメッセージの入れ忘れだったような気がします。お気をつけください~。
            また、Git Bashでわからない画面が表示されるのはmargeした時だけではないので汎用的に使えそうです。
ここで紹介している見たことの無い画面とはViエディタ(Vimエディタ)のことです。
            Viエディタとはテキストエディタのことで、Viエディタには:q!の他にもたくさんコマンドがあるので覚えると便利だと思います。
Viエディタについてまだよくわかりませんが、私もお世話になっているブログ、Gitのコミットメッセージを後から変更する方法をわかりやすく書いてみたにコミットしたメッセージを変更する方法とともにViエディタについて少し掲載されています。
            コマンドも掲載されているので確認してみるといいかもしれません。
最後に
グランフェアズでバイトを始めてから初めて触れたGitですが、直接教えていただいたり、服部さんに貸してもらったGitに関する本やブログを読むことによって少しずつ理解できるようになってきました。
            と言っても、まだブランチを切ったり、チェックアウトしたりがあやふやで、Gitって奥が深いなと感じています。
Gitは英語なので「???」となりがちですが、エラー文をコピーしてGoogle翻訳などに流し込み、日本語にすると分かりやすいという事に最近気が付きました。
しかも、Gitでわからないことがあればグランフェアズのブログにほとんど書いてあります。
            もう少しGitについて詳しく知りたい!という方はぜひ、他のブログも覗いてみてください。
          

