ちょいめも

物理/Python/Cの雑記帳

Gitの使い方 覚書

リモートリポジトリを共有サーバーとするときのgitの操作などの覚書
リモートリポジトリ:D:\python\repository\git_test.git
ローカルリポジトリ:D:\python\PythonScript\git_test
としてメモ

まだわかっていないことも多いので、
間違っていることもあると思います。
なので適宜更新します。

基本的にはVSCode拡張機能GitHistoryを使うことを前提として書いています。
ターミナルからコマンド打つ方が楽なときはコマンドで。


■初期作成の場合
・サーバー側の作業
cd D:\python\repository

フォルダの作成
mkdir git_test.git
cd git_test.git

リポジトリを作成
git init --bare

・ローカルでの作業
ローカルリポジトリに移動して

リモートブランチの設定
git remote add origin D:\python\repository\git_test.git
origin:リモート名、originは習慣で使われているもの
リモートURL:D:\python\repository\git_test.git

プッシュ
git push origin master
マスターがプッシュされる

この初期作成のやり方だとHEADがつかない
git remote set-head origin master
でつけられる

workspaceを作っとかないと、VSCodeで開いたときにエクスプローラーのとこに
「フォルダがありません」となるので、作っといた方がよさそう。


■リモートリポジトリがある場合
リモートブランチの設定。
git remote add origin D:\python\repository\git_test.git

リモートブランチの確認
git remote -v

プッシュ
git push origin master
マスターがプッシュされる

■リモートURLを変更する
git remote set-url origin D:\python\repository\git_test.git


■クローン(ローカルリポジトリが存在しない場合、複製)
git clone D:\python\repository\git_test.git D:\python\PythonScript\git_clone
ローカルのフォルダは作られていなくてもOK


■フェッチ(更新を確認)
ローカルリポジトリで以下を実行
git fetch D:\python\repository\git_test.git\
リモートが設定されていれば
git fetch
でもOK

コマンドが実行されると、ローカルにリモート追跡のためのブランチが作られる。このブランチの名前を使ってリモートにどんな変更が記録されているかを見ることができる。
git log origin/master
で変更履歴が見れる。

フェッチではリモートからとってきた情報が「origin/master」ブランチに取り込まれる。


■マージ(フェッチしたものをローカルにマージする)
ローカルリポジトリで以下を実行
git merge origin/master
すでに最新の場合は
Already up to date.
とでてくる。


■プル
git pull は、git fetch と git merge を 1 つのコマンドで実行できる
ローカルリポジトリで以下を実行
git pull D:\python\repository\git_test.git\


VSCODEを使用してログからブランチを作成
Git Historyを使用

  1. Branchから作成して、

作成した後はブランチ名のところをクリックしてチェックアウト

この作業を行った後、Git Historyの絞り込みがブランチが絞り込まれているので、
All Branches
にすると全部出てくる。

VSCODEのウィンドウの左下のブランチ表示しているところをクリックして
作成したブランチからmasterに戻ることもできる。

masterに戻って
作成したブランチの
More
から、このブランチをカレントブランチにマージするを選んでマージする

内容がコンフリクトした場合は手動で直してステージングする

分岐して作ったブランチはmasterにマージしたら消す(Git Historyのブランチ名の×で消せる)

■リモートリポジトリが更新されていて
ローカルリポジトリも更新していて
プルしてコンフリクトした場合

手動で直してプッシュしなおす


■マージしてからプッシュする
分岐してるとリジェクトされるので


■Revert this commit
Git HistoryのMoreから操作
HEADより前に戻る場合は
ソースの方で
Accept Current Change
Accept Incoming Change ← 選択したコミットのとこに戻る
Accept Both Changes
Compare Changes
を選んでソースを戻したり直したり
選択したコミットの一つ前の状態に戻る
HEADよりも前に戻らない場合は自動的にそのコミットのところに戻りコミットされる模様


■Soft reset to this commit
VSCODEのGitHistoryのメニューから
戻りたい履歴のSoftを押すと、そこがmasterになる
ただしソースは戻らない。
戻りたいところからブランチを作成した方がいいかも


■Hard reset to this commit
履歴が完全に消える。
ファイルももとに戻る
なかったことになる。
使わない方が吉。