git

Git倉庫

1.創(chuàng)建git倉庫
(1)git init:在現(xiàn)有目錄下初始化倉庫,再通過git add實(shí)現(xiàn)對(duì)指定文件對(duì)追蹤邮偎;
(2)git clone url:克隆現(xiàn)有的倉庫—自動(dòng)在當(dāng)前目錄下創(chuàng)建目錄且初始化一個(gè).git文件夾管跺,然后將從遠(yuǎn)程倉庫拉取下的數(shù)據(jù)放進(jìn).git文件夾,然后將最新版本的文件拷貝進(jìn)工作目錄禾进;

  1. git倉庫的工作區(qū)


    git項(xiàng)目的三個(gè)工作區(qū)域

    (1)工作目錄

  • 已跟蹤文件:從Git倉庫提取出文件豁跑,以供修改或使用;可通過git rm --cached xx不再跟蹤xx文件泻云,但xx文件仍存在在本地目錄中艇拍,只是不納入版本控制狐蜕;
  • 未跟蹤文件:可通過git add將其變?yōu)橐迅櫸募?br> (2)暫存區(qū):通過git add將已修改/未跟蹤的文件從工作目錄放入暫存區(qū);
    (3)Git倉庫:對(duì)暫存區(qū)的文件使用git commit卸夕,提交修改馏鹤,保存最新版本的文件快照;

Git常見命令

1.git status [-s]


靠右邊的M表示文件被修改了未放入暫存區(qū)娇哆,靠左邊的M表示文件被修改了暫存區(qū),??表示新添加未跟蹤的文件
  1. git add xx
  • 開始跟蹤新文件xx勃救;
  • 將已跟蹤的修改過的文件xx放入暫存區(qū)碍讨;
  • 將合并時(shí)發(fā)送沖突的文件標(biāo)記為已解決狀態(tài);

3.git commit
(1)git commit -m ‘xx’
(1)git commit -a -m 'xx':相當(dāng)于git add .+ git commit

撤銷&回滾

1.撤銷文件的修改
(1)git checkout -- <file> :撤銷對(duì)文件的修改— 將修改前的file文件覆蓋了該file蒙秒,此file的任何修改將會(huì)消失勃黍;
(2)git reset HEAD <file>:撤銷暫存區(qū)的文件,取消該文件的git add操作晕讲;

取消了暫存CONTRIBUTING.md文件覆获,即變?yōu)樾薷牡磿捍娴臓顟B(tài)了

2.已commit但未push到遠(yuǎn)端
(1)git commit --amend [-m 'xxx']:將這次commit與上一次commit合為一個(gè)新的commit,即commit版本號(hào)會(huì)改變瓢省,但commit次數(shù)不變弄息;

  • 提交新的修改但不增加一條新的commit記錄;
  • 只單純更改commit的提交信息勤婚,若不寫則默認(rèn)使用上次的提交信息摹量;

(2)git reset --xx <commit-id / HEAD~n>:回退到commit-id版本/回退n個(gè)版本

  • git reset --soft <commit-id / HEAD~n>回退到指定版本的commit狀態(tài),但保留了所有階段的git add操作馒胆;
    解決提交分支錯(cuò)誤的問題
  • git reset --mixed <commit-id / HEAD~n>回退到指定版本的commit狀態(tài)缨称,但工作目錄保留了修改,將目錄中所有的修改通過git add即與--soft的指令結(jié)果一樣
  • git reset --hard <commit-id / HEAD~n>回退到指定版本的commit狀態(tài)祝迂,不保留修改睦尽,可通過git reflog找到丟失的commit找回丟失的數(shù)據(jù)

3.commit之后已push到了遠(yuǎn)端git revert

遠(yuǎn)程倉庫&分支

