中級レベルのGitユーザー向けの便利な20のヒント。 パート1

実際、私はもともとAndy Jeffriesの記事「 中級Gitユーザーのための25のヒント 」を翻訳する予定でしたが、その過程で「user.nameとuser.emailを最初にセットアップする」などの愚かで有名な、または最も単純なヒントを破棄しました多かれ少なかれGitに精通している人に適しています。

それと引き換えに、私は個人的な練習からの瞬間で記事を補足します(「私の練習」!私は民間の医者または弁護士であるかのように素晴らしいですね!:-])







1.始まり。




user。{Name、email、signingkey}が設定されているので、$ git config --global help.autocorrect 1のようなマイナーなアメニティの方向を見ることができます-タイプミスの場合、gitはあなたが何を意味したかを推測しようとします

[solar @ hasher couchdb] $ git statu

警告:「statu」という名前のGitコマンドを呼び出しましたが、これは存在しません。

「ステータス」を意味するという仮定の下で続ける

0.1秒で自動的に...

#ブランチ0.10.x-altで

コミットするものは何もありません(作業ディレクトリのクリーン)



ここでの値1は、10分の1秒を示しています。

負の値を指定すると、提案されたコマンドがすぐに実行され、値をゼロにするとプロンプトが表示されます(デフォルト)。



アライアンスから、私だけを追加します

git config --global alias.logp 'log --pretty = format: "%h-%an:%s"'-「SHA-Author:Commit message」という形式の最後の10件のコミット

git config --global alias.unstage 'reset HEAD'

git config --global alias.remotes 'remote -v'-これは、git remoteの出力をもう少し冗長にしますが、git remote show $ branchほど冗長ではなく、さらに特定のサーバーを指定する必要があります。



2.マージ時の競合




競合がある場合、通常の標準diff -uで競合の主題を確認できます。

$ git diff --merge

diff --cc dummy.rb

index 5175dde,0c65895..4a00477

--- a/dummy.rb

+++ b/dummy.rb

@@@ -1,5 -1,5 +1,5 @@@

class MyFoo

def say

- puts "Bonjour"

- puts "Hello world"

++ puts "Annyong Haseyo"

end

end









ブランチブランチの1つからファイルを取得する必要がある場合は、git checkout(flash / foo.flaまたはgit checkout-flashs / foo.fla)を実行できます。これにより、どのブランチがマージされるかを覚える必要がなくなります。



マージする前に常に違いを確認することもできます-$ git diff branch1 branch2



3.タグ。




コードの進化段階を簡単に判断するには、タグを使用する必要があります。

$ git tag -m '$ tag_description' $ tag_name

コンテンツがgitからアセンブリに送信される場合、示されている特定のバージョンをすべて組み立てることができます。 ちなみに、ほとんどの場合、gpg-keyで署名されたタグを作成する必要があります(git config --global user.singingkey $ key_ID)



4.新しいブランチ




誰もが知っているとおり、新しいブランチを作成して切り替える($ git branch new_branch; git checkout new_branch)か、すぐに-$ git checkout -b new_branchのいずれかになります。

ところで、git branch -m new_nameとサードパーティのgit branch -m current_name new_nameを使用して、現在のブランチの名前を変更できます。

これは最も頻繁に使用される機能ではありませんが、時々発生し、checkout -bおよびその後の古いブランチの手動削除よりもはるかに高速になります。



5.ブランチを組み合わせます。 マージしてリベースします。




別のブランチからの変更を1つのブランチに入れるには、merge-mで必要な編集を含む新しいコミットを作成するか、rebase-rで履歴を書き換えます。 一方で、リベース後、ストーリーはより正確であることが判明しました-これは別のストーリーであるため、公開された公開アクセス可能なブランチの場合、マージを使用することをお勧めします。 さらに、コミットの回数にお金をかける人はいません。



変更が現在のブランチにまだ転送されていないブランチを確認できます。これは、git branch --no-mergedを使用して実行できます。 そのようなブランチは落とさないほうがましだ。



6.リモートブランチ


リモート-リモートの意味:-]



リモートブランチを直接プッシュできます-ローカルブランチとリモートブランチの名前が一致する場合、git push origin branch_name、または完全な形式を使用できます-git push origin localBranch:refs / heads / Remote_Branch_Name



ところで、サーバー名を指定せずに毎回ブランチするために、git checkout -b myfeature origin / myfeatureを使用して追跡可能なブランチを作成できます。 このブランチでは、特定の名前なしでプッシュ/フェッチ/プルできます。



7.スタッシュ




他の人がgit stashを使用しない場合、このコマンドに細心の注意を払うことをお勧めします。 たとえば、別のブランチにある場合でも、バグを緊急に修正することによって、現在の作業を「脇に置き」、注意をそらすのは便利です。 修正とコミットの後、開始したものに安全に戻ることができます。



i。 ハックハックハック

ii。 git stash

iii。 修正修正修正

iv。 git commit -a -m 'バグ修正#31337'

v。 git stash pop



git stashについて知っている人は、最後の行を見てください-適用との違いは、遅延した結果が一時ストレージに残っていないことです(いくつかのstashの例の後、git stashリストを見てください!)



変更が実際に完了した場合、キャッシュレジスタから逸脱しないコミットを発行できます-git stash save 'commit msg'



8.履歴を検索する




コミットについて少なくとも何かがわかっている場合は、見つけようとすることができます!

$ git log --grep = "メッセージ内の何か"-コミットの説明による検索

$ git log -S "{%include \" header.tmpl \ "%}"-ブランチファイルの行ごとにコミットを検索します。 -Sの後にスペースがないことに注意してください

$ git log templates / header.tmpl-指定されたファイルに影響を与えたコミットを検索します。



--since = X.months.ago --until = Y.day.ago --author = andy -S“ something”などのオプションを使用して検索を絞り込むこともできます。

--all-matchオプションは、パラメーターをデフォルトのORではなくANDで結合します。



次に、変更のキャンセルと操作、インタラクティブなリベース、履歴全体のファイルの変更(メインブランチで戦闘パスワードを保持していることに気付いたときに個人的に便利になりました)、その他あらゆる小さなことについて説明します^ _ ^



PS:このような必要な+ 1、%ユーザー名%に感謝します)



All Articles