今さら聞けないGit 2023年08月23日

今さら聞けないGit 2023年08月23日

gitでブランチ移行

NetBSDのtrunkをforkして時々pullしていたのですが、大量にコンフリクトが発生してpullできなくなりました。

おそらくgcc12が入ったタイミングでなにかがおかしくなったんだと思います。もともとNetBSDはgitはミラーでCVSでソースは管理しているのでしかたがありません。

仕方ないので、いったんnetbsd-10ベースに戻すことにしました。

既存のファイルはいじって無くて、ほとんど新規のファイルなので、ファイルをコピーして再構築する事もできるのですが、せっかくなのでコミットの記録を残して移行します。

“`
git remote add upstream https://github.com/NetBSD/src.git
git fetch upstream
git checkout -b netbsd-10 upstream/netbsd-10
“`

元のブランチで自分の差分の一覧を作ります。古いのが下になるので逆にします。

“`
git log –author=”Hiroki Mori” –pretty=format:%H > /tmp/id

元記事を表示

GitLabでリモートブランチ名の変更【備忘録】

1. ローカル上で branch名変更する。
“`bash
$ git branch -m <変更前のブランチ名> <変更後のブランチ名>
“`

2. リモートの対象branchを削除する。
“`bash
$ git push –delete origin <変更前のブランチ名>
“`

3. 名称を変更したローカルbranchをプッシュする。
“`bash
$ git push origin <変更後のブランチ名>
“`

元記事を表示

Git初心者に意識してほしいたった一つのこと

# 必要なものだけコミットしようね
伝えたいことはこれ↑です。

## 必要なファイルだけコミットしよう
### 「よ〜し色々開発したぞ! それ! `git add .`だ! `git commit`だ!!」
とするのはやめましょう。
`git add . `はカレントディレクトリ配下で差分のあるファイル全てをステージングに追加します。本当にそれらを全て追加していいのでしょうか?
今取り組んでいる作業とは関係のないファイルが紛れ込んでいませんか?

### どのファイルをaddするか確認しよう
`git status`を使ってみてください。
どのファイルに変更があったのかすぐわかります。このとき本当に必要だけ差分がでていれば、`git add .`してOKです。そうでない場合は本当に必要なファイルのみをaddするようにしましょう。

### git管理する必要のないファイルは.gitignoreに指定しよう
作業しているといつの間にか作成されている知らないファイルが紛れ込んでいることはありませんか?
そのようなファイルは何に必要なのか、git管理するべきなのか調べてみましょう。何も考

元記事を表示

【Git】Your branch is up-to-date with ‘origin/master’

# はじめに
### 「Your branch is up-to-date with ‘origin/master’」とは
* 翻訳すると「`あなたのブランチは ‘origin/master’ と最新`」
* ローカルのブランチがリモートの ‘origin/master’ ブランチと同じ状態で、追加の変更がないことを示している
なんか似たようなエラーばかり出るから、やろうとしてることと起きたミスは同じみたい
# 原因
* ローカルブランチがリモートブランチと同じ最新のコミットを持っていて、新たな変更がないから追加の更新が必要ないという状況でメッセージ?が表示される
# 解決策
1. git statusでファイルの状態を確認する
“`
git status
“`
2.リモートの最新情報を取得する
“`
git fetch origin # リモートの最新情報を取得
“`
# おわり
* コミットがない限り、このメッセージが表示される
* エラーというよりメッセージか
* とりあえず`git status`で確認
> 参考文献 : [git statusでファイ

元記事を表示

NOEOL?No Newline at End of File?

## 経緯
最近PRレビューコメントに、
「No Newline 〜を削除」「EOL入れたい」のコメントをいただくので調べてみました。
## 結論
エラーメッセージは、
「ファイルの末尾が改行じゃない」「コード行末に改行がない」ということらしい。
## …What do you mean?!
https://bottoms-programming.com/archives/indent-tab-space-and-new-line.html
こちらの記事がとても分かりやすかったです。

> テキストファイルとは、いくつかの行の集合である。
> そして、行とは改行コードで区切られるまでの、一連のテキストデータの連続である。

なるほど!?

「C, C++」では、改行なしのソースファイルは誤作動を引き起こすらしいです。
(未定義扱いになるため)

確かに対応した方が良さそうだなと感じてきた。。

でも毎回チェックするのめんどくさいな。

## エディタ(VScode)に設定しちゃえば良いのか!
setting.jsonで以下の文を追加っと。

“`json:setting.json

