Git 2.常用命令

1.Git環(huán)境配置

設(shè)置用戶(hù)信息

  • 注意:這個(gè)設(shè)置的用戶(hù)信息和郵箱和gitee沒(méi)有關(guān)系
 git config --global user.email “郵箱”
 git config --global user.name “名字”

查看配置信息

git config --list   
git config user.name

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

一.在本地初始化一個(gè)Git倉(cāng)庫(kù)

  • 1.創(chuàng)建一個(gè)空目錄作為我們的本地倉(cāng)庫(kù)
  • 2.進(jìn)入目錄中,點(diǎn)擊右鍵打開(kāi)Git bash 窗口
  • 3.執(zhí)行命令 git init

二.從遠(yuǎn)程倉(cāng)庫(kù)克隆

  • git clone 倉(cāng)庫(kù)Https的路徑

3. 工作目錄晋南、暫存區(qū)以及版本庫(kù)的概念與關(guān)系

一.版本庫(kù)

  • 在我們創(chuàng)建好的本地倉(cāng)庫(kù)里 .git隱藏文件夾就是版本庫(kù),版本庫(kù)存儲(chǔ)了很多配置信息,日志文件和文件版本信息等

二.工作目錄(工作區(qū))

  • 包含.git文件夾的目錄就是工作區(qū)目錄,主要用于存放開(kāi)發(fā)的代碼

三.暫存區(qū)

  • .git文件夾中有很多文件,其中有一個(gè)index文件就是暫存區(qū),也可以叫做stage,暫存區(qū)是一個(gè)臨時(shí)保存修改文件的地方

四.關(guān)系


4.Git目錄下文件的二種狀態(tài)以及查看文件狀態(tài)命令

一.untracked 未跟蹤(未被納入版本控制)

二.tracked 已跟蹤(被納入版本控制)

  • Unmodified 未被修改狀態(tài)
  • Modified 已修改狀態(tài)
  • Staged 已暫存狀態(tài)

這些文件狀態(tài)會(huì)隨著我們執(zhí)行Git命令發(fā)生變化

三.查看文件狀態(tài)

     git status  
  • On branch master 表示當(dāng)前處于master分支
  • Your branch is up to date with 'origin/master'. 表示當(dāng)前分支處于最新?tīng)顟B(tài)
  • modified: README.md 表示當(dāng)前 README.md 這個(gè)文件處于已修改狀態(tài)
  • Untracked files (use "git add <file>..." to include in what will be committed) heool.txt 表示當(dāng)前heool.txt文件處于為跟蹤狀態(tài)文件(新添加文件的狀態(tài))
 git  status -s  使輸出更加簡(jiǎn)介
  • M 代表已修改狀態(tài)
  • ??表示為跟蹤狀態(tài)

5.對(duì)本地倉(cāng)庫(kù)的操作

一. 添加文件
1.將未跟蹤的文件加入暫存區(qū)

  git  add  文件名稱(chēng)

2.將暫存區(qū)的文件提交到本地倉(cāng)庫(kù)

 git  commit -m "日志敘述"

git  commit "不加-m,進(jìn)入文本編輯器中   i = 進(jìn)行編輯  esc = 退出編輯  :wq = 保存并退出  
:q 不保存直接退出"   這里的文檔操作,與Linux的一樣

二. 將新創(chuàng)建的文件加入暫存區(qū)查看文件狀態(tài)

 git add   文件名
 git status  -s
  • A 表示文件加入暫存區(qū)

三.將已跟蹤的文件變?yōu)槲锤?/p>

git  reset  文件名

四.刪除文件

  • 1.通過(guò)命令來(lái)刪除
git  rm  文件名

注意 : 這個(gè)命令只是刪除的工作區(qū)的文件,本地倉(cāng)庫(kù)還有對(duì)應(yīng)的文件

刪除本地倉(cāng)庫(kù)對(duì)應(yīng)的文件(只需要提交命令到本地倉(cāng)庫(kù))

git  commit  -m  "敘述"
  • 2.如果你直接刪除對(duì)應(yīng)的文件夾
    直接去刪除文件夾(git默認(rèn)沒(méi)有將刪除操作加入到暫存區(qū))
  • deleted: txt.txt 文件代表刪除沒(méi)有加入緩存區(qū)
  • D txt.txt 為簡(jiǎn)寫(xiě)

這時(shí)候進(jìn)行commit提交無(wú)法操作

解決方法

  • 1.使用git add 刪除文件夾名 加到暫存區(qū)
  • 2.執(zhí)行g(shù)it commit -m "日志敘述"

