5

必要に応じて追跡ブランチに追いつくためのエイリアスを作成しました。[alias]私の.gitconfigのセクションからの現在の行は次のとおりです。

catchup = !CURRENTBRANCH=$(git symbolic-ref --short HEAD) && echo Currently on $CURRENTBRANCH - switching to $1 && git checkout $1 && git merge origin/$1 && echo Going back to $CURRENTBRANCH && git checkout "$CURRENTBRANCH"

私は次のように使用します(例):

git catchup new_design

このコードは次のようになります (例):

Currently on integration
Switched to branch 'new_design'
Your branch is behind 'origin/new_design' by 1 commit, and can be fast-forwarded.
Updating c82f7db..51eea8a
Fast-forward
 themes/theme1/css/styles.less | 17 +++++++++++++++++
 themes/theme1/js/app.js       |  6 +++---
 2 files changed, 20 insertions(+), 3 deletions(-)
Going back to integration
error: pathspec 'new_design' did not match any file(s) known to git.

二重引用符の有無にかかわらず、エイリアスの最後のコマンドを試しましたが、同じ結果になりました。

最後にそのエラーを解決する方法を知っている人はいますか?

の使用を提案する人にとってはgit pull、問題は解決せず、パスワードを入力する必要があります。このエイリアスは、最近使用git fetchしたことがあり、リモート リポジトリに戻る必要がない場合に使用します。

Windows 7 で git bash を実行しています。

4

2 に答える 2

3

エイリアスにシェル関数を使用します。

[alias]

catchup = "!f() { CURRENTBRANCH=$(git symbolic-ref --short HEAD) && .... ;}; f"

$n期待通りの作品の取り扱いがあります。


OP mwotton、コメントで次のように機能することを確認しています。

catchup = "!_(){ CURRENTBRANCH=$(git symbolic-ref --short HEAD) ; echo \"Currently on \"$CURRENTBRANCH\" - switching to \"$@ ; git checkout $@ ; git merge origin/$@ ; echo \"Going back to \"$CURRENTBRANCH ; git checkout $CURRENTBRANCH; }; _"

複数行で、より見やすくするために:

catchup = "!_(){ 
  CURRENTBRANCH=$(git symbolic-ref --short HEAD) ; 
  echo \"Currently on \"$CURRENTBRANCH\" - switching to \"$@ ; 
  git checkout $@ ; 
  git merge origin/$@ ; 
  echo \"Going back to \"$CURRENTBRANCH ; 
  git checkout $CURRENTBRANCH; }; _"
于 2012-10-08T10:43:39.397 に答える