2016-10-26 10 views
0

私はコースの課題をしており、自動テストシステムがあります。特定のタグを持つGitリポジトリ内のファイルをテストします。タグ付きコミットからファイルを変更することはできますか?

main.cpp 
header1.h 
header2.h 
source1.cpp 
source2.cpp 

を、私はタグA1でそれらをタグ付け:たとえば、私はファイルをコミットします。

タグがコミットにバインドされていて、ファイルにバインドされていないことを知っている限り、タグを追加すると、最後にコミットされます。自動化されたテストケースに失敗し、ファイル内の何かを変更したい場合は、すべてのファイルとタグを削除してから再読み込みして再設定し、古いタグを削除して新しいタグを作成する必要があります。異なるテストケースがたくさんあるので、これにはかなりの時間がかかります。私は、すべてのファイルを削除して再アップロードする必要がないように、最後のコミットでファイルを変更できる方法があるかどうか疑問に思っていました。

私が上記のコミットをしてテストケースに失敗した場合、私はすべてのファイルを削除し、そのタグを削除した後、再びすべてのファイルを再コミットし、新しいタグA1を与えてテストシステムを見つけます更新されたバージョン。既存のタグの下でファイルを変更するオプションはありますか?

答えて

2

Gitでは、コミットは変更できないため変更できません。タグがコミットを指しているので、この状況を修正する唯一の方法はタグを移動することです。

まず、すべてのファイルを削除する必要はありません。ちょうどあなたが必要な変更を加えて、再びコミット:

# edit files 
git add . 
git commit 

これは(おそらくmaster)新しいあなたの現在のブランチ上のコミットを作成します。

次に、How can I move a tag on a git branch to a different commit?で説明したように、タグ移動:

git push origin :refs/tags/A1 
git tag -f A1 
git push origin --tags 

はあなたが強制的に更新することができ、このようなタグを、しかしタグは枝とは異なり、移動しないように設計されています。このため、タグではなく、特定のブランチを構築するためにテストシステムを設定できるかどうか、先生/教授に尋ねることができます。そうすれば、代わりにこれを行うことができます:

git checkout master 
# do work, commit, push 
# when ready to test: 
git checkout A1 # now a branch 
git merge --ff-only master 
git push origin A1 
関連する問題