日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git 版本控制器 初学习,工作中的问题及其解决方法

發(fā)布時間:2024/4/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git 版本控制器 初学习,工作中的问题及其解决方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

one? day

1.? 下載安裝git控制器

>>>>>>(測試環(huán)境 window10)Git下載地址https://git-scm.com/downloads

>>>>>>>>>>>>>>>>>>>軟件的安裝:按照提示步驟一步安裝,安裝完成

?目前我只用到了 Git Bash

①這里安裝成功需要配置一下個人的用戶名user.name個人電子郵件地址user.email,每次提交的時候都會引用這兩條信息,說明是誰提交的,是誰更新的,這個將被納入歷史history

  • $ git config --global user.name "zhang"
  • $ git config --global user email "zhang@example.com"
  • 如果使用了--global以后的配置都默認在這個用戶下,如果需要修改就重新配置一下不加--global就可以了
  • ②可以配置自己喜歡的的外部文件編輯器比如Emacs,Git默認使用Vi或Vim 就是linux常用的編輯器

    • $ git config --global core,editor emacs

    ③查看配置信息 | 也可以直接查看某個環(huán)境變量的配置信息

    • $ git config --list? ?|? ?$ git config user.name

    ?

    2. git簡介

    git是世界上最先進的版本控制器(沒有之一),版本控制器就是假設(shè)你想找回被刪除的文件,一個個找又會很麻煩,像我之前用的保存文件副本,這樣也是不可行的這樣會經(jīng)常搞忘記這個文件是第一版本還是另外一個是了

    過了一周,你想找回被刪除的文字,但是已經(jīng)記不清刪除前保存在哪個文件里了,只好一個一個文件去找,真麻煩。

    看著一堆亂七八糟的文件,想保留最新的一個,然后把其他的刪掉,又怕哪天會用上,還不敢刪,真郁悶。

    說明一下版本控制器作用范圍

    • 只能追蹤文本的變化,for example 頁面,js ,css程序代碼等
    • 可以告訴你在哪行刪了什么文字,文段,而視頻,圖片等二進制文件還是不行的,無法跟蹤其變化
    • 只能告訴你二進制每次改動串起來,比如100kb變?yōu)榱?20KB等
    • word就是二進制文件所以-------
    • 建議使用utf-8的編碼模式,使用Notepad++文本編輯器,以為Microsoft開發(fā)的記事本會在文本之前自動添加0xefbbbf(十六進制)的字符,比如網(wǎng)頁打開可同文件頭多一個"?"


    Git的誕生 1991年linus創(chuàng)建linux,從此,linux系統(tǒng)不斷發(fā)展,已經(jīng)成為了最大的服務(wù)器系統(tǒng)軟件
    ? ? ? ? ? ? ? ? ?2002年<-linux的壯大都是靠眾多志愿者,志愿者為linux編寫代碼,再發(fā)給linus本人手動方式合并代碼
    ? ? ? ? ? ? ? ? ?為啥不linus不把linux放在CVS,SVN等免費的版本控制器上了,這些集中式的版本控制系統(tǒng)不但速度慢,而且必須聯(lián)網(wǎng)才能使用。有一些商用的版本控制系統(tǒng),雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。
    ? ? ? ? ? ? ? ? ?曾經(jīng)BitMover公司出于人道主義精神,授權(quán)Linux社區(qū)免費使用這個版本控制系統(tǒng)。當被linux社區(qū)的牛人玩壞了。BitMover公司回收linux社區(qū)的免費使用權(quán)限
    ? ? ? ? ? ? ? ? ?linus花了兩周用C自己寫了一個分布式版本管理系統(tǒng) ---Git
    ? ? ? ? ? ? ? ? ?Git迅速成為最流行的分布式版本管理系統(tǒng),尤其是2008年,GitHub的出現(xiàn)

    ?3.? 創(chuàng)建版本庫

    >>>>>>看著廖老師的博客試著操作一下

    >>>>>>>>>>>>>>>>>>>創(chuàng)建一個來測試用的文件夾

    ①打開 Git Bash

    ②創(chuàng)建一個版本庫 $ mkdir learnGit?

    ③到自己創(chuàng)建的版本庫下? $ cd learnGit

    ④查看當前路徑 $ pwd?

    ?

    ?>>>>>>>>>>>>>>>>>>>使用命令件創(chuàng)建的文件夾 learnGit文件夾變成Git倉庫

    $ git init? --------------------------------瞬間Git倉庫就建好了,而且還是個空倉庫(empty Git repository 清空Git存儲庫)

    • 此時會發(fā)現(xiàn)文件夾下多了一個.git目錄? ?$ ls -ah

    ?

    ?>>>>>>>>>>>>>>>>>>> 創(chuàng)建文件,模擬版本更新事故現(xiàn)場真實還原

    ①創(chuàng)建一個readme.txt文件夾----->第一步$ git add 添加到倉庫的暫存區(qū)(后面會介紹什么叫)------>第二步 $ git commit 把文件提交到倉庫

    • 通過圖形化操作也就是自己在window系統(tǒng)創(chuàng)建一個readme.txt添加以下字段-------------------最好是在learnGit文件下,放在別處Git再厲害也是不可能找到的
    Git is a version control system. Git is free software.
  • 使用 $ git add告訴Git將文件放到暫存區(qū)
  • 使用?$ git commit -m “this is one”-----------------------?-m后面輸入的是本次提交的說明,最好有意義,方便后面的提示?
  • add,commit可以一次提交多個文件?
  • $ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files.
  • ?

    • 提示信息:?
  • ?1 file changed:1個文件被改動(我們新添加的readme.txt文件);
  • ?2 insertions:插入了兩行內(nèi)容(readme.txt有兩行內(nèi)容)。
  • ②對readme.txt 進行多次修改

    • 再一次修改readme.txt文件加入如下字段------------------使用 $ git status命令查看掌握當前庫的狀態(tài) ---------------使用? $ git diff 查看文件到底修改了些什么
    Git is a distributed version control system. Git is free software.
  • $ git status (地位。身份。情形。狀態(tài))
  • $ git diff (difference?不同的。不一樣的)
    • 提示消息:
  • On branch master? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在分支系統(tǒng)上
  • ?Changes not staged for commit? ? ? ? ? ? 未提交的更改
  • (use "git add <file>..." to update what will be committed)? ? ?使用 “git add <file>...”更新將要提交的內(nèi)容
  • (use "git checkout -- <file>..." to discard changes in working directory)? 使用"git checkout -- <file>..."放棄工作目錄中的修改
  • modified: readme.txt? ? ? ? ? ? ? ? ? ? ? ? ? ? ?被改進的
  • no changes added to commit (use "git add" and/or "git commit -a")? 沒有添加要提交的內(nèi)容 使用?"git add"? ? and/or? ? "git commit -a"
  • ?

    • 提示消息
  • 第一行表示?diff --git a/readme.txt b/readme.txt?表示git格式的diff? 進行比較的是a版本的readme.txt(變動前)版本的readme.txt(變動后的)
  • 第二行表示兩個版本的git哈希值(index區(qū)域的6f8a38c對象,與工作目錄區(qū)域的449b072對象進行比較),最后的六位數(shù)字是對象的模式(普通文件,644權(quán)限).
  • 第三四行表示進行比較的兩個文件.---表示變動前的版本 +++表示變動后的版本
  • @編號是隔斷起始和結(jié)束。-表示第一個文件(變動前)+表示第二個文件(變動后的)
  • 綠色表示更改過的增加的內(nèi)容
  • 紅色表示刪除的內(nèi)容??-Git is free sortware Git是一個免費的軟件
  • ③提交到庫

    • 提交到暫存器 $ git add---------------------------將修改提交到庫 $ git commit -m "this is two"
  • 添加到暫存器 $ git add readme.txt?
  • 提交到庫之前我們先看看庫狀態(tài) $ git status
  • 將修改提交到庫 $ git commit -m "this is two"
    • 提示消息
  • Changes to be committed:? ? ? ? ? ? ? ? ? ? ? ? ? 要提交的更改
  • use "git reset HEAD <file>..." to unstage)? ? ? ? 使用“git reset HEAD<file>…”進行版本回退
  • 1 file changed, 3 insertions(+), 1 deletion(-)? ? 一個文件改變,3處插入,1處刪除
    ?
  • ??>>>>>>>>>>>>>>>>>>>? 版本回退

    • 和上文一樣的步驟在提交一個版本的readme.txt
    • $ git log命令查看歷史記錄,最多可以可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。
    • 如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上$git log--pretty=oneline參數(shù):

  • 首先,Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,append GPL? 8e10e6......,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數(shù)不過來,所以寫成HEAD~100。
  • 當前版本append GPL回退到上一個版本add distributed,就可以使用git reset命令:
  •   3.還可以繼續(xù)回退到上一個版本wrote a readme file,不過且慢,然我們用git log再看看現(xiàn)在版本庫的狀態(tài):

    4.最新的那個版本append GPL已經(jīng)看不到了!好比你從21世紀坐時光穿梭機來到了19世紀,想再回去已經(jīng)回不去了,腫么辦?

    辦法其實還是有的,只要上面的命令行窗口還沒有被關(guān)掉,你就可以順著往上找啊找啊,找到那個append GPL的commit id是?8e10e6...,于是就可以指定回到未來的某個版本:

    5.$ git reset --hard 8e10e6

    版本號沒必要寫全,前幾位就可以了,Git會自動去找。當然也不能只寫前一兩位,因為Git可能會找到多個版本號,就無法確定是哪一個了。

    再小心翼翼地看看readme.txt的內(nèi)容:

      6.在Git中,總是有后悔藥可以吃的。當你用$ git reset --hard HEAD^回退到add distributed版本時,再想恢復(fù)到append GPL,就必須找到append GPL的commit id。Git提供了一個命令git reflog用來記錄你的每一次命令:

      

    >>>>>>>>>>>>>>>>>>>>工作區(qū)和暫存區(qū)

    ①其實把提出這個概念,就是為了說明文件成文版本被記錄需要經(jīng)過三個過程

  • 就是自己對文件內(nèi)容的修改
  • 使用git add Git判斷是否有內(nèi)容的修改并放到stage(暫存區(qū)),暫存區(qū)可以放很多文件,你可以一次性提交也可以,分開提交到庫
  • 第三部就是使用git commit 將存放在暫存區(qū)的文件提交到 庫里面(這里得注意沒提交到暫存區(qū)的文件不會提交到庫,通過這個命令),這里面的是可以進行版本返回的 參照版本退回章節(jié)
    • Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分支master,以及指向master的一個指針叫HEAD。

    • Git非常清楚地告訴我們,readme.txt被修改了,而LICENSE還從來沒有被添加過,所以它的狀態(tài)是Untracked。現(xiàn)在,使用兩次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下:

    • 一旦提交后,如果你又沒有對工作區(qū)做任何修改,那么工作區(qū)就是“干凈”的:

    ?

    >>>>>>>>>>>>>>>>>>>>>>>>>>>.撤銷修改

    可能出錯的地方 需要還原到先前(上一個)版本

    ①還未提交還在自己的文件夾里,準備提交的時候發(fā)現(xiàn)錯誤,這個簡單可以通過手動刪除新添加的東西

    • 也可以是使用git checkout -- readme.txt(其中--和重要沒有--就是另外一個命令了)
    • git checkout -- readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:

      一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);

      一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。

      總之,就是讓這個文件回到最近一次git commit或git add時的狀態(tài)。

    ②提交了 在暫存區(qū)了已經(jīng)

    • $ git reset HEAD readme.txt
    • git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。當我們用HEAD時,表示最新的版本。
    • 再使用 git s'tatus 看見 暫存區(qū)干凈了就是工作區(qū)還有東西
    • $ git checkout -- readme.txt

    以下是我遇到的問題以及解決方法

    ?

    創(chuàng)建庫
    1. git config --global user.name "your name"
    2. git config --global user.email "815842080@qq.com"
    echo "# vue" >> README.md
    3. git init
    4. git add test.txt
    5. git commit -m "項目介紹"
    6. git remote add origin https://github.com/520Girl/vue.git
    6. git push -u origin master(dev) -u第一次提交需要這個,origin表示遠程庫默認名,master表示主分支名
    7. git remote 查看遠程倉庫名稱
    7.git remote rm origin
    9.$ git clone git@github.com:michaelliao/gitskills.git 克隆下來
    8.origin/dev 表示origin遠程庫,dev分支提交的
    版本回退
    1. git log |git log --pretty=oneline 后者簡要顯示, 按英文狀態(tài)下的q
    2. git reset --hard HEAD^ 回退到上一版本 HEAD^^ HEAD~100 1094a
    3. git reflog 記錄每一次命令

    ?

    撤銷修改
    情況分析:
    工作區(qū)修改:
    1.知道修改的內(nèi)容自己直接刪除
    2.通過 $ gti checkout -- readme.txt 回到版本庫一摸一樣的狀態(tài)
    提交到了暫存區(qū)后修改了:
    1.通過 $ git checkout --readme.txt 回到暫存區(qū)修改的狀態(tài)[注意-- 沒有這個符號表示切換到另一個分支]
    2.通過 git reset HEAD readme.txt將在暫存區(qū)的修改回退到工作區(qū)(將修改帶到工作區(qū)),之后通過 $git checkout 刪除工作區(qū)的修改
    刪除文件:
    1.rm 提示將要刪除文件
    2.git status 查看刪除的內(nèi)容
    3.git rm 確認刪除
    4.git checkout -- 回退到版本庫中最新
    分支創(chuàng)建-- 分支上可創(chuàng)建分支
    --------分支可以上傳push后,只有上傳后才能在github 上看到branches,就和master一樣dev
    --------遠程庫可以改通過git remote add $ git push jiang bug
    1.git checkout -b dev 創(chuàng)建并切換到dev
    2. git branch 查看當前分支
    3.git merge dev 分支合并 合并dev分支到master上 Fast-forward為快速模式(弊端 刪除分支后,會丟掉分支信息。)所以合并分支merge時使用
    --no-ff 取消快速模式,可以在 log下看到分支提交信息
    4. git branch -d dev 刪除分支(-D強行刪除)
    5.git log --graph --pretty=oneline --abbrev-commit 查看分支提交情況
    分支沖突問題
    描述:在dev分支上修改的文件提交成功(commit),master分支修改的文件提交成功(commit),合并,出現(xiàn)問題,
    git status查看,<<<===>>>中是錯誤,進行增刪改查,之后再次提交add-commit ,最后刪除分支
    Bug分支:
    描述:在dev上工作還沒完成,現(xiàn)在需要處理一個bug,你想新建一個分支來處理,但dev工作還沒提交---解決方案
    git stash 當前工作現(xiàn)場存儲起來,status查看不了,需要git stash list查看,恢復(fù):
    1.git stash apply stash內(nèi)容并不刪除, 可以通過git stash drop刪除
    2.git stash pop 恢復(fù)的同時吧stash內(nèi)容刪了
    3. git stash apply stash@{0} 根據(jù)指定的stash恢復(fù)(stash提交多次)
    feature分支,新功能分支,需要添加新功能需要通過在dev分支上新建一個feature分支,在上面開發(fā),完成后,合并,最后,刪除該feature分支。
    多人協(xié)作之抓取分支:
    問題描述:也就是一個倉庫通過不同的遠程庫名提交的內(nèi)容會報錯,解決方法如下,需要確認遠程庫名/分支名git config 在同一倉庫添加不同庫名(以及用戶)
    $ git branch --set-upstream-to=origin/dev dev
    Branch 'dev' set up to track remote branch 'dev' from 'origin'.

    ?

    vscode
    git pull命令用于從另一個存儲庫或本地分支獲取并集成(整合)。git pull命令的作用是:取回遠程主機某個分支的更新,再與本地的指定分支合并,它的完整格式稍稍有點復(fù)雜
    D表示刪除文件,U表示新增文件,M表示修改過的文件,點擊可查看修改內(nèi)容

    git clone 與 git pull的區(qū)別

    ?

    git clone 從遠程服務(wù)器克隆一個一摸一樣的版本庫到本地
    eg:$ git clone #版本庫網(wǎng)址# #本地目錄名#
    $ git clone git://github.com/schacon/grit.git mygrit

    ?

    git pull 從遠程服務(wù)器獲取一個分支的更新內(nèi)容,更新到本地,取回遠程主機某個分支的更新,再與本地的指定分支合并
    eg:$ git pull ##遠程主機(origin) #遠程分之(next)#:#本地分之(master)#
    cat test.txt 查看文件中的內(nèi)容
    cd..
    cd ~

    ?

    ①②③④⑤⑥⑦⑧

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/520Girl/p/10586644.html

    總結(jié)

    以上是生活随笔為你收集整理的git 版本控制器 初学习,工作中的问题及其解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。