【问题标题】:create a temporary branch name with git使用 git 创建一个临时分支名称
【发布时间】:2017-09-11 09:21:47
【问题描述】:

this question 稍微相关我想在 shell 脚本中使用临时分支。

有点像:

cd $(git rev-parse --show-toplevel) &&
git subtree split --prefix=some_subfolder -b temp &&
git push my_remote temp:publication_branch -f

现在,如果分支 temp 已经存在,我不确定这会做什么,无论如何我不希望 my_remote/publication_branch 上的结果依赖于此。而且我也不想修改分支temp(假设我有它不相关的东西)。充其量,我也会在最后进行清理

cd $(git rev-parse --show-toplevel) &&
git subtree split --prefix=some_subfolder -b temp &&
git push my_remote temp:publication_branch -f
git branch -D temp

所以我正在寻找一种方法来创建一个尚不存在的临时分支名称,类似于mktemp?有没有可以创建临时分支名称的git命令?

【问题讨论】:

  • 我认为,如果您真的对名称冲突有这种偏执,那么您将会使用某种 UUID,但是 +1 是一个好问题。
  • 我不认为 git 有办法做到这一点,但你可以使用你的命令行环境生成一个独特的临时分支,比如这个 bash 示例:git branch temp_'date +%H-%M-%S-%N'(注意,它的意思是围绕“日期...”部分进行反引号
  • 我会使用 max630 的答案,并且只想在评论中指出您遇到了信息学中的一个常见模式:如何命名事物的问题。我们经常想要一个独特的、令人难忘的名称,而这在我们添加名称空间之前变得非常难以管理。保证名称唯一的一种方法是使用 no 名称,如 max630 的回答!

标签: git shell temporary


【解决方案1】:

对于这个特定的任务,您可以使用 split 而不使用-b,方法是使用这个(来自其手册):

拆分成功后,将单个提交 id 打印到标准输出。这对应于新创建的树的 HEAD,您可以随意操作它。

所以

split_head=`git subtree split --prefix=some_subfolder`
git push my_remote "$split_head":publication_branch -f

【讨论】:

  • 我认为可能还有其他用例,其中人们想要使用不源自git subtree split 的分支名称编写脚本。它仍然很好地解决了我当前的问题。
猜你喜欢
  • 2016-01-11
  • 2015-01-12
  • 1970-01-01
  • 2016-12-19
  • 2012-04-06
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多