git命令

2019-08-02:

很困跳芳,睡一覺起來繼續(xù)折騰如何通過git來獲取修改的method雕什。沒想到測試了網(wǎng)上一個方法节芥,居然真的可行!OMG调塌。so amazing:

https://drunkenmonkey.at/blog/diffs_with_proper_function_context

節(jié)選原文如下(我是要搞java文件晋南,所以就將下面的php換成java就好了。哈哈哈):

The solution

It turns out Git's diff functionality already has support for creating the right function context information for various file types – it just doesn't know which files correspond to which file type. (It seems not even the standard?.php?extension is recognized by default.)

To remedy this, simply create a file with the following contents:

*.engine?? diff=php

*.inc????? diff=php

*.install? diff=php

*.module?? diff=php

*.php????? diff=php

*.profile? diff=php

*.test???? diff=php

*.theme??? diff=php

Save the file either in?.git/info/attributes?or?.gitattributes?(for just the local project), or (to change this globally) in?$HOME/.config/git/attributes?(or?$XDG_CONFIG_HOME/git/attributes, if that variable is set). That's it – testing again, we now see the proper function context in the diff:

@@ -40,6 +40,7 @@ public function operator_options() {

'<=' => t('Is less than or equal to'),

'=' => t('Is equal to'),

'<>' => t('Is not equal to'),

+????? '!=' => t('Is REALLY not equal to'),

'>=' => t('Is greater than or equal to'),

'>' => t('Is greater than'),

'empty' => t('Is empty'),

Much better, right?

Note:?I haven't yet found out where to put the global attributes file for Windows. If you know, please post a comment and tell me, and I'll include it here.

2019-07-22 關(guān)于通過使用git diff -W 顯示修改行附近的functions的命令羔砾,雖然接下來抽取怎么搞不明白负间,但最起碼知道了點東西:

https://stackoverflow.com/questions/16525659/is-there-something-similar-to-diff-show-c-function-in-git-diff?noredirect=1&lq=1

git help diff?shows this option:

-W, --function-context

? ? ?Show the whole surrounding functions of changes.

So, it looks like?git diff -W?should do what you want.

Using git to identify all modified functions in a revision?其實無法獲取,還是要進一步分析:

2016-12-28 search issue和pull requests的open或者closed的數(shù)目姜凄。這下終于不用在

search issues的時候還把pull requests給放進去了政溃,大大的滿足感!L怼董虱!

You might also take a look at the search apihttps://developer.github.com/v3/search/#search-issues. Looks like you can filter on type and probably also on closed or not :)

https://api.github.com/search/issues?q=+type:pr+user:StackEx??change&sort=created&??order=asc–

2016-12-26 search github repositories

https://api.github.com/search/repositories?q=language:Java+created:"2014-12-03T12:32:42Z .. 2014-12-03T13:32:42Z"

2016-07-12:

git shortlog XXX...XXXX可以產(chǎn)生這段范圍commit 的changelog文檔

git archive --prefix='XXX' --format=zip > XXXX.zip會將當前代碼打包。

git describe sha1將會為該commit產(chǎn)生一個名字描述申鱼,名字中包含最近一次的tag包名+sha1信息愤诱。如果沒有tag,則會失敗捐友。

git format-patch會將一個個commit達成一個個xxx.patch包淫半,且按順序來打,這個可以發(fā)給email匣砖,然后別人可以用git apply科吭,am或者patch命令來實施該patch。

有時我們不需要clone或者add remote脆粥∑瞿纾可以直接git pull url來獲取結(jié)果。

git apply XXX.patch會丟掉author信息变隔。

git apply --check XXX.patch可以事先測試該patch能否成功實施规伐,如果不能,則會報錯匣缘,如果能猖闪,啥消息也沒有。當你真正運行g(shù)it apply xxx.patch后肌厨,它并不幫你產(chǎn)生新的create培慌,只是放在index中,讓你自己來commit柑爸。吵护。

git cherry-pick sha1不管哪種情況,都會產(chǎn)生新的commit。

git cherry-pick --edit sha1是可以修改commit msg的馅而。

當命令成功運行沒有沖突時會保留author信息(不管改不改msg)祥诽,反之則沒有原來的author信息。author變成了commiter瓮恭。

2016-07-07

1. git pull 默認會將server上所有的分支與local上的分支進行merge雄坪。

且會把local上沒有的branch也自動fetch到local且創(chuàng)建一個對應(yīng)的branch。

如果是git pull master就只是會和master進行merge屯蹦,其他分支不會去merge维哈。

2. git fetch origin貌似沒有g(shù)it fetch branchXXX特意某個分支貌似。所以會將所有的branch數(shù)據(jù)fetch下來登澜。但不merge阔挠。merge需要自己去merge. 當然如果server上有l(wèi)ocal上沒有的branch,git fetch也取不下來了帖渠。

在當前分支下谒亦,git merge會merge當前分支和對應(yīng)的遠程分支。如果要merge其他分支空郊,需明確標明。

3. git clone會將所有的分支數(shù)據(jù)clone下來切揭。

2016-07-06 nju

1. git config --system XXX 全局設(shè)置狞甚,所有用戶有效。配置文件在/etc/gitconfig

??? git config --global XXX 單個賬戶設(shè)置廓旬,對該賬戶下的所有g(shù)it repo有效.???????????????? 配置文件在~/.gitconfig下或其他類似名

??? git config XXX 單個賬戶下的單個repo下設(shè)置哼审,只對該repo有效,會覆蓋前2個孕豹。配置文件在repo下的.git/config

使用git config --list可以顯示前面所有的3種配置涩盾。

在配置的時候,你可以直接在配置文件里寫励背,還可以在命令行里編寫春霍。如

git config --global core.editor vim

使用git config <key>(eg core.editor)會給出該key的具體配置。

2. 對命令獲取使用說明:

git help <verb>如git help commit叶眉≈啡澹可以查看任何一個git 命令的幫助文檔。

git <verb> --help如git commit --help

man git-<verb>如man git-commit

3. git commit -a -m 'XXX'? = git add all modified tracked files+ git commit -m 'XXX'

2016年06-25

1) git cat-file -p sha1val 可以看一個sha1 hash值為sha1val object對象的內(nèi)容