1.git remote:查看遠(yuǎn)程倉庫—列出每一個(gè)遠(yuǎn)程倉庫的簡(jiǎn)寫;
(1)git remote -v:顯示簡(jiǎn)寫+對(duì)應(yīng)的url型雳;
(2)git remote add <shortname> <url>:添加一個(gè)遠(yuǎn)程倉庫当凡,并為其指定一個(gè)簡(jiǎn)寫;
(3)git remote show <shortname>:查看該shortname對(duì)應(yīng)的遠(yuǎn)程倉庫的相關(guān)信息纠俭;
(4)git remote rename x1 x2:將簡(jiǎn)寫名x1改為x2宁玫;
(5)git remote rm xx:移除簡(jiǎn)寫名xx對(duì)應(yīng)的遠(yuǎn)程倉庫;
2.遠(yuǎn)程分支:(remote)/(branch) — 只要不與遠(yuǎn)程倉庫的服務(wù)器連接,本地的遠(yuǎn)程分支指針就不會(huì)移動(dòng)柑晒;
3.拉扰繁瘛:本地倉庫會(huì)自動(dòng)跟蹤對(duì)應(yīng)的遠(yuǎn)程分支
(1)git fetch 遠(yuǎn)程倉庫:從指定遠(yuǎn)程倉庫中拉取本地沒有的數(shù)據(jù),但不會(huì)合并到本地分支上匙赞;

本地倉庫未與服務(wù)器連接

本地執(zhí)行fetch后佛掖,只會(huì)更新(remote)/(branch)指針的位置

(2)git pull [遠(yuǎn)程倉庫 遠(yuǎn)程分支]:git fetch+git merge — 查找當(dāng)前分支所跟蹤的服務(wù)器分支妖碉,從服務(wù)器抓取數(shù)據(jù)然后合并到本地分支;
(3)git pull --rebase [遠(yuǎn)程倉庫 遠(yuǎn)程分支]:git fetch+git rebase芥被;

[git pull & git pull --rebase]https://www.cnblogs.com/kevingrace/p/5896706.html

4.推送:git push 遠(yuǎn)程倉庫 本地分支:遠(yuǎn)程分支

5.跟蹤遠(yuǎn)程分支:git checkout -b 分支名 [remote/branch]:將遠(yuǎn)程倉庫的分支拉取到本地分支欧宜,并建立跟蹤連接—即在該跟蹤分支上輸入git pull,git能自動(dòng)識(shí)別去哪個(gè)服務(wù)器上抓取拴魄,合并到哪個(gè)分支冗茸;

6.刪除遠(yuǎn)程分支:git push 遠(yuǎn)程倉庫 --delete 分支名 — 刪除遠(yuǎn)程倉庫指定的遠(yuǎn)程分支;

git分支

1.創(chuàng)建分支
(1)git branch <分支名>:只是新建分支匹中,但不切換分支夏漱;
(2)git checkout -b <分支名>:新建并切換到該分支上;
2.分支切換:git checkout <分支名>HEAD指針指向當(dāng)前所在分支顶捷,其隨著commit操作自動(dòng)向前移動(dòng)挂绰,切換分支即切換工作目錄

不同分支對(duì)應(yīng)不同的工作目錄

3.分支的合并
(1)git merge <分支名>:將指定的分支合并到所在分支上服赎;

  • 合并沖突:兩個(gè)分支對(duì)同一文件的同一部分進(jìn)行了不同的修改則會(huì)產(chǎn)生沖突葵蒂;
    • 需要手動(dòng)去解決沖突,選擇要保留的最終內(nèi)容重虑;
    • git add將其標(biāo)記為沖突已解決践付;
    • git commit完成合并提交;


      目前三個(gè)分支

      合并操作無需解決的分歧稱為“快進(jìn)“缺厉,直接指針向前移動(dòng)

      mater與iss53有分叉荔仁,就會(huì)新建一個(gè)節(jié)點(diǎn)作為合并提交

      (2)git rebase

  • 合并沖突
    • 手動(dòng)解決沖突+git add <沖突文件>+git rebase --continue:先處理沖突再繼續(xù)合并;
    • 跳過:git rebase --skip
    • 取消合并:git rebase --abort


      將issue分支合并到master芽死,最后相當(dāng)于快進(jìn)合并

(3)git cherry-pick <commit-id>:選擇某個(gè)分支的一個(gè)或幾個(gè)commit進(jìn)行操作乏梁;

  • 應(yīng)用場(chǎng)合
    • 把弄錯(cuò)分支的提交移動(dòng)到正確的地方;
    • 把其他分支的提交添加到現(xiàn)在的分支关贵;
  • git cherry-pick <start-commit-id>...<end-commit-id>一次性將一個(gè)連續(xù)的時(shí)間序列內(nèi)的commit進(jìn)行cherry-pick操作—不包含start-commit-id的commit遇骑;
  • git cherry-pick <start-commit-id>^...<end-commit-id>[左閉,右閉]的區(qū)間揖曾,即包含了start-commit和end-commit落萎;
  • 合并沖突:手動(dòng)修改沖突 + git add .+git cherry-pick --continue;