五.將文件添加至忽略列表

  • 應(yīng)用場(chǎng)景: 一般我們總會(huì)有文件無(wú)需納入Git管理,也不希望它們出現(xiàn)在未跟蹤文件列表,通常都是自動(dòng)生成的文件,java為例 : 編譯文件 , .idea , target ,在這種情況下我們可以在工作目錄創(chuàng)建一個(gè)名為 .gitignore的文件(文件名稱(chēng)固定) ,列出要忽略的文件模式

  • 1.創(chuàng)建.gitignore文件

    • 直接在windows是不能創(chuàng)建文件的

通過(guò)命令來(lái)創(chuàng)建忽略文件

      touch .gitignore
  • 2.編寫(xiě)忽略后綴
*.class
    1. 效果查看
 git  status

只有我們創(chuàng)建的忽略文件沒(méi)有加入暫存區(qū),class文件已經(jīng)忽略

六.查看日志記錄

  git  log 
  • 如果你操作比較多,日志一頁(yè)存放不下,使用Enter 繼續(xù)查看其他日志,q退出日志

6.對(duì)遠(yuǎn)程倉(cāng)庫(kù)的命令操作

一.查看遠(yuǎn)程倉(cāng)庫(kù)

  • 1.簡(jiǎn)略查看
  • 如果想查看已經(jīng)配置遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器,可以運(yùn)行 git remote
    它會(huì)列出指定的每一個(gè)遠(yuǎn)程服務(wù)器的簡(jiǎn)寫(xiě)

    如果已經(jīng)克隆了遠(yuǎn)程倉(cāng)庫(kù),那么至少應(yīng)該能看到origin,這是Git克隆的倉(cāng)庫(kù)服務(wù)器默認(rèn)名字
  • 2.列出詳細(xì)信息紫皇,在每一個(gè)名字后面列出其遠(yuǎn)程url
  git  remote  -v
  • 3.顯示遠(yuǎn)程倉(cāng)庫(kù)與本地倉(cāng)庫(kù)的關(guān)聯(lián)信息
 git remote  show  origin
  • remote origin => 遠(yuǎn)程倉(cāng)庫(kù)的名稱(chēng)
  • HEAD branch :master=>當(dāng)前分支為master
  • Remote branch: master tracked =>表示當(dāng)前master與遠(yuǎn)程分支master有追蹤關(guān)系

二.添加遠(yuǎn)程倉(cāng)庫(kù)

  • 1.使用命令
 git  remote add  origin   "創(chuàng)建的遠(yuǎn)程倉(cāng)庫(kù)HTTPS地址"

三.從遠(yuǎn)程倉(cāng)庫(kù)克隆

  • 1.克隆遠(yuǎn)程倉(cāng)庫(kù)命令
 git   clone  [url]
  • git克隆的是該倉(cāng)庫(kù)服務(wù)器上的幾乎所有的數(shù)據(jù)(包括日志信息蜜徽、歷史記錄等),而不僅僅是復(fù)制工作文件.當(dāng)你執(zhí)行g(shù)it clone 命令的時(shí)候,默認(rèn)配置下遠(yuǎn)程Git倉(cāng)庫(kù)中的每一個(gè)版本都將被拉取下來(lái)

四.移除無(wú)效的遠(yuǎn)程倉(cāng)庫(kù)

  • 1.移除遠(yuǎn)程倉(cāng)庫(kù)
 git  remote rm  倉(cāng)庫(kù)名稱(chēng)
  • 注意: 此命令只是從本地移除遠(yuǎn)程倉(cāng)庫(kù)的記錄,并不會(huì)真正影響遠(yuǎn)程倉(cāng)庫(kù)

五.從遠(yuǎn)程倉(cāng)庫(kù)中抓取與拉取

  • 1.git fetch(抓取) 是從遠(yuǎn)程倉(cāng)庫(kù)獲取最新版本到本地倉(cāng)庫(kù),不會(huì)自動(dòng)merge(合并到本地工作區(qū))
 git  fetch  origin master 
  • 將遠(yuǎn)程倉(cāng)庫(kù)的文件保存在本地倉(cāng)庫(kù),但是并不會(huì)顯示出來(lái),存儲(chǔ)在.git/object文件夾中,以二進(jìn)制的文件方式保存
  • 合并命令(顯示到工作區(qū))
