その他

Git 関連 まとめ

この記事は約5分で読めます。

お疲れ様です。岩木です。前案件でgit関連のコマンドを色々と使いました。
どんなコマンドを学んだのか振り返りをしたくて、rambleに投稿することに決めました。

初歩的な内容かつ箇条書きでガンガン記載するので温かい目で見ていただけると幸いです。

Git 関連 まとめ(自分が学んだもの)

git checkout 〇〇

ブランチを切り替えるコマンドですよね。

ただ、ブランチ毎にディレクトリやファイルの内容が変わっていることもあるので注意が必要ですよね。(検証環境や本番環境を触るときには)

git log

コミットのログを見るコマンドですよね。お世話になりました。

git branch

今、どのブランチにいるのか確認するコマンドですよね。お世話になりました。

git remote -v

今、どのリモートリポジトリにいるのか確認するコマンドですよね。ちょっとだけお世話になりました。

ちなみにリモートリポジトリを変更するコマンドは以下のコマンドを使用する。

git remote set-url origin {new url}

git branch 〇〇 と git checkout -b 〇〇

git branch 〇〇

こちらを普通にブランチを新規作成するコマンドですよね。

ブランチは元々いたブランチのまま。

git checkout -b 〇〇

こちらは普通にブランチを新規作成する。

ブランチは新規作成したブランチに移動される。

異なるリモートリポジトリをプルするときに使用するコマンド

案件の対応中に以下のエラーが起きたんですよね。

fatal: refusing to merge unrelated histories

内容が異なる履歴の持つブランチをgit pull コマンドなどを入力すると起きるエラーらしくて

その場合、--allow-unrelated-histories というオプションをつけると

異なるブランチでもマージすることが出来るみたいです。

ex git pull --allow-unrelated-histories origin/master

但し、このコマンドを入力しても、コンフリクト対応などが起きる可能性もあるので

出来れば、今後使いたくないコマンドだなと個人的に思っています。

git pull と (git fetch + git merge)の違い

まずそれぞれのコマンドの内容を振り返ります。

git pull

リモートリポジトリから最新の状態をローカルリポジトリに反映するコマンド

git fetch

リモートリポジトリの最新の履歴の取得だけを行うコマンド

そのため、その内容をローカルリポジトリに反映はされない。(マージされない。)

git merge

ブランチ間で変更を統合するために使用するコマンド

つまり
git fetch 〇〇 + git merge 〇〇 = git pull 〇〇

上記の式が出来上がる訳ですよ。

ただ、ここからは根拠もない個人的な見解なんですけど

git pullで上手くいかなかった場合、git fetch + git merge コンビで試すと

上手くいったことがあります。頭の片隅に覚えておいてもいいかもしれません。

リバート

上記の意味は特定のマージリクエスト もしくは 特定のコミットを取り消す操作のことを指します。

例えば、「うっかりマージしてしまった💧」「ブランチ先間違えた」っていう時に使用できるので
よければ調べてみて下さい。

ちなみに自分は以下の記事を参考にしました。

外伝

ssh接続したフォルダやファイルをローカルにコピーする方法を調べても、中々見つけられなかったので、自分が成功した方法をこちらに載せておきます。

scp -r [username]@[remote_host]:[path_to_remote_folder] [local_destination_folder]

説明

scp:Secure Copyコマンドの名前

-r:ディレクトリの再帰的コピーを許可するオプション

[username]:リモートホストにログインするユーザー名

[remote_host]:ファイルまたはフォルダーを転送するリモートホストのIPアドレスまたはドメイン名

[path_to_remote_folder]:転送するリモートフォルダーのパス

[local_destination_folder]:ローカルに保存するディレクトリのパス

具体例

scp -r username@remotehost.com:/home/username/documents /Users/localuser/Desktop


参考

gitのremote urlを変更する(レポジトリ移行時) - Qiita
Githubのプライベートレポジトリを移行した時に行ったクライアントの設定です。 前提 以下の項目が完了していること。 - Githubでのプライベートレポジトリ移行 - 自身のPCからGitHubへのssh接続 手順 1...
[Git] fatal: refusing to merge unrelated historiesを解決する話 - Qiita
TL;DR git merge --allow-unrelated-histories origin/masterをする! ※ 2020/12/01追記 2020年10月より, デフォルトブランチがmasterからmainに変...
fetch|サル先生のGit入門【プロジェクト管理ツールBacklog】
scpコマンドでサーバー上のファイルorディレクトリをローカルに落としてくる - Qiita
基本 scpは、sshを使ってネットワーク・ホスト間でファイルを安全にコピーするためのコマンド。 scp -i ~/.ssh/secret.pem -r ec2-user@ec2-54-00-00-00.ap-northeas...