学習めも。

Python、Anaconda学習中🔰 ブログ引っ越ししました😄よろしくお願いします!https://noeiganolife.com/

記録用🔰

プログラミング以外の記事はこちら

Git操作まとめ(Git機能集)

Gitの歴史

作者:リーナス・トーバルズ linuxの製作者
2005年ころにGitの原型を開発

GitHubとは

  • Gitリポジトリホスティングサービス
    • ファイルの変更をオンライン上で管理してくれる
    • プルリクエストで複数人の開発
    • 世界中のコードが見れる オープンソース

      Gitの基本的に仕組み

  • Gitはスナップショットで記録する
  • コミットをたどることで以前の状態に戻れる

  • ローカルは3つのエリアに分かれている
    • リポジトリ
      • スナップショットを記録 
    • ステージ
      • コミットする変更を準備
    • ワークツリー
      • ファイルを変更する作業場

  • リポジトリに「圧縮ファイル」「ツリー」「コミット」ファイルを作成することでデータを保存している
  • コミットが親コミットを持つことで変更履歴を辿れる
  • Gitの本質はデーターを圧縮して、スナップショットで保存 ​ ​

    Gitのはじめかた

  • git initとうつ
    1. .gitディレクトリが作成される

      GitHub上から持ってくる

  • git clone

    ステージに追加

git add ファイル名
git add ディレクトリ名
git add . ←すべて追加する場合

コミットする

git commit -m "メッセージ"
git commit -v ←エディタが立ち上がる

コミットメッセージの書き方

1行目 変更内容の要約
2行目 空行
3行目 変更した理由

現在のファイル変更状況を確認

git status  変更されたファイルが確認できる
ワークツリーとステージで変更されたファイル
リポジトリとステージで変更されたファイルが確認できる

変更差分、内容を確認

# git add する前の変更分
git diff
# git add したあとの変更分(ステージしたけどまだコミットしていない分が見れる)
git diff --staged
​
ワークツリーとステージの差分確認が`git diff`
ステージとリポジトリの差分確認が`git diff --staged`

変更履歴を確認 

git log
#一行で表示
git log --oneline
# ファイル変更差分を表示
git log -p ファイル名
# 表示するコミット数を制限する
git log -n コミット数

ファイルの削除を記録する

# ファイルごと削除
git rm ファイル名
git rm -r ディレクトリ名
#git上からのみ削除したい場合、リポジトリ上の削除
git rm --cached ファイル名

ファイルの移動を記録する

git mv 旧ファイル 新ファイル

GitHubにpush

  • git remote add origin https://~
    originというショートカットでurlのリモートリポジトリを登録
今後はoriginがリモート名という形で、GitHubリポジトリにアップしたり取得できる

リモートリポジトリへ送信

git push リモート名 ブランチ名
git push origin master

.gitignoreファイルに指定

.gitignoreファイル書き方
# 指定したファイルを除外
index.html
# ルートディレクトリを指定
/root.html
# ディレクトリ以下を除外
dir/
# /以外の文字列にマッチ 「*」
/*/*.css

ファイルへの変更を取り消す

git checkout -- ファイル名
git checkout -- ディレクトリ名
# 全変更を取り消す
git checkout -- .
# 「.」は任意のファイルすべて
# 「--」はブランチ名とファイル名がかぶった場合、区別するためつける

ステージに追加した変更を元に戻したいとき

git reset HEAD ファイル名
git reset HEAD ディレクトリ名
# 全変更を取り消す
git reset HEAD .
#「HEAD」最新のコミット、つまり最新のコミットに上書きする

直前のコミットをやり直す

git commit --amend
# リモートリポジトリにpushしたらやり直しはだめ
amend・・・修正する
修正したファイルをaddしたあとにgit commit --amendして一緒にまたgit commitする感じ

リモートを表示

git remote
# 対応するURLを表示
git remote -V

リモートリポジトリを新規追加

git remote add リモート名 リモートURL
git remote add bak https://~
git push -u bak master

リモートから取得(fetch)

git fetch リモート名
# リモートリポジトリからローカルリポジトリに取得するだけで、ワークツリーには反映されない
git fetch origin
# ワークツリーに反映
git merge origin/master
fetcnがおすすめ
 

リモートから取得(pull)

#fetchとmergeをまとめてるだけ
git pull

リモートの詳細を表示

git remote show リモート名
git renote show origin

リモート名を変更 削除 

# 変更
git remote rename 旧リモート名 新リモート名
git remote rename tutorial new_tutorial
# 削除
git remote rm リモート名
git remote rm new_tutorial

ブランチを新規作成

git branch ブランチ名
作成するだけで切り替えはしない

ブランチ表示

git branch
git branch -a
# すべてのブランチを表示

ブランチを切り替える

git checkout 既存のブランチ名
# ブランチを新規作成して切り替える
git checkout -b 新ブランチ名

変更履歴をマージ 

git merge ブランチ名
git merge リモート名/ブランチ名
git merge origin/master

コンフリクト解決

<<<<<< HEAD
HEADの変更分
======
featureの変更分
>>>>>>feature
①残したいもの以外消す

ブランチ名を変更 削除

#変更
git branch -m ブランチ名
自分が作業しているブランチの名前を変更
# 消去
git branch -d ブランチ名
masterにマージされていないと消せない
# 強制消去
git branch -D ブランチ名
masterにマージされていないと消せる

プルリクエスト流れ

①masterブランチを最新に更新
②ブランチを作成
③ファイルを変更
④変更をコミット
⑤githubへプッシュ`git push origin ブランチ名`
⑥プルリクエストを告る
⑦コードレビュー
⑧プルリクエストをマージ
⑨ブランチを削除

リベース

git rebase ブランチ名

タグづけ

一次避難

作業が途中でコミットしたくないけど別のブランチで作業しないといけない
一時的に保存する
git stash
stash・・・隠す
ワークツリーとステージの変更がなかったことになってブランチが切り替わる。

避難した作業の確認

git stash list

避難した作業の確認

#  最新の作業を復元
git stash apply
# ステージの状況も復元
git stash apply --index
#  特定の作業を復元
git stash apply スタッシュ名

避難した作業の削除

# 最新の作業を削除
git stash drop
# 特定の作業を削除
git stash drop スタッシュ名
# 全作業を削除
git stash clear

Collapse