On 2009.11.02 16:08:25 +0100, Markus Hitter wrote: > The situation I'm trying to solve is: > > - A revision earlier than the latest one is checked out. > > - Files of this earlier commit are modified. > > - I want to record this earlier commit along with it's modifications > as a new commit on top of master, ignoring intermediate commits: > > com005 <-- master > com004 > com003 <-- HEAD, files modified > com002 > com001 (initial commit) > > One solution to do this is to move all files somewhere else, check > out master, deleting all checked out files, placing the moved away > files back into place and committing the result as com006. > Obviously, this is a pretty complex operation, just waiting to > exploit coding mistakes. Additionally, this will be slow. Instead of doing "git checkout com003", which detaches HEAD, you could do: git read-tree -u --reset com003 Which will update the index and working tree to reflect the contents of com003. The modify stuff, add, commit, done. > Now I'm thinking about a much simpler solution: Simply declare the > current set of files as (a modified) master/com005 and commit them. > A "cp $GIT_DIR/master $GIT_DIR/HEAD" followed by a commit would do > it. > > Now my question: Is it safe to tweak the files in $GIT_DIR this way > or will this corrupt the repository? Ignoring that $GIT_DIR/master is the wrong path, that 'cp' would (at best) act like detaching HEAD. Björn -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html