これら3つのコマンドを1つで使用する方法はありますか?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
たまに、1文字だけ、CSSパディングなどを変更しています。それでも、変更をプッシュするには、3つのコマンドすべてを記述する必要があります。プッシャーが1つしかないプロジェクトがたくさんあるので、このコマンドはすばらしいでしょう。
これら3つのコマンドを1つで使用する方法はありますか?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
たまに、1文字だけ、CSSパディングなどを変更しています。それでも、変更をプッシュするには、3つのコマンドすべてを記述する必要があります。プッシャーが1つしかないプロジェクトがたくさんあるので、このコマンドはすばらしいでしょう。
回答:
@Gavinの答えからの構築:
lazygitをエイリアスではなく関数にすることで、引数を渡すことができます。以下を.bashrc(またはMacの場合は.bash_profile)に追加しました:
function lazygit() {
git add .
git commit -a -m "$1"
git push
}
これにより、次のようなコミットメッセージを提供できます。
lazygit "My commit msg"
もちろん、プッシュするリモートの場所やブランチなど、さらに多くの引数を受け入れることで、これをさらに強化できます。
$*
代わりの$1
引用符を入力して保存するには:lazygit My commit msg
function dirtygit() { git add . git commit -a -m "$*" git push }
.gitconfig
ファイルにエイリアスを追加してしまいました:
[alias]
cmp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
使用法: git cmp "Long commit message goes here"
すべてのファイルを追加し、コミットメッセージのコメントを使用して、それを元の場所にプッシュします。
あなたはコミットメッセージが何であるかを制御できるので、私はそれがより良い解決策だと思います。
エイリアスはコマンドラインからも定義できます.gitconfig
。これにより、エイリアスが次のように追加されます。
git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f'
!f() { ... }; f
正確には何をしますか?その行のより多くの説明は答えをさらに良くするでしょう。
f
から呼び出します。
git pull
マージを減らすために、最初に追加しました。
私は彼の疑問についてウェインワーナーに同意しますが、これは技術的にはオプションです。
git config alias.acp '! git commit -a -m "commit" && git push'
別名を定義することが実行commit
してpush
。として使用してくださいgit acp
。このような「シェル」エイリアスは常にgitリポジトリのルートから実行されることに注意してください。
別のオプションは、プッシュを実行するコミット後フックを作成することです。
ああ、ところで、実際にシェルエイリアスに引数を渡すことができます。カスタムコミットメッセージを渡す場合は、代わりに次を使用します。
git config alias.acp '! acp() { git commit -a -m "$1" && git push ; } ; acp'
(もちろん、今、あなたがコミットメッセージを与える必要があります。git acp "My message goes here!"
)
git
エスケープを自動的に追加しました(でチェックgit config -e
)。
gitが設計されたワークフローを誤解しているかもしれません。(私がコメントで意味したことを明確にする/修正するためgit add .
に、commit -a
通常は同じ目的を果たします-ファイルがすでに追加されている場合は、まだステージングされていない変更を追加するため、は必要ありません)
通常は、次のようにします。
# make some changes
$ git commit -a -m "Changed something"
# make some more changes
$ git commit -a -m "Changed something else"
機能Xが完了するまで、または停止点に到達するまで、または他の人にあなたが何をしたかを見てもらいたいまで、洗浄、すすぎ、繰り返します。その後、あなたはします
$ git push
GitはSVNではありませんが、それをそのまま使用しようとしているようです。あなたは記事の最後にいくつかのリソースを見つけるかもしれないここにいくつかの使用であると。
bashスクリプトを使用し、エイリアスを設定して、任意のコマンドまたはコマンドのグループを起動できます
git commit -am "your message" && git push
bashでエイリアスとして設定します。
$ alias lazygit="git add .; git commit -a -m '...'; git push;";
あれを呼べ:
$ lazygit
(このエイリアスを永続的にするには、.bashrcまたは.bash_profileに含める必要があります)
最も簡単な解決策は次のとおりです。
git commit -a -m "commit" && git push
git add
はすでにコミットの-aパラメータに含まれていますが、必要に応じてすべてを接続できます。
git add . && git commit -a -m "commit" && git push
Linux / Macでは、この非常に実用的なオプションも機能するはずです。
git commit -am "IssueNumberIAmWorkingOn --hit Enter key
> A detail here --Enter
> Another detail here --Enter
> Third line here" && git push --last Enter and it will be there
ローカルに作成された新しいブランチで作業している場合は、git push
部分をgit push -u origin branch_name
システムエディターでコミットメッセージを編集する場合
git commit -a && git push
エディターが開き、メッセージを保存するとプッシュも実行されます。
あなたはgituを試すことができますます。
初めて(ノードjsをインストールする必要があります):
npm install -g git-upload
その後:
gitu COMMIT_MSG
これらの3つのコマンドを一度に発行します。
良いことは、システムを再インストールするとき、または別のコンピューターでこれを実行するときに心配する必要がなく、ファイルの変更が必要ないことです。
また、これは、異なるプラットフォーム上の作業(のようなプロンプトコマンドの下だけでなく、Linux、およびMacはなく、また、Windows cmd
およびpowershell
インストールする必要がちょうどあること)npm
とnodejs
(git
もちろん)。
この回答で述べたように、gitエイリアスを作成し、それに一連のコマンドを割り当てることができます。この場合は、次のようになります。
git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push'
そしてそれを使って
git add-com-push
以下の行でgitpush.shという名前の小さなスクリプトを記述し、それを〜ディレクトリに追加します。
echo $1
git add .
git commit -m "$1"
git push
以下のように〜/ .bashrcにエイリアスを追加します。
alias gitpush='~/gitpush'
ここで、任意のgitリポジトリからgitpush "message"と書き込みます。
私はバッチファイルを使用します:
@ECHO OFF
SET /p comment=Comment:
git add *
git commit -a -m "%comment%"
git push
上記のスクリプトにはいくつか問題があります。
shiftは、パラメーター$ 1を「削除」します。それ以外の場合、「push」はそれを読み取り、「誤解」します。
私のヒント:
git config --global alias.acpp '!git add -A && branchatu = "$(git symbolic-ref HEAD 2> / dev / null)" && branchatu = $ {branchatu ## refs / heads /} && git commit- m "$ 1" && shift && git pull -u origin $ branchatu && git push -u origin $ branchatu '
git commitのsvnのような動作が必要な場合は、これを.gitconfigのgitエイリアスで使用してください
commit = "!f() { git commit \"$@\" && git push; };f"
フィッシュシェルを使用している場合(btseの回答から構築):
このファイルを「〜/ .config / fish / functions」内に「quickgit.fish」として保存します。ディレクトリが存在しない場合は作成します。'--git-dir = $ PWD / .git'関数を呼び出したgitプロジェクトに対してgitコマンドを確実に実行します
function quickgit # This is the function name and command we call
git --git-dir=$PWD/.git add . # Stage all unstaged files
git --git-dir=$PWD/.git commit -a -m $argv # Commit files with the given argument as the commit message
git --git-dir=$PWD/.git push # Push to remote
end
ターミナルを再起動し、プロジェクトに移動して変更を加えると、「quickgit "example message"」を呼び出すことができます。変更が追加され、コミットされ、プッシュされます:)。
ここで要点としても見つけることができます:https : //gist.github.com/Abushawish/3440a6087c212bd67ce1e93f8d283a69
良い解決策はすでにたくさんありますが、ここでは私が働きたい方法に対してよりエレガントだと思う解決策を示します。
私のパスに「git-put」というスクリプトを置きます。
#!/bin/bash
git commit "$@" && git push -u
それは私が走ることを可能にします:
git put -am「私のコミットメッセージ」
..すべてのファイルを追加してコミットし、プッシュする。
(私は "-u"も追加しました。これは、この問題に関連していませんが、とにかくこれを実行するのが好きだからです。これにより、上流ブランチが常にプル用にセットアップされることが保証されます。)
このアプローチが好きなのは、すべてのファイルを追加せずに(「-a」をスキップして)「git put」を使用したり、コミットに渡したい他のオプションを使用したりできるためです。また、「put」は「push」と「commit」の短いportmanteauです。
Macを使用している場合:
ターミナルを起動し、「cd〜/」と入力してホームフォルダに移動します。
「touch .bash_profile」と入力して、新しいファイルを作成します。
お好みのエディターで.bash_profileを編集します(または、「open -e .bash_profile」と入力して、TextEditで開きます)。
以下をコピーしてファイルに貼り付けます。
function lazygit() { git add . git commit -a -m "$1" git push }
この後、ターミナルを再起動して、1つの簡単なコマンドを追加、コミット、プッシュします。例:
lazygit "This is my commit message"
MAC VSCユーザーの場合、最適な設定は次のとおりです。
1) 'shift + cmd + P'を押して次を入力:
Shell Command: install 'code' command in PATH
Enterキーを押します(これにより、bash_profileに簡単にアクセスするためのコードコマンドがインストールされます)
2)これで実行できます:code ~/.bash_profile
空のbash_profileを開く
3)そこに新しい関数を入力します。
function lazygit() {
git add .
git commit -m "$*"
git push
}
4)VSCを再起動します
5)変更を加えて保存しlazygit message
、3つのコマンドを同時に実行するように入力します
macOSユーザーの場合:
ターミナル、iTerm2、または使用している別のターミナルを開きます。
コマンドでユーザープロファイルフォルダに移動します~/
。これは、.bash_profile
ファイルのデフォルトのフォルダーです。
入力nano .bash_profile
このコマンドが開きます.bash_profile
、端末のためのテキストエディタを使用するのが最も簡単にドキュメントを(またはそれが存在しない場合は作成します) - nano
。
これで、ファイルに簡単な変更を加えることができます。次のコード行を貼り付けて、ターミナルプロンプトを変更します。
function lazygit() {
git add .
git commit -a -m "$1"
git push
}
質問ではどのシェルを指定していないので、これは以前の回答に基づいたeshellバージョンです。これは、〜/ .emacs.d / eshell / aliasにある可能性があるeshellエイリアスファイルに入ります。最初の部分を追加しましたz https://github.com/rupa/z/ これにより、ディレクトリにすばやくcdできます、これは現在のディレクトリが何であっても実行できるようにするためです。
alias census z cens; git add .; git commit -m "fast"; git push
~/.bash_profile
1つのコマンドputで追加、コミット、プッシュするためのアドイン:
function g() { git commit -a -m "$*"; git push; }
使用法:
g your commit message
g your commit message 'message'
コミットメッセージでセミコロンや括弧を使用することはできませんが、引用符は必要ありません(単一引用符を使用できます)。これらのいずれかが必要な場合は、メッセージに二重引用符を入れてください。例:
g "your commit message; (message)"
メッセージにコメントを作成するには:
g "your commit message:
> your note"
同様の方法で追加およびコミットするための関数もあります。
function c() { git add --all; git commit -m "$*"; }
そのg
機能とまったく同じように機能し、同じ制約があります。c
代わりに置くだけです。例えば
c your commit message
リモートにプッシュするためのエイリアスを追加することもできます。
alias p='git push'
使用法:
p
これは2文字にc
なりp
、gitリポジトリでの作業中に使用します。または使用できますg
代わりにをして、1文字だけですべてを実行。
エイリアスと関数の完全なリスト:https : //gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac
オフ建物lazygit
の答えを、以下のソリューションをプッシュする前に変更を確認するためにユーザチェックを追加します。キャンセルされた場合、コマンドを元に戻します。そして、ローカルリポジトリに変更があった場合にのみ、すべてのことが起こります。
### SAFER LAZY GIT
function lazygit() {
git add .
if git commit -a -m "$1"; then
read -r -p "Are you sure you want to push these changes? [y/N]} " response
case "$response" in
[yY][eE][sS]|[yY])
git push
;;
*)
git reset HEAD~1 --soft
echo "Reverted changes."
;;
esac
fi
}