質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

1回答

1052閲覧

git log --oneline --graphしてもツリーが一本だけになるのはなぜ?

kamuycikap

総合スコア135

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2022/03/05 08:08

編集2022/05/07 04:26

Gitのリポジトリは、GitHub上にあります。

自分がGitを利用するときにやっている事

bash

1$ git branch aaa 2$ git checkout aaa 3 4aaaブランチであれこれ作業。 5終わったらpush 6 7$ git add . 8$ git commit -m "commit!!" 9$ git push origin aaa 10 11aaa ブランチをpushしたら、mainブランチに戻ってmerge 12 13$ git checkout main 14$ git merge aaa 15

という流れの作業が前提の条件です。

その後、表題のコマンドを実行した時にイメージとしてはこんなの
※あくまでも脳内なので雰囲気としてご理解下さいませ。。。

Image

1* d01aa7e (HEAD -> main, origin/main, origin/HEAD) RS422情報の大区分データが複数ある場合のコードだけ実装した。 2| 3* b06469a (rec_save -> main merge) Linux向けヘッダーの機器番号をパラメータで指定できるように実装 4|\ 5| * 7e7362d (rec_save) コマンドファイルの削除タイミングを、要求送信後に削除するように修正 6| | 7| * 2a52462 (rec_save) テキストファイル作成による要求送信と応答/通知受信の実装 8| | 9| * 6f20b82 (rec_save) コマンドファイル検出用タイマーの時間間隔を300msecに変更 10|/ 11* b06469a (send_cmd -> main merge)Linux向けヘッダーの機器番号をパラメータで指定できるように実装 12|\ 13| * 7e7362d (send_cmd) コマンドファイルの削除タイミングを、要求送信後に削除するように修正 14| | 15| * 2a52462 (send_cmd) テキストファイル作成による要求送信と応答/通知受信の実装 16|/ 17* 8bb34d2 Initial commit(main)

を想像していたのですが、結果は以下の通り一本道。
自分のGitの利用方法が間違っているのかわからず投稿しました。
リポジトリはGitHub上にあります。

bash

1$ git log --all --oneline --graph 2*d01aa7e (HEAD -> main, origin/main, origin/HEAD) RS422情報の大区分データが複数ある場合のコードだけ実装した。まだテストし 3ていない。 4*ef41f67 30秒ごとのCMD送信時にCSV保存していなかったので実装 5*f3de0b5 RasPi4側の送受信バイナリについて、CSVフォルダに保存する処理を実装した。RasPi4側全要求完了 6*1401561 STXとETXの受信バイナリをCSVファイル化する処理を実装 7*9a87842 30秒毎に発信するバイナリデータも保存するように実装 8*3e9fa94 ログ関連を保存するフォルダを作成し、binフォルダの中に送受信したバイナリデータを保存する処理を実装 9*8b9f55f 装置指示情報のアスキー化処理実装と、バイナリ受信データのファイル保存処理実装 10*de86a5e Linux側で取得したIDをRasPi4側で読み込む処理を実装。 11*43d6ea6 接続要求応答からIDを抜き出し、ファイルに保存する処理を実装 12*b06469a Linux向けヘッダーの機器番号をパラメータで指定できるように実装 13*6f20b82 (rec_save) コマンドファイル検出用タイマーの時間間隔を300msecに変更 14*7e7362d (send_cmd) コマンドファイルの削除タイミングを、要求送信後に削除するように修正 15*0a4b70d IDデータの入力と装置情報要求の初期データ設定 16*2a52462 (origin/send_cmd) テキストファイル作成による要求送信と応答/通知受信の実装 17*c52f7cb コマンドファイルを検知し、main側に通知する仕組みを実装。 18*22d14de プロジェクト開発のフェーズ2スタート 19*8bb34d2 Initial commit

上記の通り、なんの分岐表示もなく、ただただ時系列にPushした結果が並んでいるだけです。

これが正しいのかもわからず。
gitコマンドの使い方が間違っているのか否かわからず。

