Ich sah einen Screencast, in den jemand gekommen war
git st
git ci
arbeiten. Wenn ich es tue, bekomme ich eine Fehlermeldung, ob ich etwas anderes gemeint habe.
Als Git-Neuling muss ich wissen, was Sie tun müssen, um dies zu erreichen?
Ich sah einen Screencast, in den jemand gekommen war
git st
git ci
arbeiten. Wenn ich es tue, bekomme ich eine Fehlermeldung, ob ich etwas anderes gemeint habe.
Als Git-Neuling muss ich wissen, was Sie tun müssen, um dies zu erreichen?
Antworten:
Grundsätzlich müssen Sie nur Zeilen hinzufügen ~/.gitconfig
[alias]
st = status
ci = commit -v
Oder Sie können den Befehl git config alias verwenden:
$ git config --global alias.st status
Verwenden Sie unter Unix einfache Anführungszeichen, wenn der Alias ein Leerzeichen enthält:
$ git config --global alias.ci 'commit -v'
Verwenden Sie unter Windows doppelte Anführungszeichen, wenn der Alias ein Leerzeichen oder ein Befehlszeilenargument enthält:
c:\dev> git config --global alias.ci "commit -v"
Der Alias-Befehl akzeptiert sogar Funktionen als Parameter. Schauen Sie sich Aliase an .
git config --global
, die Aliase ~/.gitconfig
anstelle .git/config
Ihres aktuellen Repositorys zu verwenden.
st
auf status -s
(kurze Status)
'
wiegit config --global alias.sr 'svn rebase'
"
anstelle von einfachen Anführungszeichen verwenden, wenn Sie Befehle mit Leerzeichen hinzufügen, z. B.git config --global alias.ci "commit -v"
Wie andere bereits gesagt haben, können Sie Git-Aliase in Ihrer globalen .gitconfig
Datei entweder durch Bearbeiten ~/.gitconfig
oder mithilfe des git config --global alias.<alias> <git-command>
Befehls hinzufügen
Unten finden Sie eine Kopie des Alias-Abschnitts meiner ~/.gitconfig
Datei:
[alias]
st = status
ci = commit
co = checkout
br = branch
unstage = reset HEAD --
last = log -1 HEAD
Wenn Sie bash verwenden, würde ich empfehlen, die Bash-Vervollständigung einzurichten, indem Sie sie git-completion.bash
in Ihr Home-Verzeichnis kopieren und von Ihrem beziehen ~/.bashrc
. (Ich glaube, ich habe dies aus dem Pro Git- Online-Buch erfahren .) Unter Mac OS X habe ich dies mit den folgenden Befehlen erreicht:
# 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
Hinweis: Die Bash-Vervollständigung funktioniert nicht nur für die Standard-Git-Befehle, sondern auch für Ihre Git-Aliase.
Um die Tastenanschläge wirklich zu reduzieren, habe ich meiner ~/.bash_aliases
Datei Folgendes hinzugefügt, das aus folgenden Quellen stammt ~/.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'
~/.bashrc
datei "bezogen zu werden" ?
~/.bashrc
: um die Tastenanschläge wirklich zu reduzieren. Genau das, wonach gesucht wurde.
Ich denke, die nützlichste gitconfig ist wie folgt: Wir verwenden immer die 20% -Funktion in git. Sie können das "g ll" ausprobieren. Es ist erstaunlich, die Details:
[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
Du brauchst den git config alias
Befehl. Führen Sie Folgendes in einem Git-Repository aus:
git config alias.ci commit
Für globalen Alias:
git config --global alias.ci commit
Das hat bei mir funktioniert:
bco = "!f(){ git branch ${1} && git checkout ${1}; };f"
auf:
$ git --version
git version 1.7.7.5 (Apple Git-26)
git cob
. erinnert mich an den Sommer, wie bei Maiskolben. Eigentlich ein tolles Wort, über das wir nicht genug nachdenken ... Cob das ist
Dadurch wird ein Alias erstellt st
für status
:
git config --add alias.st status
git st
wenn Sie verwenden können git s
, entfernen Sie das s
: P
Im Folgenden finden Sie die 4-Git-Verknüpfungen oder Aliase, mit denen Sie Zeit sparen können.
Öffnen Sie die Befehlszeile, geben Sie die folgenden 4 Befehle ein und verwenden Sie die Verknüpfungen danach.
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
Jetzt teste sie!
$ 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
Für diejenigen, die Shell-Befehle in einem Git-Alias ausführen möchten , zum Beispiel:
$ git pof
In meinem Terminal schieben zwingen den aktuellen Zweig zu meinem Ursprung Repo:
[alias]
pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2)
Bei dem die
$(git branch | grep \\* | cut -d ' ' -f2)
Befehl gibt den aktuellen Zweig zurück.
Dies ist also eine Verknüpfung zum manuellen Eingeben des Filialnamens:
git push origin -f <current-branch>
git push -f origin HEAD
den aktuellen Zweig zu seinem entfernten Gegenstück verschieben? Auch eine Abkürzung, um mit Gewalt zu schieben? Wenn Sie häufig genug Druck ausüben müssen, um von einer Verknüpfung zu profitieren, stimmt etwas an anderer Stelle in Ihrem Setup oder Workflow nicht?
!git
den letzten git-Befehl ersetzt), aber das manuelle Bearbeiten der Konfigurationsdatei hat den Trick getan.
Sie können sowohl git- als auch non-git-Befehle aliasen. Es sieht so aus, als ob dies in Version 1.5 hinzugefügt wurde. Ein Ausschnitt aus der git config --help
Seite zu Version 2.5.4 auf meinem Mac zeigt:
Wenn der Alias-Erweiterung ein Ausrufezeichen vorangestellt ist, wird sie als Shell-Befehl behandelt.
In Ihrer globalen .gitconfig
Datei könnten Sie beispielsweise Folgendes haben:
[alias]
st = status
hi = !echo 'hello'
Und dann führen Sie sie aus:
$ git hi
hello
$ git st
On branch master
...
Fügen Sie die folgenden Zeilen zu Ihrer ~ / .gitconfig in Ihrem Home-Verzeichnis hinzu
[alias]
# one-line log
l = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
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
a = add
ap = add -p
c = commit --verbose
ca = commit -a --verbose
cm = commit -m
cam = commit -a -m
m = commit --amend --verbose
d = diff
ds = diff --stat
dc = diff --cached
s = status -s
co = checkout
cob = checkout -b
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"
# list aliases
la = "!git config -l | grep alias | cut -c 7-"
Sobald dies erledigt ist, können Sie dies git a
anstelle von git add
beispielsweise tun . Gleiches gilt für andere Befehle unter der Alias-Überschrift.
$ git Update git: 'update' ist kein git-Befehl. Siehe 'git --help'. Meinten Sie das? Update-Ref $ git config --global alias.update 'pull -v' $ git Update Von git: //git.kernel.org/pub/scm/git/git = [aktuell] html -> origin / html = [aktuell] Wartung -> Herkunft / Wartung = [aktuell] Mann -> Herkunft / Mann = [aktuell] master -> origin / master = [aktuell] next -> origin / next = [aktuell] pu -> origin / pu = [aktuell] todo -> origin / todo Schon aktuell.
Ich habe den Alias dog
zum Anzeigen des Protokolldiagramms erstellt:
git config --global alias.dog "log --all --decorate --oneline --graph"
Und verwenden Sie es wie folgt:
git dog
Sie können Befehle auch verketten, wenn Sie das '!' Operator, um eine Shell zu erzeugen:
aa = !git add -A && git status
Dadurch werden alle Dateien hinzugefügt und Sie erhalten einen Statusbericht mit $ git aa
.
Fügen Sie diesen Alias hinzu, um Ihre Aliase auf praktische Weise zu überprüfen:
alias = config --get-regexp ^alias\\.
Dann $ git alias
gibt Ihnen ein kurzer Überblick über Ihre aktuellen Aliase und deren Funktionsweise.
Sie können benutzerdefinierte Git-Aliase mit der Konfiguration von git festlegen. Hier ist die Syntax:
git config --global alias.<aliasName> "<git command>"
Wenn Sie beispielsweise einen Alias zum Anzeigen einer Liste von Dateien mit Zusammenführungskonflikten benötigen, führen Sie Folgendes aus:
git config --global alias.conflicts "diff --name-only --diff-filter=U"
Jetzt können Sie den obigen Befehl nur mit "Konflikten" verwenden:
git conflicts
# same as running: git diff --name-only --diff-filter=U
Bei mir ( ich verwende einen Mac mit Terminal ) funktionierte es nur, wenn ich .bash_profile hinzugefügt und eine weitere Registerkarte geöffnet habe, um die Änderung zu laden:
alias gst="git status"
alias gd="git diff"
alias gl="git log"
alias gco="git commit"
alias gck="git checkout"
alias gl="git pull"
alias gpom="git pull origin master"
alias gp="git push"
alias gb="git branch"
Um die Aliase noch kürzer als die in anderen Antworten erwähnte Standard-Git-Konfigurationsmethode zu machen, habe ich ein npm-Paket mingit ( npm install -g mingit
) erstellt, sodass die meisten Befehle aus 2 Zeichen anstelle von 2 Wörtern bestehen. Hier sind die Beispiele:
g a . // git add .
g b other-branch // git branch other-branch
g c "made some changes" // git commit -m "made some changes"
g co master // git checkout master
g d // git diff
g f // git fetch
g i // git init
g m hotfix // git merge hotfix
g pll // git pull
g psh // git push
g s // git status
und andere Befehle wären ähnlich kurz. Dies hält auch Bash-Abschlüsse. Das Paket fügt Ihren Punktedateien eine Bash-Funktion hinzu und funktioniert unter OSX, Linux und Windows. Im Gegensatz zu den anderen Aliasen werden auch Aliase git
-> g
sowie der zweite Parameter verwendet.
Wenn Sie eine Alternative zu dieser ~/.gitconfig
Option suchen und sich ein wenig mehr damit beschäftigen möchten , können Sie auch vollständig benutzerdefinierte Git-Befehle schreiben, indem Sie sie in ein globales Knotenpaket einschließen.
In Ihrer package.json definieren Sie den Root-Befehl (Beispiel :) gt
und filtern dann die spezifischen Befehle, um die richtigen Git-Befehle auszuführen. Zum Beispiel git checkout my-branch
könnte sein gt co mybranch
.
Das "christian-git" -Paket auf npm verwendet diese Methode: https://github.com/alexmacarthur/christian-git
Es wird hier Aliase gegeben. Auch hier gibt es gute Antworten, ich habe dies hinzugefügt, weil es sich in Windows und Linux unterscheidet
PFA-Screenshot meiner .gitconfig-Datei
mit den folgenden Aliasen
[alias]
cb = checkout branch
pullb = pull main branch
.gitconfig
Ich schlage vor, ein .gitconfig
Include für Ihre Aliase zu verwenden. Sobald Sie anfangen, Aliase zu erstellen, werden Sie wahrscheinlich viele davon haben. Sie werden wahrscheinlich etwas sein, das Sie mit anderen teilen möchten. Wenn Sie sie in eine dedizierte Datei einfügen, können Sie sie problemlos freigeben. Ihr Team kann sogar ein Git-Repo verwenden, um gemeinsam genutzte Aliase zu speichern. Und natürlich einige Aliase, die Sie nicht freigeben möchten. Bewahren Sie sie daher in einer privaten Aliasdatei auf.
[include]
path=src/dotfiles/.gitaliases
[include]
path=src/team-utils/gitaliases
[include]
path=.gitaliases.private
Eine andere Möglichkeit für Windows wäre, ein Verzeichnis mit .bat-Dateien zu füllen, in denen sich Ihre Verknüpfungen befinden. Der Name der Datei ist die zu verwendende Verknüpfung. Fügen Sie einfach das Verzeichnis zu Ihrer Umgebungsvariablen PATH hinzu, und Sie haben alle Verknüpfungen im cmd-Fenster zur Verfügung.
Zum Beispiel (gc.bat):
git commit -m %1
Anschließend können Sie den folgenden Befehl in der Konsole ausführen:
gc "changed stuff"
Der Grund, warum ich dies als Antwort hinzufüge, ist, dass Sie bei der Verwendung nicht git ...
nur Befehle verwenden.