Git知識(shí)總結(jié)

Tips

clone單個(gè)分支

當(dāng)遠(yuǎn)程git庫(kù)體積較大,clone總是失敗時(shí),最好用以下方法Clone單個(gè)分支:


git clone http://xxx.git -b 你要的分支名 --single-branch

clone成功后,想獲取其他分支十籍,用以下命令:


git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"

git fetch --all

git放棄修改&放棄增加文件

1. 本地修改了一堆文件(并沒(méi)有使用git add到暫存區(qū)),想放棄修改唇礁。

單個(gè)文件/文件夾:


git checkout -- filename

所有文件/文件夾:


git checkout .

2.本地新增了一堆文件(并沒(méi)有g(shù)it add到暫存區(qū))勾栗,想放棄修改。

單個(gè)文件/文件夾:


rm filename / rm dir -rf

所有文件/文件夾:


git clean -xdf

  • 刪除新增的文件盏筐,如果文件已經(jīng)已經(jīng)git add到暫存區(qū)围俘,并不會(huì)刪除!

3. 本地修改/新增了一堆文件琢融,已經(jīng)git add到暫存區(qū)界牡,想放棄修改

單個(gè)文件/文件夾:


git reset HEAD filename

所有文件/文件夾:


git reset HEAD .

4. 本地通過(guò)git add & git commit 之后,想要撤銷此次commit


git reset commit_id

  • 這個(gè)id是你想要回到的那個(gè)節(jié)點(diǎn)漾抬,可以通過(guò)git log查看宿亡,可以只選前6位

  • 撤銷之后,你所做的已經(jīng)commit的修改還在工作區(qū)奋蔚!


git reset --hard commit_id

  • 這個(gè)id是你想要回到的那個(gè)節(jié)點(diǎn)她混,可以通過(guò)git log查看烈钞,可以只選前6位

  • 撤銷之后泊碑,你所做的已經(jīng)commit的修改將會(huì)清除,仍在工作區(qū)/暫存區(qū)的代碼不會(huì)清除毯欣!

配置

Git 自帶一個(gè) git config 的工具來(lái)幫助設(shè)置控制 Git 外觀和行為的配置變量馒过。

  • /etc/gitconfig 文件: 包含系統(tǒng)上每一個(gè)用戶及他們倉(cāng)庫(kù)的通用配置。 如果使用帶有 --system 選項(xiàng)的 git config 時(shí)酗钞,它會(huì)從此文件讀寫(xiě)配置變量腹忽。

  • ~/.gitconfig 或 ~/.config/git/config 文件:只針對(duì)當(dāng)前用戶来累。 可以傳遞 --global 選項(xiàng)讓 Git 讀寫(xiě)此文件。

  • 當(dāng)前使用倉(cāng)庫(kù)的 Git 目錄中的 config 文件(就是 .git/config):針對(duì)該倉(cāng)庫(kù)窘奏。

每一個(gè)級(jí)別覆蓋上一級(jí)別的配置嘹锁,所以 .git/config 的配置變量會(huì)覆蓋 /etc/gitconfig 中的配置變量。

用戶信息

當(dāng)安裝完 Git 應(yīng)該做的第一件事就是設(shè)置你的用戶名稱與郵件地址着裹。 這樣做很重要领猾,因?yàn)槊恳粋€(gè) Git 的提交都會(huì)使用這些信息,并且它會(huì)寫(xiě)入到你的每一次提交中骇扇,不可更改:


$ git config --global user.name "John Doe"

$ git config --global user.email johndoe@example.com

再次強(qiáng)調(diào)摔竿,如果使用了 --global 選項(xiàng),那么該命令只需要運(yùn)行一次少孝,因?yàn)橹鬅o(wú)論你在該系統(tǒng)上做任何事情继低, Git 都會(huì)使用那些信息。 當(dāng)你想針對(duì)特定項(xiàng)目使用不同的用戶名稱與郵件地址時(shí)稍走,可以在那個(gè)項(xiàng)目目錄下運(yùn)行沒(méi)有 --global 選項(xiàng)的命令來(lái)配置袁翁。

檢查配置信息

如果想要檢查你的配置,可以使用 git config --list 命令來(lái)列出所有 Git 當(dāng)時(shí)能找到的配置钱磅。


$ git config --list

user.name=John Doe

user.email=johndoe@example.com

color.status=auto

color.branch=auto

color.interactive=auto

color.diff=auto

...

你可以通過(guò)輸入 git config <key>: 來(lái)檢查 Git 的某一項(xiàng)配置


$ git config user.name

John Doe

獲取 Git 倉(cāng)庫(kù)

在現(xiàn)有目錄中初始化倉(cāng)庫(kù)

如果你打算使用 Git 來(lái)對(duì)現(xiàn)有的項(xiàng)目進(jìn)行管理梦裂,你只需要進(jìn)入該項(xiàng)目目錄并輸入:


$ git init

跟蹤文件


$ git add *.c

$ git add LICENSE

$ git commit -m 'initial project version'

克隆現(xiàn)有的倉(cāng)庫(kù)

克隆倉(cāng)庫(kù)的命令格式是 git clone [url] 。 比如盖淡,要克隆 Git 的可鏈接庫(kù) libgit2年柠,可以用下面的命令:


