0

ファイルとサブフォルダーを含むフォルダーがあり、このフォルダーを編集しているブランチを作成し、実際にこれをコミットしました (ただし、まだマスターとマージされていません)。

ただし、マージすると問題が発生する可能性があると思います。

私のフォルダー構造が次のようなものであると仮定します。

Folder 
  - Sub-Folder A 
    - File A1
    - File A2
    - File A3
  - Sub-Folder B
    - File B1
    - File B2
    - File B3

そして今、私は次のように編集しました:

Folder 
  - Sub-Folder A 
    - File A2 (Edited)
    - File A3
    - File A4
  - Sub-Folder C
    - File C1
    - File C2
    - File C3

IE、ファイル A1 を削除、ファイル A2 を編集、新しいファイル A4、サブフォルダー B とすべてのコンテンツを削除、新しいサブフォルダー C。

コミットが新しいものと編集されたものを追加したように見え、マージしたときに削除/削除されたものがまだそこにあることを懸念しています。

これは事実ですか?もしそうならどうすれば解決できますか?

マスターから一時ブランチを作成し、フォルダーを git rm -f にし、これをマスターにマージしてフォルダーを削除し、ブランチを編集でマージする必要があると考えていました。

これは有効で実行可能なアプローチですか?

4

2 に答える 2

1

削除したファイルについて git に伝える必要があります。git status を実行すると、A/A1、B/B1、B/B2、B/B3 が削除済みとしてリストされます。状況をローカルに再作成してからファイルを削除すると、git status は次のようになります。

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   A/A4
#   new file:   C/C1
#   new file:   C/C2
#   new file:   C/C3
#
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    A/A1
#   deleted:    B/B1
#   deleted:    B/B2
#   deleted:    B/B3

A/A1、B/B1、B/B2、および B/B3 のそれぞれで「git rm」を実行し (ファイルがディスク上に存在しなくなったにもかかわらず)、それらの変更をコミットすると、すべて問題ないはずです。

それは役に立ちますか?明確にする必要がある場合はお知らせください。

于 2012-06-19T20:37:18.087 に答える
0

マスターからの作業/変更ブランチが参考になります。作業ブランチで を削除、変更、名前変更し、何かをコミットする場合。Git は適切な方法ですべてをマージします。しかし、あなたの作業とマスターブランチが私をきれいに叫ぶことが重要です。

クリーンアップには、「git add」のみが必要です。そして「gitコミット」。適切なマージのために「git rm」を使用する必要はありません。

git ステータスは次のように叫びます。この例では、削除ブランチで作業しています):

git status
# On branch remove
nothing to commit (working directory clean)

これで master ブランチに切り替えることができます:

git checkout master

マスターがクリーンかどうかを確認します。

git status
# On branch master
nothing to commit (working directory clean)

今こそ master ブランチにマージする時です

git merge remove
Updating 7989dd1..d28cdee
Fast-forward
 {B => A}/demo2 |    0
 1 files changed, 0 insertions(+), 0 deletions(-)
 rename {B => A}/demo2 (100%)

git status シャウトの出力は同じです (マージ前)

git status
# On branch master
nothing to commit (working directory clean)

必要に応じて、古いブランチをキックできます:

git branch -d remove
Deleted branch remove (was d28cdee).
于 2012-06-19T22:20:47.570 に答える