使用git add后衅疙,就往objects中加入了一個blob對象 sha1值

2) 然后各種git add git rm等這些操作都是先放到index對象中莲趣,index對象隨著命令的改變內(nèi)容而改變。index對象中存放內(nèi)容饱溢,路徑喧伞,sha值啥的。如果你要寫tree對象,是從index中的內(nèi)容寫入tree對象的潘鲫。绿聘。從來index都是隨時變化的(git add完一次就更新一次內(nèi)容),根本不屬于.git/objects中的對象次舌,objects對象只有四種:blob熄攘,tree,commit彼念,tag挪圾。其中blob只是content。tree記錄blob逐沙,dir等哲思,file name等信息。commit指向tree+parent commit吩案,tag指向commit棚赔。

git status 可以看index中的狀態(tài),而git ls-files -s會得到index中的內(nèi)容徘郭,eg:

100644 3b18e512dba79e4c8300dd08aeb37f8e728b8dad 0 hello.txt

3) 如果想將此刻的index寫入tree靠益。可以用git write-tree

4) git commit = git write-tree + git commit-tree treeval

5) git rev-parse V1.0 ?git rev-parse ab1234 都可以得到完整的40位sha1值

6)working dir-> index -> repository残揉。每次commit提交都是index中的內(nèi)容胧后,而不是working dir中的內(nèi)容

7) git commit filename = git add filename + git commit -m 'XXX' while for rm or move, you must git rm/mv filename, then git commit -m 'XXX'

8) git hash-object m1 可以為m1計算sha1值

9) objects 中的pack文件夾下原來會將很相似的文件分組,然后保存一個完整版本+delta版本來存儲其他文件