$ git clone https://github.com/libgit2/libgit2

#$ git clone https://github.com/libgit2/libgit2 mylibgit  #在克隆遠(yuǎn)程倉(cāng)庫(kù)的時(shí)候,自定義本地倉(cāng)庫(kù)的名字

這會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為 “l(fā)ibgit2” 的目錄褪迟,并在這個(gè)目錄下初始化一個(gè) .git 文件夾冗恨,從遠(yuǎn)程倉(cāng)庫(kù)拉取下所有數(shù)據(jù)放入 .git 文件夾,然后從中讀取最新版本的文件的拷貝味赃。 如果你進(jìn)入到這個(gè)新建的 libgit2 文件夾掀抹,你會(huì)發(fā)現(xiàn)所有的項(xiàng)目文件已經(jīng)在里面了,準(zhǔn)備就緒等待后續(xù)的開(kāi)發(fā)和使用心俗。

記錄每次更新到倉(cāng)庫(kù)

檢查當(dāng)前文件狀態(tài)


$ git status

On branch master

nothing to commit, working directory clean

跟蹤新文件

使用命令 git add 開(kāi)始跟蹤一個(gè)文件傲武。 所以,要跟蹤 README 文件城榛,運(yùn)行:


$ git add README

時(shí)再運(yùn)行 git status 命令揪利,會(huì)看到 README 文件已被跟蹤,并處于暫存狀態(tài):


$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

    new file:  README

暫存已修改文件


$ git add CONTRIBUTING.md

$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

    new file:  README

    modified:  CONTRIBUTING.md

git add 命令狠持。 這是個(gè)多功能命令:

  • 可以用它開(kāi)始跟蹤新文件疟位,

  • 或者把已跟蹤的文件放到暫存區(qū),

  • 還能用于合并時(shí)把有沖突的文件標(biāo)記為已解決狀態(tài)等喘垂。

將這個(gè)命令理解為“添加內(nèi)容到下一次提交中”而不是“將一個(gè)文件添加到項(xiàng)目中”要更加合適甜刻。

提交更新


$ git commit -m "Story 182: Fix benchmarks for speed"

[master 463dc4f] Story 182: Fix benchmarks for speed

2 files changed, 2 insertions(+)

create mode 100644 README

好绍撞,現(xiàn)在你已經(jīng)創(chuàng)建了第一個(gè)提交! 可以看到得院,提交后它會(huì)告訴你傻铣,當(dāng)前是在哪個(gè)分支(master)提交的,本次提交的完整 SHA-1 校驗(yàn)和是什么(463dc4f)祥绞,以及在本次提交中矾柜,有多少文件修訂過(guò),多少行添加和刪改過(guò)就谜。

跳過(guò)使用暫存區(qū)域

Git 提供了一個(gè)跳過(guò)使用暫存區(qū)域的方式怪蔑, 只要在提交的時(shí)候,給 git commit 加上 -a 選項(xiàng)丧荐,Git 就會(huì)自動(dòng)把所有已經(jīng)跟蹤過(guò)的文件暫存起來(lái)一并提交缆瓣,從而跳過(guò) git add 步驟:


$ git commit -a -m 'added new benchmarks'

[master 83e38c7] added new benchmarks

1 file changed, 5 insertions(+), 0 deletions(-)

分支

查看分支


git branch -r #查看遠(yuǎn)程分支

git branch -a #查看所有分支

會(huì)顯示


origin/HEAD -> origin/master

origin/daily/1.2.2

origin/daily/1.3.0

origin/daily/1.4.1

origin/develop

origin/feature/daily-1.0.0

origin/master

然后直接


git checkout origin/daily/1.4.1

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市虹统,隨后出現(xiàn)的幾起案子弓坞,更是在濱河造成了極大的恐慌,老刑警劉巖车荔,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渡冻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡忧便,警方通過(guò)查閱死者的電腦和手機(jī)族吻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)珠增,“玉大人超歌,你說(shuō)我怎么就攤上這事〉俳蹋” “怎么了巍举?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)凝垛。 經(jīng)常有香客問(wèn)我懊悯,道長(zhǎng),這世上最難降的妖魔是什么梦皮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任炭分,我火速辦了婚禮,結(jié)果婚禮上届氢,老公的妹妹穿的比我還像新娘欠窒。我一直安慰自己覆旭,他們只是感情好退子,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布岖妄。 她就那樣靜靜地躺著,像睡著了一般寂祥。 火紅的嫁衣襯著肌膚如雪荐虐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天丸凭,我揣著相機(jī)與錄音福扬,去河邊找鬼。 笑死惜犀,一個(gè)胖子當(dāng)著我的面吹牛铛碑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虽界,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼汽烦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了莉御?” 一聲冷哼從身側(cè)響起撇吞,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎礁叔,沒(méi)想到半個(gè)月后牍颈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡琅关,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年煮岁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涣易。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡人乓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出都毒,到底是詐尸還是另有隱情色罚,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布账劲,位于F島的核電站戳护,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瀑焦。R本人自食惡果不足惜腌且,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榛瓮。 院中可真熱鬧铺董,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至重付,卻和暖如春顷级,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背确垫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工弓颈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人删掀。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓翔冀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親披泪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子橘蜜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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