2023年2月7日火曜日

gitの基本 備忘録

今後、自分で忘れたときに参照するために、備忘録としてまとめてみた。
1workingDirectory 2stagingArea(index) 3repository(local,remote)
1から2が、add  2から3がcommit

最初に git init で作業ディレクトリ作成

git add .   git commit -m 'コメント'   これらを まとめて git commit -am 'コメント' ともできるようだ。 git commitで、名称を入力も可能
  直前のコミットに含めたいとき git add .  のあと git commit --amend コミットが増えない

git log でコミット保存が確認できる 
 git log --onelineで1行表示
 git log -p 変更状況が確認できる
   git log --graph グラフ化
   git log --stat 何か所変更したか確認

git status  よくわからなくなったら、ここでコマンドを参照する
  addもcommitもしてないと 
          ・git checkout -- <file>で変更をないことにもできる
    ・git diff で確認できる
      ただし、addしていると git diff -cachedとする

git add . 下位ディレクトリも含めステージングエリアにあげる
削除、移動は git rm  git mvを使わないといけない

git reset --hard <hash>
git reset --hard ORIG_HEAD もとの先頭にもどすことができる
 万が一、間違ってresetしたら
 git reflog で操作履歴を表示し、それに基づいてgit reset --hard HEAD@{n}のように

git branch <ブランチ名>    git checkout -b ブランチ名 でチェックアウトも一緒に可能
git branchで ブランチのリスト git checkout ブランチ名 でブランチ切り替え
git branch -d ブランチ名 で削除

git merge難しいとき  git merge --abort

git revert <hash> でコミットの取り消し可能 コンフリクトが起きたら、ブランチのマージで対処した方法で解消可能
別のブランチから今いるブランチへ、必要なコミットだけをコピーできる
git cherry-pick [コミットID]

作業中のファイルを保存するには、まだコミットしていない状態で、
git stash save
スタッシュのリストを見る
git stash list
・スタッシュを復活させる
git stash apply stash@{0}
・スタッシュを削除する
git stash drop stash@{0}
・スタッシュの復活と削除を同時に行う
git stash pop stash@{0}

stashの使用例:間違って違うブランチで作業していた時
コミットせずブランチを切り替えようとするとエラーが発生する。そこでgit stashで
変更がいったんメモリに
そして、正しいブランチにり替え後に、git stash popでもってくることができる

git grep “検索したい文字列”
git grep “検索したい文字列” コミット識別子
・ファイル名のみ表示する
git grep -l “検索したい文字列”
行番号を表示させるよう設定。$ git config --global grep.lineNumber true

git clone https: ⁄ ⁄ github.com/[あなたのGitHub ID]/pull-request-practice.git
git remote add upstream https: ⁄ ⁄ github.com/elmas3/pull-request-practice.git
git remote -v
git remote rm upstream

git config -l でリモートの設定が確認できる
git clone <remote> <local>でリモートからクローン出来る

ある Git ブランチのコードをチェックアウトするには、
$ git switch <ブランチ名>
のように実行しますが、そのブランチの最新コードではなく、ある特定のバージョン(コミット ID)のソースコードを少しだけ覗いてみたいということがあります。 そのような場合は、ブランチ名の代わりにコミット ID を指定してチェックアウトすることができます。
コミット名を指定して git checkout を実行すると、どのローカルブランチもチェックアウトしていない detached HEAD という状態になります。例えば、以下のように git checkout すると、この状態になります。
git checkout 0d3ce61      # コミット ID を指定
git checkout HEAD^0       # 最新のコミットを指定
HEAD が detached された状態で git branch を実行すると、どのブランチにもいないことを示す (no branch) が表示されます。
git branch
* (no branch)
 main
 mybranch
detached HEAD 状態でも git commit などのコマンドを実行できますが、どのブランチにもいない状態なので、どのブランチの head も更新されません。 再びローカルブランチ名を指定してチェックアウトすると、detached HEAD で行っていた変更を破棄してブランチの最新状態に戻ることができます。
detached HEADの状態でコミットしてしまった場合:
①変更内容が不要な場合
 detached HEADの変更内容を破棄するには、次のコマンドを実行します。
git reset --hard @
 @は最新のコミットを指します。HEADと同じです(エイリアスです)。
②変更内容を引き継ぎたい場合
detached HEADで行ったコミットを引き継ぎたい場合は、ブランチを移動後に、対象のコミット番号を指定してmergeします。
 #特定のブランチにて(masterブランチなど)
 git merge <コミット番号>
 これで指定したコミットが、現在のブランチのコミットの中に取り込まれます。
③変更内容で新しブランチを作成したい場合
変更内容で新しいブランチを作成したい場合は、コミット番号を指定して新しいブランチを作成します。
git checkout -b <新しいブランチ名> <コミット番号>


0 件のコメント:

コメントを投稿