元記事を表示

【Git】エラー : ‘origin’ does not appear to be a git repository

# はじめに
### ‘origin’ does not appear to be a git repositoryとは
* 翻訳すると「`’origin’ は Git リポジトリではない`」
# 原因
* リポジトリがない
# 解決策
* リポジトリを取得する
“`:リポジトリの取得
  git remote add origin “リポジトリ名(URL)”
“`
# おわり
> 参考文献 : [【Git】’origin’ does not appear to be a git repository【初めてのバージョン管理】](https://god48.com/git-origin-does-not-appear-to-be-a-git-repository)

元記事を表示

Please enter the commit message for your changes. Lines starting with ‘#’ will be ignored, and an empty message aborts the commit. 解決法

# 概要
vscodeで以下のメッセージがでたときの対処法。

“`
Please enter the commit message for your changes.
Lines starting with ‘#’ will be ignored, and an empty message aborts the commit.
“`

# 解決法

上記は「コメントを書いてください」という内容です。
vscodeには「コミットしてプッシュ」がありますが、それを使わず下記で行います。

1. コミットを選択
2. commentを書く
2. プッシュ

元記事を表示

Learn Git Branching | “origin”とその先へ — Gitリモート上級編

## 機能別のブランチ(フィーチャーブランチ)をマージする
大きなプロジェクトの開発者にとって、フィーチャーブランチ(mainを除く)上で全ての作業を行い、完成したら一度でその作業を統合するというような流れが一般的です。これは前のレッスンの内容(他のブランチからリモートにプッシュされるような状況のところが)に似ていますが、ここではもう一歩踏み込んで解説しましょう。

開発者は、mainブランチにいるときプッシュとプルしかしません — mainは常にリモート(o/main)に追従した状態のままにします。

この作業の流れでは、私たちは二つのことを組み合わせています:

mainにフィーチャーブランチの作業を統合し、
リモートへのpushとpullを行う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490027/cb7d92ee-5ee7-29ad-afd1-d0751167495a.png)
![image.png](https://qiita-image-store.s3.ap-n

元記事を表示

【Git】fast-forwardについて

## fast-forwardとは?
fast-forward = 早送りの意味

**あるAブランチ**と**Bブランチ**を比較した際に、前者(A)が後者(B)をcommitとして含まれている(進んでいる)形となっている事

“`git
git log remotes/origin/otoro
commit 80c803c810eab02295e29f573a3705c4787b78cd (origin/otoro)
Author: Atsushi Ishida
Date: Mon Apr 11 23:26:35 2022 +0900

add another html

commit 9e4f4ec75d266ab405339d3ef98b1fb65dc0968d (origin/oyster)
Author: Atsushi Ishida
Date: Fri Apr 8 22:49:43 2022 +0900

add oyster log

commit

元記事を表示

【Git】Your branchesとActive branches

# はじめに
“`
git push -u origin master
“`
上記のコマンドを実行したときデフォルトブランチが`main`の時にGitHubのデフォルトブランチの下に`Your branches`と`Active branches`が出てきた。
気になって調べたが説明する記事が出てこなかったのでChatGPTにきいた
# Your branchesとActive branchesとは
* インストールしたソースツリーの表示の仕組みに関連するものらしい。(これが本当なのかわからない)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2726212/ccfd1c17-99f8-a411-9bdc-05f13a65d840.png)
### Your branches
* 自分が作成したローカルブランチが表示される。
* 開発中の作業を保持するための場所。
* 他のメンバーと共有せずに作業を進める際に便利。、
* 自分が作成したブランチを容易に見つけて切り替えることが

元記事を表示

Gitの差分ファイルのみzipにするWindowsバッチファイル

# 内容
「変更ファイルだけ指定した場所に納品して」のように言われた場合に使えるバッチファイルを作成しました。

検索すると、bash用のコマンド(git archiveとgit diffを組み合わせたもの)は見つかるのですが、Windowsのコマンドラインで同じことをするのは難しい為、今回作成したものです。

# 仕様
ファイルパスはダブルコーテーションで囲うようにしている為、ファイスパスにスペースが含まれていも正しく動作します。

また、差分ファイルの一覧を表示してくれる為、表示結果をコピペしてドキュメントやメールに貼ったりもできます。

バッチファイルをパスの通った場所に置き、以下のように使用します。

“`shell
git_archive_diff.bat HEAD~1 HEAD archive.zip
“`

上記の例では、HEAD~1とHEADの差分ファイルのみをHEADからgit achiveし、archive.zipという名前でカレントフォルダに保存します。

# git_arcive_diff.bat

以下のバッチファイルをパスの通った場所に置きます。

元記事を表示

【Git】エラー : failed to push some refs to

# はじめに
### 「failed to push some refs to」とは
* 直訳すると「`一部の参照をプッシュできない`」
* `git push` コマンドを実行した時に一部のブランチやタグをリモートリポジトリにプッシュできなかったことを示す
# 原因
* よくエラーを読んでいなかったので詳細はわかりませんが、リモートとローカルのブランチでリモートだけが更新されている状態で、差分が生まれプッシュを拒否されたと思います
# 解決策
* リモートリポジトリの変更を取り込む
`git pull`した後、`git push`する
“`Git
git pull origin master
git push origin master
“`
* 強制的にプッシュする
ローカルリポジトリの履歴をリモートリポジトリに強制的にプッシュすることで、同期を試みる
“`
git push –force origin master
“`
# おわり
> gitのエラーに出てくる`fatal:`は「致命的」
> * 参考文献 : [【git】error: fail

元記事を表示

git 間違えてmergeしたcommitを取り消したい

# mergeを取り消すgitコマンド
先日githubで間違ったブランチに対してPullRequestを出してしまい、コンフリクトが発生したので、そのまま解消してmergeしてしまいました。
後で間違っていたことに気づき、なんとかmergeを打ち消す事ができたので、その時の方法を備忘録として残しておきます。

結論から言うと`git revert -m 1 [コミット番号]`を叩くことで無事にmergeコミットを打ち消せました。
取り消しではなく打ち消しです。

初めに`git revert [コミット番号]`を実行するもエラーが発生。
オプションに `-m`を指定してくださいと言うエラーだった。

なので、次に`git revert -m [コミット番号]`を実行するとこれも失敗

エラーを検索して解決方法を調べてみると、どうやら`git revert -m 1 [コミット番号]`で実行できたらしい記事を発見したので、それを実行。

無事にコミットを打ち消す事ができました。
だいぶ焦りましたが、なんとか解決できてよかった。

ちなみに`git reset [コミット番号]`というコ

元記事を表示

git push時のerror: src refspec master does not match anyについて

Git Hubの学習中、リモートリポジトリへの送信する際、ターミナル上でpushしようとした際に出たエラーについて、少してこづった為、解決策として備忘録を残そうと思います。

git psuh origin master
をターミナル上に入力し、実行した結果、下記のようなエラーが表示されました。
![スクリーンショット 2023-08-20 21.48.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515122/5462fa4f-cd2e-6650-4842-ab2e911af694.png)
masterが一致しないということなのですが、初学者の私には理解できませんでした。
ググった結果、
![スクリーンショット 2023-08-20 21.50.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515122/da6e5f33-61b4-38a9-cb69-789043ef6ff2.png)

とすることで

元記事を表示

Learn Git Branching | Git Fetch

リモートリポジトリ_から_データを取ってくる方法を学びます — このコマンドはgit fetchと名付けられています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490027/c1b227d5-2a24-a068-bbc7-531c02eab72e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490027/283874c1-51ea-87c2-5e5b-864da4c61ded.png)

**fetchとはどのようなものか**
git fetchは、主に二つのステップだけで動作します。それは以下のようなものです:

リモートにあってローカルリポジトリにないコミットをダウンロードする
リモートブランチの位置を更新する(例えば、o/main)
git fetchは本質的には、_実際_のリモートリポジトリと同じように見えるような形でリモートリポジトリの_ローカル_の情

元記事を表示

gitignoreしていないのに変更・追加した差分が認識されない

# 発生した現象
`rails-react-matching-app`というリポジトリ内で
`backend`というディレクトリを作成し色々とファイルを追加したのですが、
いざgitで差分を確認すると`backend`というディレクトリしか認識されておらず、
その中に追加されたファイルの差分は出ていませんでした。

以前にもハマってその時はなんとか解決したのですが、
解決方法を忘れてしまい2度目のハマりポイントだったので記事にしようと思いました。

## 実行したコマンド
新規リポジトリを作成した後、
ディレクトリと諸々のファイルについてはこんな感じのコマンドで作成しました。

“`plaintext
$ mkdir backend && cd backend
$ touch Dockerfile docker-compose.yml entrypoint.sh Gemfile Gemfile.lock
“`

## 実際の状態のスクショ
こんな状態でした。

`backend`というディレクトリの差分は出ているのですが、
中身のファイルについては何一つ差分が出ておらず。

![

元記事を表示

GitHubでの(SSH)Authentication/Signing Keyの設定

CLIでの認証/署名の設定手順をメモとして書き残しておきます。あくまでも最低限動くレベルのもので、ファイル名やパスフレーズにその他色々は、それぞれ適切に設定してください。

“`bash:bash
cd ~ &&\
git config –global user.name &&\
git config –global user.email &&\
git config –global user.signingkey ~/.ssh/signing-key.pub &&\
git config –global commit.gpgsign true &&\
git config –global gpg.format ssh &&\
# id_ed25519 and id_ed25519.pub are generated in ~/.ssh/
ssh-keygen -t ed25519 &&\
# signing-key and signing-key.pub are generated in ./
ssh-keygen

元記事を表示

複数のコミットをまとめる方法

# 0. まとめ

1. rebase -i でコミットをまとめる(例:`git rebase -i HEAD~2`)
2. テキストエディタが開くので、集約先の `pick` はそのままにして、集約によって消したいコミットの `pick` を `s` または `squash` に変更する
– vim の場合、`:wq` で保存して終了
3. 再度テキストエディタが開くので、残したいほうのコミットのコメントを編集。
– vim の場合、`:wq` で保存して終了
3. `git push -f origin (ブランチ名)` でプッシュ

# 1. コミットをまとめるときに注意すること

– 共同開発のリモートブランチに安易に git push -f するのは危険なので注意すること
– `push -f` はリモートリポジトリに既に公開されているコミット履歴を改変してしまうので、他のメンバがpushしたコミットを上書きしたり削除してしまう可能性があります。

# 2. 詳細手順

rebase -i でコミット2つをまとめたいとする。

ひとまず `git re

元記事を表示

【コード管理/GitHub】git pushしてもEverything up-to-dateと言われてリモートリポジトリにpushできない

# 今回の課題
ローカルの`feature/1`ブランチ内でコードを変更して以下のコマンドを実行したのだが、
`Everything up-to-date`と言われてしまい、リモートリポジトリに変更したコードを反映させることができなかった。
“`cl
$ git add .
$ git commit -m “message”
$ git push origin main
“`
`$ git log`でファイルの変更がcommitできていることが確認することができたので、**`$ git push`がうまく実行できていない**ことが原因のようだった。

## 解決策
結論から言うと、以下のコマンドを実行することで解決することができた。
以下のコマンドは、ローカルブランチ(`feature/1`ブランチ)のリモート追跡ブランチを設定している。
“`bash
# リモート追跡ブランチを設定
$ git branch -u origin/feature/1
# git branch -u <リモート追跡ブランチ>

# リモート追跡ブランチを設定してからpushする
$ git add

元記事を表示

Windows の PowerShell(posh-git) で git を利用する

## はじめに

Windows の PowerShell(posh-git) で git を便利に利用する手順をあらためて整理しました。
過去の投稿から最低限必要な個所のみ抜粋して更新しています。

## 前提

* Windows 11 での手順となります。
* PowerShell 7 がインストールされていること。(PowerShellでgitを操作します。)
* Visual Studio Code がインストールされていること。(VSCodeでgitの設定を行っています。)

## Git のインストール

* Git for Windows をダウンロードします。

[Git – Downloading Package](https://git-scm.com/download/win)

* ダウンロードしたセットアップ(例:Git-2.41.0.3-64-bit.exe)を実行します。

* インストール先のパス(例:D:\Develop\Bin\Git)を指定します。

> スペースや全角文字を含まないパスが良いです。

* 「Select Componen

元記事を表示

OTHERカテゴリの最新記事