Gitでしたいことを実現するコマンドリストを作る

投稿者: | 2018年1月10日

Gitについて、どういう仕組みなのかは多くのサイトで説明しているが、
概要を軽く理解した初心者に対して、
したいことを、どう実現するのかをまとめたものがピンとこないので
メモを取ることにする

注意事項

環境によって、
しなきゃいけないコマンドが一部異なる可能性があります。
そこまでは説明できないのでほかの人にqiitaりしてください。
あと、初心者用です。
より応用させたい場合はqiitaりしてください。

間違ってたらごめんなさい

したいこと

 

 

Git管理を開始する

 

すでにgit管理されているものをcloneする

url … プロジェクトのurl
user … commitするときに必要な自分の名前(本名じゃなくてもok)
email … commit するときに必要な自分のメアド

 

持っているフォルダなどをgit管理する

url … リモートリポジトリのurl
user … commitするときに必要な自分の名前(本名じゃなくてもok)
email … commit するときに必要な自分のメアド

 

リモートリポジトリのurlを打ち間違えたとき

 

 

(commitして)pushする

message … commit時の説明。githubとかで薄い色で表示される奴

 

 

branch

いまあるbranchの一覧を見る

マークがついているのが今いるbranch名になる。

 

新しいbranchを作る

B … 新しく作るbranch名

 

あるbranchに移動する

B … 移動したいbranch名

移動時、変更していたファイルはどうなるのか

例えば、masterとBというbranchがあると仮定します。
Bを編集中に、masterにcheckoutした際、編集中のファイルはどうなるのかを考えます。

これは経験則なので正しいかはわかりませんが、
git checkout masterを行った際、

現在のbranch(=B)で編集中であり、
かつcommitされていないファイルについて、
移動先(=master)の(ローカル環境で)最新のcommitデータに変更されます。
そして、それ以外のファイルはそのまま保持されることになります。

つまり何かというと、(場合にもよりますが)
checkoutをするのであれば、
現在のbranchでcommitを行ってからしたほうが楽
ということです。

今いるbranchでpushする

B … 今いるbranch名
message … commit時の説明。githubとかで薄い色で表示される奴

 

 

merge

 

master上でmergeする

message … commit時の説明。githubとかで薄い色で表示される奴

conflictしたとき

conflictしたファイル内

conflictを解消したのち

 

 

 

あるbranchと別のbranchでmergeする

A … 自分が今後pushする予定のbranch
B … 編集終了したbranch
branch A に branch B のデータを貼り付けたい時の作業になります

 

 

conflictしたとき

 

conflict解消後

 

 

その他

 

git labで非公開なものをリモートリポジトリとするとき

url は
**** … 自分のアカウント名

となります

 

リモートリポジトリにpushしたくないリストを作成する

git管理されているフォルダ内に

.gitignore

というファイルを作成します。メモ帳などで作れないときは、
フリーソフトで作成することができます。

pushしたくないファイルは、
.gitignoreファイルのあるディレクトリからの相対パスで記述します

ignore.cpp … pushしたくないファイル
/DIR/Ignore.c … pushしたくないファイル
/IGNOREDIR … pushしたくないディレクトリ、フォルダ
このフォルダ内にあるものすべてをpushしたくないときに使用します
*.exe … 拡張子が.exeのものをpushしたくない
!noIgnore.txt … git管理させておきたいファイル
(例えば、あるディレクトリ中の特定ファイル以外はignoreしたい時に使います。)

**/templates_c … (0個以上のディレクトリまたはファイル)/templates_cフォルダをpushしたくない。
(同じ名前のフォルダ(やファイル)が、異なる場所にいくつも存在するときに使えます)

 

 

とにかくリモートリポジトリの内容と同じにしたい

Qiitaより引用

git fetch origin
git reset –hard origin/master

引用元: https://qiita.com/ms2sato/items/72b48c1b1923beb1e186

実行後、origin/masterと同じ内容になります。
origin/masterに含まれていなかったフォルダ、ファイルなどは
そのまま残ります。

また、あるファイルを変更したけど、そのファイルだけpullした直後の状態に戻したい!
commitに登録したくない!
というときは、以下のコマンドを実行します。

filename … 元に戻したいファイル名

 

 

httpsなのにssh的なエラー文が出た

clone時、push時等、
urlがhttpsなのに、sshがどーのこーの…的なエラー文が出たとき
以下の文を実行することで解消できる場合があります。

 

git graphをふつくしくする

.gitconfigを作成(もしくは開く)

以下を書き込みます

lg が普通のコマンド
lgaがallオプション付きとなる
引用: http://blog.toshimaru.net/git-log-graph/

 

すでにgit管理されているファイル等を.gitignoreする

このファイルもういらないや、git管理から外そうというときに使用します。

remove.txt … git管理されているが、git管理から外したいファイル。
removeDir … git管理されているが、git管理から外したいフォルダ(ディレクトリ)

 

過去作成したbranchに、masterの変更を反映させたい

例として、masterと、過去にmasterから派生したBというbranchがある状況を考えます。
Bを編集中、masterで変更があり、その変更をBにも反映させたい場合を考えます。

いくつか方法があるようですが、ここではrebaseを用いた方法を紹介します。
(引用元:https://qiita.com/Iyutaka/items/248ebc0a0cc4ba8cb911)

  1. masterを最新の状態にする
  2. git rebase masterを実行する
    1. conflictが発生したら、上述のように対応

 

rebaseを行った後、リモート環境にpushする際、
pushできないことがあります。
その際は、無理やり-fコマンドでpushします
-f … 無理やり

ただ、リモートの開発branchが変更される処理なので、慎重にすべきです。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA