2

皆さん、よろしくお願いします。

レポにやや奇妙な問題があります。最初はコミットするmasterブランチしかありませんでしたが、アプリケーションの機能バージョンを完成させた後、 developブランチを作成して開発を続けることにしましたが、マージする気がするまでmasterで作業バージョンをそのままにしておくことにしました。

現在(を使用してgitk --all)私のgitロググラフは次のようになっています:

                             鬼ごっこ
                              | |
*----*-----*-----*-----*------*------*------* マスター & 開発
                                     \ \
                                      --------*----* 開発 (HEAD)

これを引き起こすために何をしたかはわかりませんが、開発ブランチを作成するために行った手順は次のとおりです。

$ git checkout develop
$ vim example.txt
$ git add .
$ git commit -m "first file in develop"
$ git push origin develop 

この後、gitkを確認するまで、develop ブランチを検討しました。

私が欲しいのは(そして、gitブランチを使用する正しい/健康的な方法だと思います)は次のとおりです。

                            鬼ごっこ
                             | |      
* -  - * -  - -* -  - -* -  - -* -  - -* -  - -* 主人
                                    \
                                     *-----*-----* 開発 (HEAD)

リポジトリを上の図のようにするにはどうすればよいですか?

編集#1:

developmentgit reflogからの出力:

54d8daf HEAD@{0}: reset: moving to HEAD@{15}
45dcaa7 HEAD@{1}: rebase finished: returning to refs/heads/develop
45dcaa7 HEAD@{2}: rebase: added another sanity check for cli parameters
f3b0f8b HEAD@{3}: rebase: I am working on getting the console improved, this including better color, and more cammand options
8c48bab HEAD@{4}: checkout: moving from develop to 8c48babb10ec2f8f28f364ce57b5095cb080c133^0
54d8daf HEAD@{5}: checkout: moving from master to develop
8c48bab HEAD@{6}: checkout: moving from develop to master
54d8daf HEAD@{7}: rebase: aborting
3bf3f64 HEAD@{8}: commit: rebase
6aa82d8 HEAD@{9}: rebase: added another sanity check for cli parameters
a9be651 HEAD@{10}: rebase: I am working on getting the console improved, this including better color, and more cammand options
8c48bab HEAD@{11}: checkout: moving from develop to 8c48babb10ec2f8f28f364ce57b5095cb080c133^0
54d8daf HEAD@{12}: rebase: aborting
7890b76 HEAD@{13}: rebase: added another sanity check for cli parameters
46847d7 HEAD@{14}: rebase: I am working on getting the console improved, this including better color, and more cammand options
8c48bab HEAD@{15}: checkout: moving from develop to 8c48babb10ec2f8f28f364ce57b5095cb080c133^0
54d8daf HEAD@{16}: commit: changed the how function, it seems I was right, wc counts all lines regardless of readable symbols or not.
13d35ed HEAD@{17}: commit: am working on the how function (should be trivial, but I have a bad feeling)
852fb68 HEAD@{18}: commit: I have added some more commands (thought not fully implemented), but more specifically I have changed the pattern matching
33dfc9f HEAD@{19}: commit (merge): change some output settings, asthetics and such. I am working on getting more command options for list previous lin
a248465 HEAD@{20}: commit (amend): added another sanity check for cli parameters
f0ca508 HEAD@{21}: commit (amend): added another sanity check for cli parameters
9e24e91 HEAD@{22}: commit: added another sanity check for cli parameters
0194cab HEAD@{23}: commit: I am working on getting the console improved, this including better color, and more cammand options
8c48bab HEAD@{24}: checkout: moving from master to testing
8c48bab HEAD@{25}: commit: I think I have wroked out all of the import bugs, the rest is really just esthetics, welcome version 1
b306d9f HEAD@{26}: commit: as it turns out it was easier then I thought, plus I fixed an incorrect append method
8445a25 HEAD@{27}: commit: seems I miss understood how bash case statments handles regex, or should I say pathname expansion matching
9fc5132 HEAD@{28}: commit: lol, totally forgot to use the function 'run' to get things going
ee2a2c7 HEAD@{29}: commit: seems I haven't yet figured out how to correctly parse cli args...
bb0fd28 HEAD@{30}: commit: fixed incorrect sanity check
eb3db1d HEAD@{31}: commit: have reached a stage I could refer to a working test system, which is what I am going to do.
4bfd53b HEAD@{32}: commit: added a lot more colours (am using a list from arch-wikis), incorporated much better error handling
2d9b598 HEAD@{33}: commit: getting there part 1
0edfcae HEAD@{34}: commit: output functions so far
06130a7 HEAD@{35}: commit: modularized two printing function into a seperate script
e0033b8 HEAD@{36}: commit (initial): used some functions from previous bash script, maybe I should create a generic script for text output...?

誤って、リベースを実行しようとしましたが、すべてのマージ試行で失敗しました。git diffファイル (--theirsおよび) の異なるチェックアウトで使用して--oursも、リモートとローカルに違いはありませんでした。だから私は commit に戻って頭をリセットしHEAD@{15}ます。

編集 #2: 混乱を招いて申し訳ありませんが、図 1 の「マスター & 開発」は、両方のブランチ (マスター開発) が単一の「ストリーム」に結合されていることを示しています。それがより理にかなっていることを願っています。

編集#3:

からの出力git log master --pretty=oneline

8c48babb10ec2f8f28f364ce57b5095cb080c133 I think I have wroked out all of the import bugs, the rest is really just esthetics, welcome version 1
b306d9f58c3ebab03364c4381754bc87db9e7f2d as it turns out it was easier then I thought, plus I fixed an incorrect append method
8445a258fc388eba5b920de57b1f390623da87a0 seems I miss understood how bash case statments handles regex, or should I say pathname expansion matching
9fc5132c30bdf2ab143ad046493326ba63e4300d lol, totally forgot to use the function 'run' to get things going
ee2a2c7ff69498a80e9fc5f36cc340f6e1b95bcb seems I haven't yet figured out how to correctly parse cli args...
bb0fd28c89a0c16c379774b7fc5768a4160d6852 fixed incorrect sanity check
eb3db1d055b45793fb9a3fd5f884926687f7b8dd have reached a stage I could refer to a working test system, which is what I am going to do.
4bfd53b3af85d82aea11871a0ddb7f9d583cfb73 added a lot more colours (am using a list from arch-wikis), incorporated much better error handling
2d9b598d77e2b62611dfd2e42b183d0262880014 getting there part 1
0edfcae88e6eae66de4fae1788433d83b90a1c37 output functions so far
06130a7288ce26b4a2235864f7cd5b48a35dcea6 modularized two printing function into a seperate script
e0033b8f440f2ffb7b9a120f5a9be9ea167e1e30 used some functions from previous bash script, maybe I should create a generic script for text output...?

の出力git log develop --pretty=oneline

54d8daf475a5e1108cd6345850245db2d0e6fd80 changed the how function, it seems I was right, wc counts all lines regardless of readable symbols or not.
13d35ed979de3518eca26961f3be4bb0b7d8de03 am working on the how function (should be trivial, but I have a bad feeling)
852fb68b8ca929e1156e38e2a58a12f07bd9aaa5 I have added some more commands (thought not fully implemented), but more specifically I have changed the pat
33dfc9f187a54dc7234c9ca31bee91eef7c89a98 change some output settings, asthetics and such. I am working on getting more command options for list previo
a2484654eff741f4c625f8cb097fbb92f6ac8b9b added another sanity check for cli parameters
9e24e9157157f128f75b3d7859875d06d33137bd added another sanity check for cli parameters
0194cab8af66656bb9fe83c919409354f6d12edc I am working on getting the console improved, this including better color, and more cammand options
8c48babb10ec2f8f28f364ce57b5095cb080c133 I think I have wroked out all of the import bugs, the rest is really just esthetics, welcome version 1
b306d9f58c3ebab03364c4381754bc87db9e7f2d as it turns out it was easier then I thought, plus I fixed an incorrect append method
8445a258fc388eba5b920de57b1f390623da87a0 seems I miss understood how bash case statments handles regex, or should I say pathname expansion matching
9fc5132c30bdf2ab143ad046493326ba63e4300d lol, totally forgot to use the function 'run' to get things going
ee2a2c7ff69498a80e9fc5f36cc340f6e1b95bcb seems I haven't yet figured out how to correctly parse cli args...
bb0fd28c89a0c16c379774b7fc5768a4160d6852 fixed incorrect sanity check
eb3db1d055b45793fb9a3fd5f884926687f7b8dd have reached a stage I could refer to a working test system, which is what I am going to do.
4bfd53b3af85d82aea11871a0ddb7f9d583cfb73 added a lot more colours (am using a list from arch-wikis), incorporated much better error handling
2d9b598d77e2b62611dfd2e42b183d0262880014 getting there part 1
0edfcae88e6eae66de4fae1788433d83b90a1c37 output functions so far
06130a7288ce26b4a2235864f7cd5b48a35dcea6 modularized two printing function into a seperate script
e0033b8f440f2ffb7b9a120f5a9be9ea167e1e30 used some functions from previous bash script, maybe I should create a generic script for text output...?

の出力git log master...develop

コミット 54d8daf475a5e1108cd6345850245db2d0e6fd80
作者: ハンス
日付: 2012 年 6 月 21 日 (木) 21:27:14 +0200

    how関数を変更しました。私が正しかったようです。wcは、読み取り可能なシンボルに関係なく、すべての行をカウントします。

コミット 13d35ed979de3518eca26961f3be4bb0b7d8de03
作者: ハンス
日付: 2012 年 6 月 21 日 (木) 21:09:44 +0200

    how関数に取り組んでいます(些細なはずですが、気分が悪いです)

コミット 852fb68b8ca929e1156e38e2a58a12f07bd9aaa5
作者: ハンス
日付: 2012 年 6 月 21 日 (木) 20:58:16 +0200

    さらにいくつかのコマンドを追加しました (完全には実装されていないと思われます)。具体的には、パターン マッチングをわずかに変更しました。

コミット 33dfc9f187a54dc7234c9ca31bee91eef7c89a98
マージ: a248465 9e24e91
作者: ハンス
日付: 2012 年 6 月 21 日 (木) 20:42:56 +0200

    いくつかの出力設定、美学などを変更します。リストの前の行などのコマンドオプションをさらに取得することに取り組んでいます

コミット a2484654eff741f4c625f8cb097fbb92f6ac8b9b
作者: ハンス
日付: 2012 年 6 月 21 日 (木) 20:23:52 +0200

    cli パラメーターの別の健全性チェックを追加しました

コミット 9e24e9157157f128f75b3d7859875d06d33137bd
作者: ハンス
日付: 2012 年 6 月 21 日 (木) 20:23:52 +0200

    cli パラメーターの別の健全性チェックを追加しました

コミット 0194cab8af66656bb9fe83c919409354f6d12edc
作者: ハンス
日付: 2012 年 6 月 21 日 (木) 20:06:02 +0200

    コンソールの改善に取り組んでいます。これには、より良い色やより多くのカムマンド オプションが含まれます。
4

3 に答える 3

1

リポジトリを上の図のようにするにはどうすればよいですか?

「master」からブランチ「develop」を作成するには、 git マニュアルに記載されている指示に従います。 .

あなたの場合、ハンス、次のことができます (「マスター」がリモートの「オリジン」にあると仮定します):

# checkout and pull latest from master
git checkout master
git fetch origin
git pull origin master

# create the develop branch
git checkout -b develop

これで、'master' ブランチと 'develop' ブランチが明確になり、将来のコミットにより、コミット履歴が、達成したい正しい/健全な図のように見えるようになります。

于 2012-06-22T14:23:48.657 に答える
1

reflog:git reflogを任意のブランチに使用して、その参照の履歴を確認しgit reset --hard HEAD@{INDEX_HERE}、そのブランチの変更を元に戻すことができます。

最初の図は、マスター ブランチでコミットを行い、git pull内部で開発ブランチを作成した場合の状況を示しています。git pull追跡ブランチ (マスター) を現在のブランチ (開発) にマージします。

ブランチ マスターおよび開発用の reflog を公開できる場合は、それを確認できます。

于 2012-06-22T14:07:36.473 に答える
0

結局のところ、ブランチが git でどのように機能するかを誤解していました。これが根本的な問題でした。私のレポのセットアップ方法にはまったく問題はありませんでした

しかし、アレクサンダーが私に指摘したように、 の異常なマージがありa248465 9e24e91、図 1 に示すようにこの「二重コミット」が作成されています。これらのコミットは実際には同じコミットですが、SHA1 ハッシュが異なります。これは、a を誤って適用したために発生したと考えられますgit commit --amend

それらを削除する解決策は、開発ブランチをリベース9e24e91し、履歴からコミットを削除することでした。

助けてくれてありがとう!

于 2012-06-23T18:15:46.967 に答える