(4)區(qū)別:比如兩個(gè)抽屜A與B都裝滿了衣服,現(xiàn)在想把B中的衣服裝入A中炭剪,則git merge是強(qiáng)制性的练链,拿起B(yǎng)就倒入A里,如滿了(沖突)再一并整理;而git rebase是一件一件根據(jù)一開始放入的順序從B往A中加,如滿了(沖突)你可以選擇處理這一件再繼續(xù)加寥殖,或跳過這一件车酣,或不再加了把A還原;

merge是沖突在最后統(tǒng)一處理淤刃,通過git add標(biāo)記沖突已解決魄宏,git commit完成合并提交罕袋;rebase是發(fā)送沖突需要先處理再繼續(xù)合并

3.分支操作
(1)git branch:查看本地git倉庫已有的分支名+所在分支潮模;
(2)git branch -d 分支名:刪除本地分支
(3)git branch -vv:查看所有本地分支&本地分支與遠(yuǎn)程分支的關(guān)系


可以看到本地分支所跟蹤的遠(yuǎn)程分支亮蛔,目前所在分支上serverfix,跟蹤teamone服務(wù)器的server-fix-good分支并且領(lǐng)先3落后1擎厢,即服務(wù)器有一次提交還未合并到本地究流,本地有三次提交未推送到服務(wù)器
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市动遭,隨后出現(xiàn)的幾起案子芬探,更是在濱河造成了極大的恐慌,老刑警劉巖沽损,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異循头,居然都是意外死亡绵估,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門卡骂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來国裳,“玉大人,你說我怎么就攤上這事全跨》熳螅” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵浓若,是天一觀的道長(zhǎng)渺杉。 經(jīng)常有香客問我,道長(zhǎng)挪钓,這世上最難降的妖魔是什么是越? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮碌上,結(jié)果婚禮上倚评,老公的妹妹穿的比我還像新娘。我一直安慰自己馏予,他們只是感情好天梧,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霞丧,像睡著了一般呢岗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天敷燎,我揣著相機(jī)與錄音暂筝,去河邊找鬼。 笑死硬贯,一個(gè)胖子當(dāng)著我的面吹牛焕襟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饭豹,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼鸵赖,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了拄衰?” 一聲冷哼從身側(cè)響起它褪,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翘悉,沒想到半個(gè)月后茫打,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妖混,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年老赤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片制市。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抬旺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祥楣,到底是詐尸還是另有隱情开财,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布误褪,位于F島的核電站责鳍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兽间。R本人自食惡果不足惜薇搁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渡八。 院中可真熱鬧啃洋,春花似錦、人聲如沸屎鳍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逮壁。三九已至孵坚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卖宠。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工巍杈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扛伍。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓筷畦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親刺洒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鳖宾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

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

  • (預(yù)警:因?yàn)樵敿?xì),所以行文有些長(zhǎng)逆航,新手邊看邊操作效果出乎你的預(yù)料) 一:Git是什么鼎文? Git是目前世界上最先進(jìn)的...
    axiaochao閱讀 1,938評(píng)論 1 8
  • 安裝Git Git的下載地址:Git官網(wǎng)下載地址 Git本地倉庫和命令 配置用戶 下載完Git后,右鍵會(huì)有一個(gè)Gi...
    TokyoZ閱讀 4,510評(píng)論 1 7
  • 一因俐、基本概念: 注:對(duì)于git的分布式概念及其優(yōu)點(diǎn)拇惋,不重復(fù)說明,自己百度或谷歌抹剩。本文中涉及到指令前面有$的撑帖,在cm...
    大廠offer閱讀 1,431評(píng)論 0 3
  • Git 安裝和使用教程 Git介紹 分布式:Git版本控制系統(tǒng)是一個(gè)分布式的系統(tǒng),是用來保存工程源代碼歷史狀態(tài)的命...
    無名_ff98閱讀 1,629評(píng)論 0 3
  • 還是老規(guī)矩吧兔,這篇看完后磷仰,還是學(xué)不會(huì)git版本控制的袍嬉,你來砍我 是兄弟就來砍我吧>嘲!伺通! Git是分布式版本控制系統(tǒng)箍土,...
    Zteen閱讀 3,188評(píng)論 0 6