如何在一个命令

时间:2017-04-25 10:00:17

标签: git

使用一个git命令和一个字符串参数<topic-name>我该怎么做,

  1. 创建名为topic/<topic-name>
  2. 的本地分支
  3. 查看此分支
  4. 确保第一个没有args的git push在没有警告或提示的情况下推送到origin/topic/<topic-name>
  5. 确保没有args的后续git push命令在没有警告或提示的情况下推送到origin/topic/<topic-name>
  6. 假设origin/topic/<topic-name>不存在于远程仓库的分支上。

    我愿意使用git别名来实现这一目标。

2 个答案:

答案 0 :(得分:0)

这似乎有效,

git config --global alias.topic '!f() { b="topic/$1"; git checkout -b "$b"; git config branch."$b".remote origin; git config branch."$b".merge refs/heads/"$b"; }; f'

输出

$ git topic SI-9008
Switched to a new branch 'topic/SI-9008'
$ git push
Total 0 (delta 0), reused 0 (delta 0)
remote: 
remote: Create pull request for topic/SI-9008:
remote:   https://bitbucket.org/xxx/xxx/pull-requests/new?source=topic/SI-9008&t=1
remote: 
To bitbucket.org:xxx/xxx.git
* [new branch]          topic/SI-9008 -> topic/SI-9008

基于git- Creating a branch which will be pushed to a remote later

答案 1 :(得分:-1)

按照here

的说明,将以下内容添加到您的git conifg中
[alias]
    setupBranch = "!f() { git checkout -b topic/"$1" origin/topic/"$1"; }; f"

这将设置一个别名setupBranch,使用您指定的参数执行git checkout -b

编辑: 但请注意,这仅在分支origin/topic/<topic-name>存在时才有效,否则会因fatal: Cannot update paths and switch to branch 'topic/<topic-name>' at the same time.

而失败