2017-02-01 12 views
1

の最初の「X」文字を取得し、 私の現在動作していないコマンドは次のとおりです。私はgitのログの最初の40個の文字を取得しようとしているgitのログ

git log <branch_name> | cut -c 1-40 >> some_file 

これは、全体のログを出力します。

新しくLinuxには、何か提案がありますか?

EDIT:

git log <branch_name> | head -n1 >> some_file 

の作業コマンド@Someprogrammerdude提案につき

+0

['head'](http://man7.org/linux/man-pages/man1/head.1.html)の仕事のようです。 –

答えて

0

基本的には、複数行をエコーし​​ます。あなたのコマンドは各行から40文字をカットするようにします。

あなたが本当にかかわらず、ラインパターンの最初の40文字にしたい場合は、ここでのコマンドは

git log <branch_name> | awk '{print substr($0,1,40);exit}' 
1

ある| head方法は微であるheadプログラムは、入力ストリームの前部を抽出するための汎用的なフィルタであり、

$ git log | head -n 1 
commit 8f60064c1f538f06e1c579cbd9840b86b10bcd3d 
:またはいくつかの入力の数ファイル - しかし、それはデフォルトの最初の行は git log出力は(おそらく偶然ではない)40の文字として綴られているのコミットハッシュ、続く単語 commitから構成されていることは注目に値します

commit (末尾のスペースを含む)は8文字であるため、これを40文字に切り詰めると、コミットIDの略称が32文字になります。 git log以来

通常、HEADコミットあなたを示すことから始まり、これはすべてあなたがHEADのハッシュIDがコミット(の一部)になっている、とのGitであることを行うにははるかに直接的な方法があることを意味します

$ git rev-parse HEAD 
8f60064c1f538f06e1c579cbd9840b86b10bcd3d 

これは、単語commit(およびスペース)を省略しますが、私があなたが気にかけている40文字を取得します。あなたは--shortまたは--short=countを追加することによって、あなたが好きな任意の数の文字にハッシュを短縮することができます。

一般に
$ git rev-parse --short=12 HEAD 
8f60064c1f53 

、単一の名前-などmaster、またはタグ名、またはHEAD -intoなどを有効にする方法をGitオブジェクト識別子(SHA-1ハッシュ)はgit rev-parseを使用します。

+0

ハッシュはすべて私がはい必要ですが、私はすべてのイムがマスターブランチにコミットが含まれているかどうかをチェックしているので、 "コミット"という単語が文字列の一部であれば問題はありません。しかし、分かち合いのおかげで、知識はいつもうまくいっています:) –

+0

ブランチに特定のコミットが含まれているか、より正確には、ある種の名前が示すコミットがその先祖の1つとして与えられたコミットを持つかどうかを直接テストします: 'git merge-ベース - は - 祖先です。だから質問がある場合: "コミット1234567マスターにマージ"直接シェルスクリプトのテストは次のとおりです: 'git merge-base --is-ancestor 1234567 master;それから...;そうでなければ...; fi'。 "masterの祖先であるブランチの名前は' git branch --merged master'を使ってください。(十分現代的なGitでは '--merged'述語は' git for-each-ref'でよく。) – torek

関連する問題