我有一些关于Grit / Git的问题,希望你能帮助我。这是我的代码:
# create Repo
r = Repo.init_bare 'myrepo.git'
i = r.index
# first commit to master
i.add('myfile.txt', 'my file contents')
i.commit("This is my commit")
# second commit to master
i.read_tree("master")
i.add('myfile2.txt', 'my file 2 contents')
i.commit("This is my second commit", [r.commits.first])
# first commit to newbranch
i.read_tree("master")
i.add('myfile3.txt', 'my file 3 contents')
i.commit("This is my third commit", [r.commits.first], nil, nil, 'newbranch')
# second commit to newbranch
i.read_tree("newbranch")
i.add('myfile4.txt', 'my file 4 contents')
i.commit("This is my fourth commit", [r.commit("newbranch")], nil, nil, 'newbranch')
使用此代码我正在尝试创建一个repo,提交两次master,从master创建一个新分支,并向该分支提交两次。但问题是,当我这样做时:
r.commits("newbranch") # => 3
它说“newbranch”只有3次提交。它在master上省略了第二次提交。这是为什么?我的代码有问题吗?
我最困惑的是如何在分支时指定父提交,以及在“newbranch”上进行第二次提交时。
希望你能提供帮助。感谢
答案 0 :(得分:3)
API.txt文件说这尚未实现为本机库实现。但是,您仍然可以绕过任何库实现,使用:
r.git.native :checkout, {}, 'my_branch'
查看Grit源代码的git.rb以获取更多详细信息。
答案 1 :(得分:2)
目前,这是我提交给特定分支的解决方案:
index = repo.index
index.read_tree( branch )
index.add( path_to_a_file, file_data )
c = repo.commits( branch )
index.commit( comment, repo.commits( branch ), nil, nil, branch )
最后一行允许提交到特定分支而不检查它。此外,除非您不想丢失索引,否则需要调用read_tree函数。
答案 2 :(得分:-1)
只是做:
r.checkout(r.branch( 'newbranch'))
然后进行提交。