耿姓的起源較為複雜,主要涉及以下幾個方面:
商朝時期。商代有君王名祖乙,他的國都從相遷到邢(又稱耿)邑,後來的盤庚又把都城遷到毫。邢邑,位於今天的河南省溫縣東。邢的讀音,古代讀做耿。盤庚遷都後,一部分商朝的公族沒有跟隨他南遷,仍然留在了邢。這一部分人就把邢作為自己的姓氏。後來為了與讀做(Xíng)的邢姓相區別,將這個姓的寫法改做耿。
姬姓。商代末年有耿國(一名耿鄉城),位於今天的陝西省龍門縣南。周朝建立後耿國滅亡,耿國子孫奔楚為大夫,以國為氏。另外,周室封同姓人於耿,又為諸侯國,春秋時又被晉國滅掉。原耿國公族多以原國名「耿」作為自己的姓氏,成為耿氏的一支。
其他來源。包括清高麗人、清滿洲人、裕固族、羌族等族群中也有改姓或冠姓為耿的人。
此外,耿姓還與明代侍御柴文的子孫有關,因得罪朝廷而遭滅族之禍,其子孫改姓耿以避難。