お疲れ様です。岩木です。前案件で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