ご存じの方からのご教示を求めます。

■2022/03/06 追記
git branchした結果を追記します。

~/src/lang/go/tcho $ git branch

  • main

rec_save
send_cmd

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2022/03/05 08:12

git branch の結果を見せてください
kamuycikap

2022/03/05 09:03

依頼ありがとうございます。   ↓↓↓ ~/src/lang/go/tcho $ git branch * main rec_save send_cmd
winterboum

2022/03/05 09:48

はて、、、、 もうしわけない、私の力を超えてます
kamuycikap

2022/03/05 10:33

んーー。左様でございますか・・・・ なんだか気持ち悪くて、自分のお作法が問題なのかGitHubの問題なのか。。。 とにかく試行錯誤をして下さったこと、ありがとうございました。
hoshi-takanori

2022/03/05 11:12

git log --all --oneline --graph したら各行の先頭に * が付くはずでは…。 いずれにせよ、履歴のツリー表示は GUI の方が見やすいので、SourceTree などを使ってみては。 また、github のリポジトリを公開されてるなら、URL を教えてくれれば見てみますけど。
kamuycikap

2022/03/06 01:00

oshi-takanori様 申し訳ないです。 お恥ずかしながら、公開用のリポジトリをGitHub上に作ったことがなく、昨晩別アカウントで公開用リポジトリを作成して試してみようとしたのですが、、、、 複数アカウントを同じPCで扱う設定に試行錯誤中で、まだ公開できてません・・・ どうも私はGitで苦労する人種の様子です・・・これを機械に学びます。。
hoshi-takanori

2022/03/06 02:15

リポジトリごとに公開と非公開を指定できるので、GitHub アカウントを分ける必要はないはず…。 というか、たぶん kyokio さんの回答の通り、git merge で --no-ff を指定しなかったので --ff (fast forward) 扱いになっちゃったのでしょうね。
kamuycikap

2022/03/06 04:06

回答ありがとうございます。 アカウント名が思いっきり企業名とサービス名に直結しちゃってるんで・・・ --no-ff オプションを試してみます。 これはこの流れで質問してもルール違反にはならないのかちょっと心配ではありますが・・・ $ git branch ddd $ git checkout ddd としてあらたなブランチを作り、 $ git add . $ git commit -m "areya koreya" $ git push origin ddd とした後に $ git log --all --oneline --graph すれば、分岐していると思ってたんですが違うんでしょうか? 分岐は、git merge を実行したときに表示されるもの??? ちなみにですが、SourceTreeでも一本になっちゃってるんです。
winterboum

2022/03/06 04:13

このままだと branch ddd には何も修正が掛かっていないし、 もとになったbらんchも何も修正がかかって居ないのですから、 branch dddを作ったことによる枝分かれは まだない ですね。 ddd と もとになったbranchの両方に修正がかからないと。
hoshi-takanori

2022/03/06 04:59

git push origin ddd の直後に git log --all --oneline --graph すると * yyyyyyy (HEAD -> ddd, origin/ddd) areya koreya * xxxxxxx (main, origin/main) old commit ... って感じになるはず。 その後ローカルでマージするなら、 $ git checkout main $ git merge --no-ff --no-edit ddd $ git push origin main とすれば、git log --all --oneline --graph は * zzzzzzz (HEAD -> main, origin/main) Merge branch 'ddd' |\ | * yyyyyyy (ddd, origin/ddd) areya koreya |/ * xxxxxxx old commit ... って感じになるはず。 または、git push origin ddd の後に GitHub 上でプルリクを作ってマージしても同様になるはず。 (プルリクのマージの際に squash すると yyyyyyy はなくなりますが…。)
guest

回答1

0

ベストアンサー

fast-forwardの場合は--no-ffでマージしないと一本になると思います

参考:図で分かるgit-mergeの--ff, --no-ff, --squashの違い

投稿2022/03/05 13:18

編集2022/03/05 13:19
kyokio

総合スコア560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問