LoginSignup
2
2

More than 1 year has passed since last update.

【講義02.PC概論】gitコマンドとGitHubで詰みを回収した話

Last updated at Posted at 2021-06-28

本記事について

自分の備忘録と講義02.PC概論の復習と前提知識としてあったほうがいいことまとめました。
P2Pで一緒に解決したツミを書きました

git / GitHubとは

git : バージョン(変更履歴)を管理をするもの
GitHub : Gitのバージョン管理をオンラインで共有できる
※gitとGitHubは違います

まずgit-flow、GitHub Flowを学ぼう

少しだけ例え話を交えながら
GitHubを使う時は川に例えられることが多い
本流:mainブランチ(以前はmasterブランチ)
支流:作業用ブランチ(Topic branch)
川の流れの中で本流は流れが止めてはいけない。必ず動いている状態を維持する。支流でいろんな機能を作成確認をして、完璧に流れることを確認して、本流へ合流させましょう
絶対本流を汚染してはならない。汚染度合いは、自動テストが十分に存在しているのであれば、自動テストが全て通るかどうかで判断できる
支流は一時的に汚染される(通らない自動テストが存在する)ことがありうるが、本流に合流させるときには浄化処理を済ませて置く(全てのテストが通る状態に修正する)必要がある
元からあったテストが通れば良いというだけでなく、基本的には、追加/修正したコードに対する十分なテストを常に追加すべきというイメージができると良い
汚染は不具合など
参考のURL一読してもらえるとうれしいです

参考 【図解】git-flow、GitHub Flowを開発現場で使い始めるためにこれだけは覚えておこう

回収したツミ

事例1 : GitHubでreadme.mdを作成してmain branch(デフォルト)ができた後にローカルでmaster branchを作成してしまったときに起きた

エラー:fatal: refusing to merge unrelated histories

  1. GitHub上でリポジトリを作り, readme.mdを作成
  2. ローカルでgit initしてリポジトリを作り, git remote add origin でリモートリポジトリを指定
  3. ローカルで作業を行い,pushをしたら起きた fatal: refusing to merge unrelated histories と表示されpullもできない ### 原因 1.の作業でmainブランチができてしまった 2.でデフォルト(main)ブランチではなくmasterブランチを指定した

ツミ回収方法

git mergeコマンドに--allow-unrelated-historiesのオプションを使いして実行
masterブランチがデフォルトのとき
git merge --allow-unrelated-histories origin/master
mainブランチがデフォルトのとき
git merge --allow-unrelated-histories origin/main

実際はmasterブランチをデフォルトに切り替えてmainブランチは削除してブランチを1つにした(一人開発と初期段階のため) GitHubリポジトリのデフォルトブランチをdevelopに変更する
Githubでブランチ削除

なぜ起きたか

通常のマージでは,共通の祖先から分岐したブランチ同士が結合される.しかし,今回はGithubでのコミット,ローカルでのコミットはそれぞれ共通の祖先がない状態から行われてしまっているためマージができなかった

今後もgit/GitHub関連でツミが起きたものはアップしていきます

Tips

便利な設定(やっておくと見える化できていい)

ターミナルで作業が図解される

git config --global alias.lola "log --graph --decorate --pretty=oneline --abbrev-commit --all"

をターミナル上で実行

git lola

コマンドがターミナルで使えます

コマンド事例と説明

【git】基本コマンド

git init //初期化
git add * //現在あるファイル全部追加
git commit -m "コメント" //コミット

ファイル更新までの基本手順

git add [変更/追加したファイル名]
    or
git add .(全部あげてもいい)
git commit -m"コメント" // ファイルをコミット
git push origin 【branch名】//※Topicブランチが多い

リモートブランチの確認(urlも表示)

git remote -v

今やってる作業を一時退避する

git stash
git stash pop //戻す場合
git stash list //退避の一覧
git stash clear //退避の消去

ログ表示

git log //コミットのログが見れる
git log -p
git log --oneline
git reflog //いろいろ見れる
git reflog origin/branch_name //pushのログが見れる

Topicブランチをマージさせる方法(一人の時はほぼ使わない)

git checkout branch名 //Topicブランチに切り替え
git pull origin develop //リモートdevelopから最新の情報をpull
git merge --no-ff branch名 //Topicブランチ作業に移動先のブランチをマージ
git checkout branch名 //ブランチの切り替え
git merge --no-ff branch名 //Topicブランチ作業しているブランチのマージ

ブランチの切り替え

git checkout 【branch名】
git checkout -b 【branch名】//新しいブランチを作成して移動する
git checkout -t origin/develop // 名前の

ブランチ名変更

git mv 変更前のブランチ名 変更後のブランチ名
git commit -a -m "rename"
git push origin master

差分チェック

git diff
git diff HEAD^ //最後のコミットからの差分を表示
git diff --name-only HEAD^ //差分ファイルを表示
git diff file1.txt file2.txt //特定フィイルの差分
git diff commit1 commit2 //コミットの差分

慣れてきたらヘルプコマンドの利用してhelp内容を読んだだけで使い方が理解できるようになるのが望ましいです
ググった情報や書籍の情報は古くなるので

git help <サブコマンド> 

よく使う / 使っていくコマンドもアップデートしていきます

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2