- 1. git switchとgit checkoutって何が違うの?
- 2. git diff
- 3. Git_作業ディレクトリとステージングエリア
- 4. Git何もわからん。ReactのフォルダをPushさせてくれ。
- 5. VscodeのAll Changesが表示されなくなる
- 6. 【Error】Gitが正しく処理できない恐れも!!日本語や特殊文字はだめ
- 7. git pushを小分けにして、最大アップロードサイズ制限を回避するワンライナー
- 8. ローカルの変更を破棄して特定のコミットにリセットする手順
- 9. リモートリポジトリにpush済みの直前のコミットとローカルのステージにある修正(未コミット)を一つにまとめてpush
- 10. Claude-devの自動Gitコミットカスタムインストラクション
- 11. GitHub SSH接続設定について
- 12. Cloud LaTeXをVSCodeで使ってGit管理する
- 13. Gitコマンドの備忘録
- 14. GitHubのContributionを反映させる
- 15. Databricks にてノートブックが Jupyter Notebook 形式(.ipynb)で保存されてしまう事象への対応方法
- 16. 【Linux】特定ディレクトリ(リポジトリ)直下の全てのファイル情報を一度に取得する
- 17. ローカルリポジトリをダイエット!不要なGitブランチを瞬時に整理するワンライナーコマンド
- 18. Dockerコンテナ内からGitリモートレポジトリへのpush方法
- 19. Git サブモジュール
- 20. AWS CloudFormation で Git Sync を試してみた
git switchとgit checkoutって何が違うの?
## はじめに
gitコマンドでブランチを切り替える時、僕はgit switchを使うのですが、最近git checkoutでもブランチを切り替えることができると知って、どういうふうに使い分ければいいのか疑問に思ったので調べてまとめてみました。## checkout restore switch
git checkout, restore, switchコマンドができた経緯としては、git checkoutコマンドの機能が多いことにより、git restore,git switchに機能を分けるという経緯から生まれました。では細かい機能について見ていきます。
## git switch
ブランチを切り替えるためのコマンドです。https://git-scm.com/docs/git-switch
既存のブランチに切り替える場合
“`
git switch
“`
新しいブランチを作成し、かつ切り替える場合
“`
git switch -c
“`同じ名前のブランチがある場合に、上書きして切り替える場合
“
git diff
for /f “delims=” %f in (‘git diff –name-only origin/
/ ‘) do (
mkdir diff_files\%~pf
xcopy /Y %f diff_files\%f
)
Git_作業ディレクトリとステージングエリア
#### 作業ディレクトリ(Working Directory)
作業ディレクトリとは、パソコンで確認できるディレクトリのことです。たとえば、私の`learngit`フォルダが作業ディレクトリです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809422/e7669e55-bf27-baf7-530d-7da8c3d7b595.png)
#### リポジトリ(Repository)
作業ディレクトリには`.git`という隠しディレクトリがあり、これは作業ディレクトリではなく、Gitのリポジトリです。
Gitのリポジトリには多くのデータが保存されていますが、その中でも最も重要なのは`stage`(または`index`とも呼ばれる)と呼ばれるステージングエリアです。また、Gitは自動的に最初のブランチ`master`と、その`master`を指すポインタ`HEAD`を作成します。
![image.png](https://qiita-image-store.s3.ap
Git何もわからん。ReactのフォルダをPushさせてくれ。
## GithubにローカルフォルダをPushをしたい
GithubにPushすれば、何かいいことがあるらしい。
今回はローカルで作成していたReactアプリのフォルダをPushした。## 手順
ブランチを移動・なければ作成する。
“`
git checkout ブランチ名#ブランチの作成されてない場合は以下。
git checkout -b ブランチ名
“`ローカルフォルダの準備
すでに作成したReactプロジェクトのフォルダに移動します。
“`
cd フォルダ名
“`
Gitリポジトリを初期化します。
“`
git init
“`
GitHubで作成したリポジトリをローカルリポジトリに紐づけます。
“`
git remote add origin https://github.com/あなたのユーザー名/リポジトリ名.git
“`
ReactプロジェクトをGitHubにpushする
すべてのファイルをステージングエリアに追加します。
“`
git add .
“`
ファイルをコミット(保存)します。
“`
git commit -m “初め
VscodeのAll Changesが表示されなくなる
## 問題
vscodeのソース管理(Source Control)にて受信/送信(Incomming/Outgoing)タブが表示されない![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706631/760ca744-f014-21ca-ef79-367c9351982c.png)
## 原因
vscodeのバージョンを`1.92.2`から`1.93.0`にあげてしまったことが原因でした2024年8月のアップデート内容にソース管理の内容をソース管理グラフに移動との記載あり
https://code.visualstudio.com/updates/v1_93#_accessibility
`v1.92`に上げた際にも`All Changes`が見れなくなる問題があったが、この際はvscodeのsettings.jsonに`”scm.showHistoryGraph”: false,`を記載することで対応できた
しかし`v1.93`ではこのoptionが無効になっている
【Error】Gitが正しく処理できない恐れも!!日本語や特殊文字はだめ
# はじめに
Githubにプルリクエストをあげるより前に気づかなければいけなかったこと。おそらく初めの方で学習した内容。ですが、すっかり忘れていてError?注意の表記が出るまでちゃんと認識していませんでした。これからの為にも記事に残しておきたいと思います## 1:Githubにて気づいたエラー
[![Image from Gyazo](https://i.gyazo.com/35ba5783d07249d0e100d2ce5b76b8f8.png)](https://gyazo.com/35ba5783d07249d0e100d2ce5b76b8f8)
英文は下記になります👇
“`ruby
The head ref may contain hidden characters: “05\u30DD\u30B9\u30C8\u8A73\u7D30”
“`
#### これが何を意味しているのか> このメッセージは、Git での操作中にリファレンス(参照)名に隠れた文字が含まれている可能性があることを示しています。隠れた文字(例: 特殊文字、制御文字、または非表示文字)が
git pushを小分けにして、最大アップロードサイズ制限を回避するワンライナー
githubからgitlabへの以降などで大量のコミットをpushしようとするとアップロードサイズの制限に引っ掛かる場合があります。以下は200MB以上を一度にアップロードできない場合の出力例を示します
“`shell-session
$ git push -u origin
Enumerating objects: 42153, done.
Counting objects: 100% (42153/42153), done.
Delta compression using up to 12 threads
Compressing objects: 100% (14835/14835), done.
remote: fatal: pack exceeds maximum allowed size (200.00 MiB)
…
“`
この場合数百コミットごとにpushすることでこのエラーを回避できます。
masterブランチをおよそ256コミットずつコミットする方法を示します
“`
git log –pretty=format:”%H” –reverse | grep –
ローカルの変更を破棄して特定のコミットにリセットする手順
## 説明
Gitで作業を進める中で、ローカルでの変更を破棄して過去の特定のコミットに戻したい場合があります。その際、git reset –hard コマンドを使用することで、ローカルの変更を完全に破棄し、特定のコミットにリセットすることが可能です。本記事では、その手順を説明します。## 手順
1. コミット履歴を確認する
まず、どのコミットに戻すかを決めるために、git log で現在のブランチにあるすべてのコミット履歴を表示させます。
– コード
“`bash
git log
“`– 想定される実行結果
“`bash
% git log
commit <コミット番号> (HEAD -> main, origin/main, origin/HEAD)
Author: Your Name
Date: Wed Sep 11 11:59:40 2024 +0900<コミットメッセージ>
%
“`2. ローカルの変更を破棄する
ローカルの変更をすべて破棄して、ワーキングツリーをまっさら
リモートリポジトリにpush済みの直前のコミットとローカルのステージにある修正(未コミット)を一つにまとめてpush
## 筆者が遭遇したシチュエーション(例)
ある機能追加をするタイミングでprettierの導入をしたが、prettier分のコミットと、機能追加のコミットを分けようと思った。
* 直前のコミット
* ファイルAのprettier適用差分
* 現在の状況
* ファイルBに処理追加。保存時prettierが適用され、両方の修正が混ざった状態になった
* ファイルBのprettier分を直前のコミットに混ぜて、機能追加は別途コミットしたい## 対応
本説明ではvscodeとコマンド両方の操作が混ざっているが、以下のように対応した
### 1.ファイルBを行単位でコミットする
vscodeのgit(ソース管理)の「変更」でファイルBを選択すると、左右で差分表示される。
右ペインの変更部分の左に“`
→
+
“`
このようなボタンが出るので、prettierの変更行のみ「+」をクリックしてstageに移していく。
試してはいないが、調べたところコマンドの `git add -p` に相当する操作と思われる。
そうすると、変更分のみステージに上がる。
Claude-devの自動Gitコミットカスタムインストラクション
## 🌟 はじめに
開発者の皆さん、AIを活用してコーディングの効率を劇的に向上させる方法をお探しですか?Claude-devのカスタムインストラクションが、あなたの開発ワークフローを一新します。この記事では、Claude-devに設定できるカスタムインストラクションの内容と、その活用方法を詳しく解説します。
claude-devで自動でgitのコミットする用にカスタムインストラクションを組むとこうなります!!
(*まだAutorunが実装されてないので手動で承認してますがいずれはAutoになるはずです!!) https://t.co/5iScXCtiYO pic.twitter.com/ASoQ9n2ErE— Maki@Sunwood AI
GitHub SSH接続設定について
① GitHub用の鍵を作成する
$ ssh-keygen -t ed25519 -N “” -f ~/.ssh/github② GitHubに公開鍵を登録する
クリップボードに公開鍵をコピー
$ pbcopy < ~/.ssh/github.pub ③ GitHubの設定ページにアクセスする ![スクリーンショット 2024-06-22 19.03.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792483/6b829e86-1116-eae4-4f7b-7f300e5c1216.png) ④ 新しいSSHキーを追加する ⑤ SSH鍵をエージェントに追加する eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa ⑥ .ssh/configファイルの設定 nano ~/.ssh/configに以下の内容を追加する Host github.com HostName github.com User git Ide
Cloud LaTeXをVSCodeで使ってGit管理する
## 対象
cloud latexのアカウントを持っていることを想定する。また、Gitも使える前提。## やり方
### Cloud LaTeXをVSCodeで使う
1. [公式](https://github.com/cloudlatex-team/cloudlatex-vscode-extension/blob/main/docs/README_ja.md#%E6%BA%96%E5%82%99) を参考にして、Cloud LaTeX側の準備をする
1. **ローカルに空のプロジェクト用フォルダを作成し、VSCode でそのフォルダを開く**
(これを忘れるとVSCode で開いた場所に勝手にcloneされる)
1. [公式](https://github.com/cloudlatex-team/cloudlatex-vscode-extension/blob/main/docs/README_ja.md#%E8%A8%AD%E5%AE%9A) を参考にして、VSCode側の設定をする### Git管理する
#### 最初にやること
“`
cd プロジェクト用フォルダ
g
Gitコマンドの備忘録
Git hubに登録したので、Gitコマンドを忘れないようにメモしておく。
# はじめに
事前にGitをインストールする
Windowsの場合はGit bashを使ってユーザを登録する
“`
$ git config –global user.name “xxxx”
$ git config –global user.email “xxxxxx@gmail.com”
“`# ブランチをクローンする
Git hubのコードURLをコピーし、’git clone’する
“`
$ git clone https://github.com/XXXX/XXXXXX.git
“`# ブランチへプッシュする
コードを修正したら、コミットメッセージを記入して、プッシュする
“`
$ git commit -m ” コメント”
$ git push
“`
※pushする際にpushするブランチを指定する方法があったと思うが、それは忘れた。
GitHubのContributionを反映させる
## この記事の対象者
“`
git config user.name
git config user.email
“`
で正しい値が入力されているが、コミットしてもGitHub上のContributionが反映されない人## この記事で分かること
GitHubでのContributionの反映方法## 結論
リポジトリのデフォルトブランチにコミットする。この記事が参考になった。
https://teratail.com/questions/66531
Databricks にてノートブックが Jupyter Notebook 形式(.ipynb)で保存されてしまう事象への対応方法
## 概要
Databricks にてノートブックが Jupyter Notebook 形式(.ipynb)で保存されてしまう事象に対して、 Python ファイル形式(.py)で保存する方法として下記の方法を共有します。
1. ノートブックごとに設定を変更する方法
1. フォルダのエクスポート/インポートにより置換する方法Databricks では表示上は Notobooke 形式であるが内部では Python 形式で保持されていました。それを意識するタイミングとしては、 Git にてコードを管理する場合などでした。ある時から、Python ファイル形式ではなく、Jupyter Notebook 形式(.ipynb)で保持できるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/50f35812-0306-c04f-a8f3-4fabf8d800fb.png)
引用元:[Databricks Git フォルダーでファイル資産を管理する – Azur
【Linux】特定ディレクトリ(リポジトリ)直下の全てのファイル情報を一度に取得する
# はじめに
特定ディレクトリ(カレントディレクトリ)直下にある、ファイルの情報を一度に取得するコードです。私はこのコードの作成背景にあたり、以下の状況にありました。
– 状況
Gitのリモートリポジトリを別のサービスに移行する。
この時、元のリポジトリをA、Aと全く同じコードをプッシュした新しいレポジトリをBとする。
– 問題点
特定ディレクトリ(レポジトリ)直下にあるすべてのファイルの容量、ハッシュ値が全て同じかどうかをチェックする必要がある。
だが、フォルダが大量にあるため、いちいちコマンドを打つのは手間そこで、ShellScriptを使って半自動化しようというわけです。
# 目的
– リポジトリAとリポジトリBが全く同じかを確認するために、交互にチェックアウトした状態で、すべてのファイル容量、ハッシュ値をエビデンスとして取得する
– 取得したデータの差分をチェックする# 手順
私の状況では、手順5まで行いましたが、ただ単に情報を取得するだけの場合、手順2まででOKです。
“`
#!/bin/bach
TRAGET_DIR=”.”
find “$TARGET_
ローカルリポジトリをダイエット!不要なGitブランチを瞬時に整理するワンライナーコマンド
# はじめに
今回は、不要になったローカルブランチを自動的に削除するコマンドを紹介したいと思います。不要になったローカルブランチというのは、リモートではすでにマージされ削除されたブランチと対応するローカルブランチを指します。
開発をしているとどんどん不要なブランチが溜まっていき、PCの容量を圧迫することにもつながりかねません。
それに、`git branch`を打って山のようにブランチが表示されるのは精神衛生上よろしくありません。(個人の感想です)
そこで、今回紹介するコマンドを打つことで身も心もPCすらも軽くして開発に臨みましょう。
## コマンド
“`zsh
$ git fetch -p && git branch -vv | awk ‘/: gone]/{print $1}’ | xargs -p git branch -d
“`これをgitが有効なディレクトリで実行することで、不要なブランチが削除されます。
一応ですが、実行前に確認のメッセージが表示されるようにしてあります。
`y`を入力し`Enter`を押すことで実行されます。消してはいけないブラン
Dockerコンテナ内からGitリモートレポジトリへのpush方法
# Dockerコンテナ内からGitリモートレポジトリ(Githubなど)へのpush方法
## 1. 前提条件
– 開発環境であること。
– ローカル環境にDockerがインストールされている。
– ローカル環境にGitがインストールされている。
– ローカル環境におけるユーザの公開鍵をGithubに登録している。
– VSCodeに拡張機能であるDevcontainerがインストールされている。## 2. 背景
– Dockerコンテナ内からGithubへpushしたい。
– 具体的には、VSCodeを用いたDockerコンテナ内での開発ツール、Devcontainerを使用する際にGithubに修正内容をコンテナ内からcommit、pushしたい。
– 現状では、Devcontainerとは別のターミナルを開いてローカル環境からcommit、pushしている。VScodeとターミナルの2窓状態となり、作業効率が落ちる。## 3. 結論
– `Dockerfile`にてgitをインストールする
“`Dockerfile:Dockerfile
# ベースイメージは
Git サブモジュール
# サブモジュールとは
複数のプロジェクトを「別々に管理したい」が、「それぞれのバージョンの紐付けは行いたい」場合に使用される。主として利用しているリポジトリが外部のリポジトリに依存している際にそれらを簡単に管理できるようにする。
サブリポジトリはそれ自身が通常のリポジトリであるため、サブモジュール内に入り、自身のリポジトリに対してGit操作を行う際は、通常のリポジトリでの操作と何ら変わりがない。そのため、以下の説明では「リポジトリA」内に「リポジトリB」をサブモジュールとして追加した場合、「リポジトリA」を**親リポジトリ**、「リポジトリB」をサブリポジトリと呼ぶことにする。
サブモジュールは親リポジトリと紐づいているが、親リポジトリから独立したサブモジュール自身のコミット履歴を保持している。
# 親リポジトリの生成
`parent`ディレクトリを生成する。
“`console:
$ mkdir parent
“``parent`ディレクトリにリポジトリを生成する。
“`console
$ cd parent
parent/$ git init
“`リ
AWS CloudFormation で Git Sync を試してみた
# はじめに
AWSでゼロからサイトを作る機会ができたので、表題の機能を使用してサイト構築をしてみた。
今ひとつ知見が足りないというか、説明読んでも、エッセンシャルな要素と、設定を同時に試みてるせいで、両者の区別が付かず、参考になる指標が分からなかったので、実際の手を動かしてみた結果から各フェーズで必要となる要素をまとめてみた。# 前提条件
– とりあえずクラウドフォーメーションやIAM等は知ってる前提として説明します(設定方法がわからない、は無しで)。
– GitHubとの連携を前提として他のサービス[^services]との連携については見なかった物とします。
– GitHub側の権限問題や `AWS CodeConnections`[^codestar] についての詳細は省きます。
– とりあえずの初期設定はIAMユーザーによる操作[^rootpriv]を行うものとして、その際 `AdministoratorAccess` ポリシーが適用されているものとします。クラウドフォーメーションやIAMロール等の、必要な操作に絞った権限でどこまでできるかのチキンレースはしません(伏線)