如何在git中混淆命令?

我看到了某个人的屏幕录像

git st git ci 

上class。 当我这样做,我得到一个错误,问我是否意味着别的东西。
作为一个新手,我需要知道你要做什么来完成这个工作?

基本上你只需要添加行~/.gitconfig

 [alias] st = status ci = commit -v 

或者你可以使用git config alias命令:

 $ git config --global alias.st status 

在unix上,如果别名有一个空格,则使用单引号:

 $ git config --global alias.ci 'commit -v' 

在Windows上,如果别名有空格或命令行参数,请使用双引号:

 c:\dev> git config --global alias.ci "commit -v" 

别名命令甚至接受函数作为参数。 看看别名 。

正如其他人所说,通过编辑~/.gitconfig或使用git config --global alias.<alias> <git-command>来添加git别名的方法是在你的全局.gitconfig文件中git config --global alias.<alias> <git-command>命令

以下是我的~/.gitconfig文件的别名部分的副本:

 [alias] st = status ci = commit co = checkout br = branch unstage = reset HEAD -- last = log -1 HEAD 

另外,如果你使用的是bash,我会build议通过将git-completion.bash复制到你的主目录并从你的~/.bashrc它来设置bash完成。 (我相信我从Pro Git在线书籍中了解到了这一点。)在Mac OS X上,我使用以下命令完成了这个任务:

 # Copy git-completion.bash to home directory cp usr/local/git/contrib/completion/git-completion.bash ~/ # Add the following lines to ~/.bashrc if [ -x /usr/local/git/bin/git ]; then source ~/.git-completion.bash fi 

注意: bash的完成不仅适用于标准的git命令,还适用于你的git别名。

最后,为了真正减less击键次数,我在~/.bash_aliases文件中join了以下内容: ~/.bashrc

 alias gst='git status' alias gl='git pull' alias gp='git push' alias gd='git diff | mate' alias gau='git add --update' alias gc='git commit -v' alias gca='git commit -v -a' alias gb='git branch' alias gba='git branch -a' alias gco='git checkout' alias gcob='git checkout -b' alias gcot='git checkout -t' alias gcotb='git checkout --track -b' alias glog='git log' alias glogp='git log --pretty=format:"%h %s" --graph' 

我觉得最有用的gitconfig就是这样的,我们总是用git中的20%函数,可以试试“g ll”,实在是太神奇了,细节:

 [user] name = my name email = me@example.com [core] editor = vi [alias] aa = add --all bv = branch -vv ba = branch -ra bd = branch -d ca = commit --amend cb = checkout -b cm = commit -a --amend -C HEAD ci = commit -a -v co = checkout di = diff ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative mm = merge --no-ff st = status --short --branch tg = tag -a pu = push --tags un = reset --hard HEAD uh = reset --hard HEAD^ [color] diff = auto status = auto branch = auto [branch] autosetuprebase = always 

你需要git config alias命令。 在Git仓库中执行以下操作:

 git config alias.ci commit 

对于全球别名:

 git config --global alias.ci commit 

这将为status创build一个别名st

git config --add alias.st status

这对我工作:

 bco = "!f(){ git branch ${1} && git checkout ${1}; };f" 

上:

 $ git --version git version 1.7.7.5 (Apple Git-26) 

Follwing是4个git快捷键或别名youc用于节省时间。

打开命令行并在下面的4个命令中键入这些命令,然后使用快捷方式。

 git config --global alias.co checkout git config --global alias.ci commit git config --global alias.st status git config --global alias.br branch 

现在testing他们!

 $ git co # use git co instead of git checkout $ git ci # use git ci instead of git commit $ git st # use git st instead of git status $ git br # use git br instead of git branch 

你可以混用git和non-git命令。 看起来这是在1.5版本中添加的。 我的Mac版本2.5.4上git config --help页面的一个片段显示:

如果别名扩展以感叹号为前缀,则将被视为shell命令。

例如,在您的全局.gitconfig文件中,您可以具有:

 [alias] st = status hi = !echo 'hello' 

然后运行它们:

 $ git hi hello $ git st On branch master ... 
  $ git update
 git:'update'不是一个git命令。 见'git --help'。

你的意思是?
    更新-REF

 $ git config --global alias.update'pull -v'

 $ git update
从git://git.kernel.org/pub/scm/git/git
  = [最新] html  - > origin / html
  = [最新date] maint  - > origin / maint
  = [最新]男人 - >出身/男人
  = [最新]主 - >原点/主
  = [最新]下一个 - >原点/下一个
  = [最新] pu  - > origin / pu
  = [最新]待办事项 - >起源/待办事项
已经是最新的。 

这里给出了别名 。即使这里有很好的答案,我添加了这个,因为它在Windows和Linux不同

为了让别名比其他答案中提到的标准gitconfiguration方式更短,我创build了一个npm包mingit ( npm install -g mingit ),这样大多数命令将变成2个字符而不是2个字符。 这里是例子:

 ga . // git add . gb other-branch // git branch other-branch gc "made some changes" // git commit -m "made some changes" g co master // git checkout master gd // git diff gf // git fetch gi // git init gm hotfix // git merge hotfix g pll // git pull g psh // git push gs // git status 

和其他命令会类似的短。 这也保持bash完成。 该软件包为你的点文件添加一个bash函数,在osx,linux和windows上运行。 另外,不像别的别名,它将别名git – > g以及第二个参数。

如果您使用“!”,您也可以链接命令 运算符产生一个shell:

 aa = !git add -A && git status 

这将同时添加所有文件,并给你$ git aa的状态报告。

要方便地检查别名,请添加以下别名:

 alias = config --get-regexp ^alias\\. 

然后,一个快速的$ git alias给你你目前的别名,他们做什么。

对于那些希望在git别名中执行shell命令的人 ,例如:

 $ git pof 

在我的terminal会推动当前分支到我的原点回购:

 [alias] pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2) 

哪里

 $(git branch | grep \\* | cut -d ' ' -f2) 

命令返回当前分支。

所以这是手动键入分支名称的一个快捷方式:

 git push origin -f <current-branch> 

Windows的另一种可能性是有一个目录充满.bat文件,其中有你的快捷方式。 文件的名称是要使用的快捷方式。 只需将该目录添加到PATH环境variables中,并在cmd窗口中拥有所有处理的快捷方式。

例如(gc.bat):

 git commit -m %1 

然后您可以在控制台中执行以下命令:

 gc "changed stuff" 

我join这个答案的原因是因为当使用这个时,你不仅限于git ... only命令。

如果你需要一个~/.gitconfig选项的替代方法,并打开一个更多的挖掘,另一个select是编写完全自定义的git命令,通过包装在一个全局的节点包。

在你的package.json中,你需要定义root命令(例如: gt ),然后过滤特定的命令来执行正确的git命令。 例如, git checkout my-branch可能是gt co mybranch

npm上的“christian-git”包使用这个方法: https : //github.com/alexmacarthur/christian-git