10) git rm XX后XX馬上就從working dir中消失了抱环,但要真正有效還要git commit下

git rm XX會從index和working dir中同時刪除壳快。如果只是要從index中刪除可以使用git rm --cached XX

如果不小心刪了找不到。還可以找回來:git checkout HEAD -- filename

11) git log XX可以看到文件名為XX的歷史镇草。但如果XX是重命名后的眶痰,要看其之前所有的,可以用git log --follow XX

2016-06-26

1) ?git log -n : list at most n commits;?git log=git log HEAD; git log cmitVal. 使用git log來看commit信息

2) git show objVal 用來看object的信息

3) ~是一條線上回溯梯啤,而^是幾個祖先之間回溯

4) X..Y=^X Y from commit X to Y, includes Y excludes X ? ? ? ? ? ? ? ? ? A...B=in A or B but not both

5) git bisect: find the unwork commit

git bisect start->git bisect bad->git bisect good XX-> git bisect bad 循環(huán)往復(fù)竖伯,可以找到first bad commit。進入bisect start模式后条辟,輸入bad和good的最初定位后黔夭,bisect每次都會從這個范圍內(nèi)找到中間的那個commti讓你判斷是good 還是bad,由此往復(fù)最后幫助定位the first bad commit羽嫡。結(jié)束后記得git bisect reset回來本姥。。

6)git blame -L 35, init/version.c誰最后修改了這個文件的第35行杭棵,哪次commit做的這個修改婚惫。氛赐。其實就是本質(zhì)跟蹤一個文件的行被什么commit改過,同時提供了commiter和時間唄內(nèi)容被

2016-06-27

1) git stash會將index和working dir中的修改全部抹去

2) git branch會簡單顯示分支而git show-branch默認會列出最新到幾個分支的第一個共同的commit停止先舷。每個分支前面的+號顏色不同艰管,然后*表示的是當前active的branch。

2016-06-28

1) git log --graph以圖形的形式展示commit序列

2)git merge后如果正常merge蒋川,則會在系統(tǒng)中各自保存commit牲芋,并且會有最終的merge commit。

2016-07-03

1) git rebase branch1捺球, branch2. 將branch2接在branch1的后面

2)git rebase -i master~3 可以對多個XXX進行commit的順序調(diào)換缸浦,用squash將后一個commit與前一個合并等。

3)git stash = git stash save氮兵,將你的working dir和index保存

git stash pop將之前保存的彈出來裂逐,恢復(fù)現(xiàn)場繼續(xù)工作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泣栈,一起剝皮案震驚了整個濱河市卜高,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌南片,老刑警劉巖掺涛,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異铃绒,居然都是意外死亡鸽照,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門颠悬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人定血,你說我怎么就攤上這事赔癌。” “怎么了澜沟?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵灾票,是天一觀的道長。 經(jīng)常有香客問我茫虽,道長刊苍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任濒析,我火速辦了婚禮正什,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘号杏。我一直安慰自己婴氮,他們只是感情好,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著主经,像睡著了一般荣暮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罩驻,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天穗酥,我揣著相機與錄音,去河邊找鬼惠遏。 笑死砾跃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的爽哎。 我是一名探鬼主播蜓席,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼课锌!你這毒婦竟也來了厨内?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤渺贤,失蹤者是張志新(化名)和其女友劉穎雏胃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體志鞍,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瞭亮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了固棚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片统翩。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖此洲,靈堂內(nèi)的尸體忽然破棺而出厂汗,到底是詐尸還是另有隱情,我是刑警寧澤呜师,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布娶桦,位于F島的核電站,受9級特大地震影響汁汗,放射性物質(zhì)發(fā)生泄漏衷畦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一知牌、第九天 我趴在偏房一處隱蔽的房頂上張望祈争。 院中可真熱鬧,春花似錦送爸、人聲如沸铛嘱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墨吓。三九已至球匕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帖烘,已是汗流浹背亮曹。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秘症,地道東北人照卦。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像乡摹,于是被迫代替她去往敵國和親役耕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容