git merge origin/master
  • 進(jìn)行合并,顯示到文件夾中
  • 2.git pull (拉取) 是從遠(yuǎn)程倉(cāng)庫(kù)獲取最新版本并merge(合并)到本地倉(cāng)庫(kù)
 git  pull  origin 分支名稱(chēng)
  • 第一種應(yīng)用場(chǎng)景: 我們想要獲取遠(yuǎn)程倉(cāng)庫(kù)的代碼
    1. 初始化倉(cāng)庫(kù)
  • 2.添加遠(yuǎn)程倉(cāng)庫(kù)地址
  • 3.進(jìn)行pull
  • 第二種應(yīng)用場(chǎng)景: 如果當(dāng)前本地倉(cāng)庫(kù)不是遠(yuǎn)程倉(cāng)庫(kù)克隆,而是本地創(chuàng)建的倉(cāng)庫(kù),并且倉(cāng)庫(kù)中存在文件
  • 1.初始化倉(cāng)庫(kù)
  • 2.查看倉(cāng)庫(kù)文件狀態(tài)
  • 3.添加對(duì)應(yīng)的文件從工作區(qū)到暫存區(qū)


  • 4.提交對(duì)應(yīng)的文件從暫存區(qū)到版本庫(kù)

    -5.添加遠(yuǎn)程倉(cāng)庫(kù)

    注意:報(bào)錯(cuò)為fatal: refusing to merge unrelated histories =>遠(yuǎn)程倉(cāng)庫(kù)和本地倉(cāng)庫(kù)的文件不同或版本不同
  • 6.強(qiáng)行進(jìn)行拉取(將本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行合并)
git pull origin master --allow-unrelated-histories

六. 將本地倉(cāng)庫(kù)推送到遠(yuǎn)程倉(cāng)庫(kù)

  • 1.首先讓修改文件加入版本庫(kù)
 git commit -a -m "日志名稱(chēng)"
  • -a:可只將所有被修改或者已刪除的且已經(jīng)被git管理的文檔提交倒倉(cāng)庫(kù)中。如果只是修改或者刪除了已被Git 管理的文檔咕娄,是沒(méi)必要使用git add 命令的。
  • 2.推送到遠(yuǎn)程倉(cāng)庫(kù)
 git push [remote-name] [branch-name]

七.git 分支

一.分支有什么好處

幾乎所有的版本控制系統(tǒng)都以某種形式支持分支
使用分支意味著你可以把你的工作從開(kāi)發(fā)主線(xiàn)上分離開(kāi)來(lái),以免影響開(kāi)發(fā)主線(xiàn)
Git的master分支并不是一個(gè)特殊的分支,它和其他分支沒(méi)有區(qū)別,之所以幾號(hào)每一個(gè)倉(cāng)庫(kù)都有一個(gè)
master,是因?yàn)間it init 命令默認(rèn)去創(chuàng)建它,并且大多數(shù)人都懶得去改動(dòng)它

二.查看分支

  • 1.本地分支
 git branch
  • 2.遠(yuǎn)程分支
    git branch -r
  • 3.查看所有分支
git branch -a
  • "*" 代表當(dāng)前處于什么分支

二.創(chuàng)建分支(創(chuàng)建的本地分支)

      git  branch 分支名稱(chēng)
  • 這是在master分支下創(chuàng)建的b1分支 ==> b1分支的內(nèi)容和master的一樣

三.切換分支(切換本地分支)

     git checkout 分支名稱(chēng)

四.將本地分支推送至遠(yuǎn)程倉(cāng)庫(kù)分支

git push  origin  分支名稱(chēng)
(不管當(dāng)前處于那個(gè)分支,都可以提交其他分支)
 例如 b1分支可以上傳b2分支

五.合并分支

    1. 將b2 分支內(nèi)容合并到master分支中(在master分支下面進(jìn)行操作)
git merge  合并分支名稱(chēng)
    1. 有時(shí)候合并操作不會(huì)如此順利,如果你在二個(gè)不同的分支中,對(duì)同一個(gè)文件的同一個(gè)部分
      進(jìn)行了不同的修改,Git看沒(méi)有辦法合并它們,同時(shí)會(huì)提示文件沖突,
      此時(shí)需要我們打開(kāi)沖突文件并修復(fù)沖突內(nèi)容,最后執(zhí)行g(shù)it add命令來(lái)標(biāo)識(shí)沖突已解決


  • Automatic merge failed : fix conficts and then commit the result=> 自動(dòng)合并失敗:修復(fù)沖突珊擂,然后提交結(jié)果
  • b2和master分支User.java都進(jìn)行了修改之后,出現(xiàn)了沖突,我們需要手動(dòng)進(jìn)行修改
  • 使用git add 進(jìn)行標(biāo)識(shí)(表明我們已經(jīng)手動(dòng)處理好沖突)
  • 3.將新添加的文件推送到遠(yuǎn)程倉(cāng)庫(kù)
 git push  origin 分支名稱(chēng)

六.刪除分支

  • 1.刪除本地分支
    git branch -d  分支名稱(chēng)
  • 我在修改完b2分支User.java,并沒(méi)有推送到遠(yuǎn)程倉(cāng)庫(kù),

    造成遠(yuǎn)程倉(cāng)庫(kù)分支與本地倉(cāng)庫(kù)分支有不同出現(xiàn)這個(gè)錯(cuò)誤,提醒你代碼不同
  • 如果要?jiǎng)h除分支中進(jìn)行了一些開(kāi)發(fā)動(dòng)作,此時(shí)執(zhí)行上面的刪除命令并不會(huì),
    刪除分支,如果堅(jiān)持要?jiǎng)h除分支 git branch -D 分支名稱(chēng)

注意:當(dāng)前在b2分支下刪除b2分支是不允許的,需要切換到不同分支

  • 2.刪除遠(yuǎn)程倉(cāng)庫(kù)分支
 git  push origin -d 分支名稱(chēng)

八.標(biāo)簽

一.標(biāo)簽的作用

  • 像其他版本控制系統(tǒng)(VCS)一樣,GIt可以給歷史的某一個(gè)提交打上標(biāo)簽,以示重要.
    用這個(gè)功能來(lái)標(biāo)記發(fā)布節(jié)點(diǎn)(v1.0,v2.0).標(biāo)簽是值某一個(gè)分支特定時(shí)間點(diǎn)的狀態(tài)
    通過(guò)標(biāo)簽,可以很方便的切換記錄時(shí)的狀態(tài)

二.列出已有標(biāo)簽

    1. 列出所有標(biāo)簽
         git  tag
  • 2.查看tag信息
     git  show  [tag]

三.創(chuàng)建新標(biāo)簽

  • 1.新建標(biāo)簽
   git  tag  [tagName]

四. 將標(biāo)簽推送至遠(yuǎn)程倉(cāng)庫(kù)

  • 1.提交指定tag
     git  push origin  [tag]

五. 檢出標(biāo)簽

  • 1.新建一個(gè)分支,指向某個(gè)tag
  git checkout -b [branch] [tag]
  • 新建一個(gè)分支為b3,b3的內(nèi)容為v1.0版本


  • 2.應(yīng)用場(chǎng)景
    • 在不改變?cè)邪姹镜幕A(chǔ)上,進(jìn)行升級(jí)
    • 新建分支為b3,版本內(nèi)容為v1.0
    • 進(jìn)行下步開(kāi)發(fā)時(shí),修改b3內(nèi)容,進(jìn)行提交
    • 創(chuàng)建新版本,進(jìn)行上傳遠(yuǎn)程倉(cāng)庫(kù)

六.刪除標(biāo)簽

  • 1.刪除本地標(biāo)簽
git tag  -d [tag]
    1. 刪除遠(yuǎn)程標(biāo)簽
git push origin :refs/tags/[tag]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末圣勒,一起剝皮案震驚了整個(gè)濱河市费变,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌圣贸,老刑警劉巖挚歧,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異吁峻,居然都是意外死亡滑负,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)用含,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)矮慕,“玉大人,你說(shuō)我怎么就攤上這事耕餐》哺担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵肠缔,是天一觀(guān)的道長(zhǎng)夏跷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)明未,這世上最難降的妖魔是什么槽华? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮趟妥,結(jié)果婚禮上猫态,老公的妹妹穿的比我還像新娘。我一直安慰自己披摄,他們只是感情好亲雪,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著疚膊,像睡著了一般义辕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寓盗,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天灌砖,我揣著相機(jī)與錄音,去河邊找鬼傀蚌。 笑死基显,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的善炫。 我是一名探鬼主播撩幽,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼箩艺!你這毒婦竟也來(lái)了摸航?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酱虎,失蹤者是張志新(化名)和其女友劉穎雨膨,沒(méi)想到半個(gè)月后聊记,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體排监,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒿往。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盛垦。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瓤漏,靈堂內(nèi)的尸體忽然破棺而出腾夯,到底是詐尸還是另有隱情,我是刑警寧澤蔬充,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布蝶俱,位于F島的核電站,受9級(jí)特大地震影響饥漫,放射性物質(zhì)發(fā)生泄漏榨呆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一趾浅、第九天 我趴在偏房一處隱蔽的房頂上張望愕提。 院中可真熱鬧馒稍,春花似錦皿哨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至鼓黔,卻和暖如春央勒,著一層夾襖步出監(jiān)牢的瞬間不见,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工崔步, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稳吮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓井濒,卻偏偏與公主長(zhǎng)得像灶似,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瑞你,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359