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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Git和Github的区别与操作简介

發布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git和Github的区别与操作简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1,常見版本管理工具介紹 及 版本工具作用
  • 2,git、GitHub和SVN比較
  • 3,本地git基本使用命令
  • 4,使用git操作GitHub
  • 5,配置win10當前用戶對GitHub所有項目有權限(git push不必輸入密碼)
  • 6,配置Linux當前用戶對GitHub指定項目有權限(git push不必輸入密碼)
  • 7,git分支管理(創建&合并分支)
  • 8,git stash (bug分支)
  • 9,多人協作開發
  • 10,vim .gitignore (指定那些文件不需要git管理)
  • 11,Git基本常用命令
  • 12,刪除GitHub中創建的項目

1,常見版本管理工具介紹 及 版本工具作用

1. 為什么要使用版本控制

1)假設你在的公司要上線一個新功能,你們開發團隊為實現這個新功能,寫了大約5000行代碼,上線沒2天,就發現這個功能用戶并不喜歡,你老板讓你去掉這個功能,你怎么辦?
2)你說簡單,直接把5000行代碼去掉就行了,但是我的親,說的簡單,你的這個功能寫了3周時間,但你還能記得你是新增加了哪5000行代碼么?
3)所以你急需要一個工具,能幫你記錄每次對代碼做了哪些修改,并且可以輕易的把代碼回滾到歷史上的某個狀態。 這個神奇的工具就叫做版本控制

2. 版本控制工具主要實現2個功能

1)版本管理
在開發中,這是剛需,必須允許可以很容易對產品的版本進行任意回滾,版本控制工具實現這個功能的原理簡單來講,就是你每修改一次代碼,它就幫你做一次快照

2)協作開發
   a. 一個復雜點的軟件,往往不是一個開發人員可以搞定的,公司為加快產品開發速度,會招聘一堆跟你一樣的開發人員開發這個產品
   b. 拿微信來舉例,現在假設3個人一起開發微信,A開發聯系人功能,B開發發文字、圖片、語音通訊功能,C開發視頻通話功能, B和C的功能都是要基于通訊錄的
   c. 你說簡單,直接把A開發的代碼copy過來,在它的基礎上開發就好了,可以,但是你在他的代碼基礎上開發了2周后,這期間A沒閑著,對通訊錄代碼作了更新,此時怎么辦?你和他的代碼不一致
   d. 此時我們知道,你肯定要再把A的新代碼拿過來替換掉你手上的舊通訊錄功能代碼, 現在人少,3個人之間溝通很簡單,但想想,如果團隊變成30個人呢?
   e. 來回這樣copy代碼,很快就亂了, 所以此時亟需一個工具,能確保一直存儲最新的代碼庫,所有人的代碼應該和最新的代碼庫保持一致

3. 常見版本管理工具介紹

  • 3.1、SVN --CollabNet Subversion
  • SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而干活的時候,用的都是自己的電腦,
  • 所以首先要從中央服務器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服務器。
  • 集中式版本控制系統是必須聯網才能工作,如果在局域網還可以,帶寬夠大,速度夠快,如果在互聯網下,如果網速慢的話,就納悶了。
  • 3.2、Git

  • Git是分布式版本控制系統,那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,
  • 這樣,工作的時候就不需要聯網了,因為版本都是在自己的電腦上。
  • 你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了,當然也可以推送到git的倉庫中,比如GitHub
  • 2,git、GitHub和SVN比較

    1. Git

    1、git是一個版本管理工具,是可以在你電腦不聯網的情況下,只在本地使用的一個版本管理工具
    2、其作用就是可以讓你更好的管理你的程序,比如你原來提交過的內容,以后雖然修改了,但是通過git這個工具,可以把你原來提交的內容重現出來

    2. GitHub

    1、github是一個網站,就是每個程序員自己寫的程序,可以在github上建立一個網上的倉庫,
    2、你每次提交的時候可以把代碼提交到網上,,這樣你的每次提交,別人也都可以看到你的代碼,同時別人也可以幫你修改你的代碼,這種開源的方式非常方便程序員之間的交流和學習
    3、github是一個非常適合程序員交流的網站,很多國際上的技術大牛都在github上有自己的開源代碼,其他人只要申請個賬號就可以隨意的看到這些大牛寫的程序
       總結: git可以認為是一個軟件,能夠幫你更好的寫程序,github則是一個網站,這個網站可以幫助程序員之間互相交流和學習。

    3. SVN與git比較

    1、Git是分布式的,SVN是集中式的,好處是跟其他同事不會有太多的沖突,自己寫的代碼放在自己電腦上,一段時間后再提交、合并,也可以不用聯網在本地提交
    2、Git下載下來后,在本地不必聯網就可以看到所有的log,很方便學習,SVN卻需要聯網;
    3、Git鼓勵分Branch,而SVN,說實話,我用Branch的次數還挺少的,SVN自帶的Branch merge我還真沒用過
    4、SVN在Commit前,我們都建議是先Update一下,跟本地的代碼編譯沒問題,并確保開發的功能正常后再提交,這樣其實挺麻煩的,有好幾次同事沒有先Updat,Commit了,發生了一些錯誤,Git可能這種情況

    3,本地git基本使用命令

    1. 創建git版本庫

    1、版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,
    2、這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
    3、所以,創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目
    4、瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository)
    5、細心的讀者可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。

      mkdir s15_gitpro #先創建一個項目cd s15_gitpro/ #切換到這個項目目錄git init #初始化這個

    2. 工作區、暫存區、代碼倉庫

    1、工作區: 就是你在電腦上看到的目錄,比如目錄下testgit里的文件(.git隱藏目錄版本庫除外)。
    2、暫存區 : 暫存區就是文件夾 .git中的一個小部分(.git文件夾就是版本庫)
    3、版本庫:工作區有一個隱藏目錄.git,這個不屬于工作區,這是版本庫, 版本庫中還有Git為我們自動創建了第一個分支master,以及指向master的一個指針HEAD
    4、 把文件添加到版本庫分為以下三步:
        1)vim Readme #工作區(Working Zone) 比如在mkdir s15_gitpro下執行創建文件命令
        2)git add #暫存區(Stage zone)
        3)git commit #代碼倉庫(Repository master) 只有提交到代碼庫才能被git管理

    3、本地git基本命令

    • 1、將文件添加到倉庫
    git add Readme #指定將Readme文件添加到暫存區git add . #將當前目錄中的所有文件全部添加到暫存區git status #查看更改了哪些,創建了哪些,哪些沒有添加到倉庫,哪些添加到了倉庫git status diff readme #查看readme文件具體修改了哪些git commit -m "commit tag" # git commit告訴Git,把文件提交到倉庫-m后面輸入的是本次提交的說明(版本名字)說明:# 執行git commit 命令時必須配置用戶信息git config --global user.name "Tom Git"git config --global user.email tom@example.com
    • 2、回滾
    git log #查看所有提交到倉庫的版本記錄: git log -2 git reflog #查看所有操作記錄(狀態的md5值和改變的值) git reset --hard d9e0ed0 #回到指定版本(d9e0ed0是創建版本的MD5值得前6位或者7位) git reset --hard HEAD^ #回到上一個版本 注:這樣可以回到第一次提交到倉庫的狀態,但再使用git log看不到其他幾次的md5值了

    3、撤銷修改

    vim Readme #我們在Readme文件中寫了一些錯誤的代碼 git add . #然后又一不小心將文件從工作區提交到了 stage區 git reset HEAD Readme #將Readme中剛提交到 stage區 的代碼撤回到工作區 git status #查看目前工作區狀態 git checkout -- Readme #將Readme在工作區錯誤的代碼丟棄

    4、刪除操作(兩種方法)

    方法1:這種方法需要執行git add . rm Readmegit add .git commit -m "delete file by git rm"git reset --hard HEAD^ 方法2:這種方法可以省去執行git add .git rm Readmegit commit -m "delete file by git rm"git reset --hard HEAD^

    注: 在沒有git commit前,使用 git checkout – Readme 可以恢復刪除的文件(Readme)

    5、強制使用master覆蓋本地代碼

    $ git fetch --all$ git reset --hard origin/master$ git pull

    4,使用git操作GitHub

    1、登錄https://github.com 創建一個github項

    2、選擇創建一個新項目,還是將本地的項目推到github這個項目里

    3、將本地已有的項目上傳到GitHub中

    1)這里我們選擇使用HTTPS的方法,講本地已有項目提交到GitHub中
    2)在本地Git對應的項目下執行這條命令,配置,將以后的內容提交到這個路徑下即:GitHub對應的項目中
          git remote add origin https://github.com/Tom7481079/s15_proj.git #設置代碼提交url路徑
          git remote rm origin # 刪除設置的代碼提交url路徑
    3)將本地的項目推到GitHub中(需要輸入GitHub網站的用戶名和密碼)
       git push -u origin master # 將本地代碼push到GitHub中
    4)然后刷新頁面即可在網頁中看到我們本地的項目上傳成功了

    4、GitHub中文件與本地項目不一致時上傳到GitHub報錯解決方法

    方法一:使用強制push的方法,這樣會使遠程修改丟失,一般是不可取的,尤其是多人協作開發的時候。
       git push -u origin master -f

    方法二:push前先將遠程repository修改pull下來
        git pull origin master # 先將GitHub中的文件下載到本地
        git push -u origin master # 然后在push到GitHub中
    注:執行git pull是如果只有GitHub中修改,會自動合并,如果本地也有修改必須手動合并才能正常git push

    方法三:若不想merge遠程和本地修改,可以先創建新的分支:
         git branch [name] # 新建一個分支
         git push -u origin [name] # 提交到分支中

    5,配置win10當前用戶對GitHub所有項目有權限(git push不必輸入密碼)

    1、使用命令生成公鑰和私鑰(在git命令行中執行)

    ssh-keygen.exe #生成一對公鑰和私鑰C:\Users\tom\.ssh #這里是生成的秘鑰地址

    2、將公鑰上傳到GitHub中

    • 1, 第一步

    • 2, 第二步

    • 3, 第三步

    • 4, 第四步

    3. 更改本地push方式為ssh

    • 1, 配置完公鑰后還需要將GitHub項目的push方式改成ssh

    • 2, 更改本地push方式為ssh

    1) vim .git/config
    2) 將已有的https的路徑替換成ssh模式,即上面復制的地址
            #url = https://github.com/Tom7481079/s15_proj.git
            url = git@github.com:Tom7481079/s15_proj.git

    • 3、此時再執行品push命令時就不會再讓輸入用戶名和密碼了

    git push origin master

    6,配置Linux當前用戶對GitHub指定項目有權限(git push不必輸入密碼)

    1、在centos系統中創建密鑰對

    ssh-keygen #給當前用戶創建公鑰私鑰 vim ~/.ssh/id_rsa.pub #將當前用戶公鑰放到GitHub對應項目中

    2、將生成的公鑰放到GitHub指定項目中

    • 1、打開指定項目的settings配置

    • 2、選中這個

    • 3、點擊: “Add deploy key” 并粘貼密鑰

    7,git分支管理(創建&合并分支)

    1、分支管理的作用

    1、假設你準備開發一個新功能,但是需要兩周才能完成,第一周你寫了50%的代碼,如果立刻提交,由于代碼 還沒寫完,不完整的代碼庫會導致別人不能干活了
    2、如果等代碼全部寫完再一次提交,又存在丟失每天進度的巨大風險。
    3、現在有了分支,你創建了一個屬于你自己的分支,別人看不到,還繼續在原來的分支上正常工作
    4、而你在自己的分支上干活,想提交就提交,直到開發完畢后,再一次性合并到原來的分支上,這樣,既安全,又不影響別人工作
    5、 其他版本控制系統如SVN等都有分支管理,但是用過之后你會發現,這些版本控制系統創建和切換分支比蝸牛還慢,簡直讓人無法忍受,結果分支功能成了擺設,大家都不去用
    6、 但Git的分支是與眾不同的,無論創建、切換和刪除分支,Git在1秒鐘之內就能完成!無論你的版本庫是1個文件還是1萬個文件

    2、分支管理-----創建分支

    git branch #查看現有分支git checkout -b dev #創建并切換到分支dev, -b參數指切換dev分支git checkout master #從dev分支切換到mastergit branch -D bug-101 #刪除本地分支bug-101此時對項目進行修改git add . #提交到舞臺區git commit -m "update readme" #提交到倉庫git push origin dev #將跟新內容提交到分支dev中而不是master中

    3、如何將分支dev中的代碼合并到主分支master中

    git checkout master #從dev分支切換到mastergit pull #將master上的項目下載到本地git merge dev #在master上執行這條命令,試圖合并master和dev(報錯,master更新了)vim Readme #將不一致的地方手動合并git add .git push origin master #手動合并后就可以將dev分支上修改的東西上傳到GitHub的master中了git log –graph #查看從什么地方出現的分支

    4、分支取名規范

    1、方法1: 使用人名作為分支名(傳統開發每個人負責一個功能模塊)
    2、方法2: 根據功能模塊設置分支名(如: feature-100 hotfix-99)

    5、全局dev分支(相當于上生產環境前的測試分支)

    1、master是不能再上面開發的(master必須是一個穩定版本)
    2、所以會有一個全局dev分支,這樣就有三種,master,dev,和每個人自己的分支
    3、只有在全局dev中沒問題后才會真正pull到master中

    8,git stash (bug分支)

    1、git stash 使用場景

    1、當正在其它分支寫代碼時突然有一個在master上發現一個bug需要立刻修改
    2、這時當然你可以將正在修改的內容先提交到自己的分支中再切換到bug分支,但比較麻煩
    3、這里就可以執行git stash 命令可以將現在這個狀態臨時保存起來

    2、git stash使用

    • 1、在dev工作區正在寫東西,突然有個bug需要立刻修改
    vim Readme #突然出現了一個bug git stash #將dev中未保存的文件放到一個臨時區(以免帶到了bug分支中)

    • 2、切換到bug-100分支,修復bug,并提交到本地倉庫
    git checkout -b bug-100 #創建并切換到bug-100分支 vim Readme #在bug-100分支中修復bug git add . #將修改內容保存到bug-100分支的舞臺區 git commit -m 'commit-100-bug' #提交到倉庫

    • 3、切換到master合并bug-100并提交到GitHub
    git checkout master #切換到master git merge bug-100 #合并master和bug-100分支 git push origin master #將修改后的內容推送到GitHub上(即可更新master)

    • 4、再次切換到dev分支,恢復以前的狀態
    git checkout dev #再次切換到dev分支 git status #dev分支的工作區沒有東西 more Readme #發現以前在dev工作區正在修改未提交到本地倉庫的東西沒有了 git stash list #查看使用git stash 臨時保存的文件 git stash apply #恢復上次使用git stash 臨時保存的文件 git status #可以看到又回到了,切換到bug-100分支前的修改狀態了

    • 5、git stash的其他操作
    git stash drop #刪除最久的那個使用git stash 保存的臨時狀態 git stash apply stash@{0} #指定恢復到那個臨時狀態 git stash pop #恢復并刪除上一個臨時狀態1:git stash apply恢復,恢復后,stash內容并不刪除,你需要使用命令git stash drop來刪除注2:另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了。

    9,多人協作開發

    1、第一步:在win10中clone GitHub中的項目并創建dev分支

    cd c:/ mkdir win10_pro cd win10_pro/ git clone https://github.com/Tom7481079/test_github.git cd test_github/ git checkout -b dev # 此時到Linux中操作

    2、第二步:在Linux中也clone GitHub中的項目,創建dev分支,修改后提交到GitHub master中

    mkdir /linux_pro cd linux_pro/ git clone https://github.com/Tom7481079/test_github.git cd test_github/ git checkout -b devvim readme git add . git commit -m 'modify_linux_01'git checkout master #從dev分支切換到master git pull #將master上的項目下載到本地 git merge dev #合并master和dev(GitHub中master未更新,可以成功合并) git push origin master #成功push到GitHub中

    3、第三步:win10中在別人已經提交代碼后自己提交,解決合并沖突

    vim readme git add . git commit -m 'modify_win10_01'git checkout master #從dev分支切換到master git pull #將master上的項目下載到本地(成功但有沖突) git merge dev #合并master和dev(GitHub中master已經更新,自動合并失敗) git status # 查看有哪些哪些文件不同導致的合并沖突 git diff readme # 查看readme具體有哪些不同 vim readme # 手動合并git add . git commit "win10_solved_conflict" git push origin master #成功push到GitHub中# 上面git commit也失敗了,git認為你有部分代碼沒有做好提交的準備 git commit -a # 提交全部 git commit /c/win10_pro/test_github/readme -i -m "merge"

    10,vim .gitignore (指定那些文件不需要git管理)

    1、說明

    1) 注: 如果某個文件,目錄已經被上傳到GitHub中了,再添加到.gitignore文件中是沒有作用的。
    2) 比如core/test1.py以前沒有將/core寫到.gitignore文件中,但是后來添加了
    3) 那么之后對core/test1.py修改依然會改變,但是如果添加core/test2.py是不會出現在GitHub中的
    4) GitHub中有各個語言忽略文件模板網址:https://github.com/github/gitignore

    2、python中指定忽略的文件

    # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class# C extensions *.so# Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec# Installer logs pip-log.txt pip-delete-this-directory.txt# Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/# Translations *.mo *.pot# Django stuff: *.log .static_storage/ .media/ local_settings.py# Flask stuff: instance/ .webassets-cache# Scrapy stuff: .scrapy# Sphinx documentation docs/_build/# PyBuilder target/# Jupyter Notebook .ipynb_checkpoints# pyenv .python-version# celery beat schedule file celerybeat-schedule# SageMath parsed files *.sage.py# Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/# Spyder project settings .spyderproject .spyproject# Rope project settings .ropeproject# mkdocs documentation /site# mypy .mypy_cache/

    11,Git基本常用命令

    mkdir: XX (創建一個空目錄 XX指目錄名)pwd: 顯示當前目錄的路徑。git init 把當前的目錄變成可以管理的git倉庫,生成隱藏.git文件。git add XX 把xx文件添加到暫存區去。git commit –m “XX” 提交文件 –m 后面的是注釋。git status 查看倉庫狀態git diff XX 查看XX文件修改了那些內容git log 查看歷史記錄git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一個版本(如果想回退到100個版本,使用git reset –hard HEAD~100 )cat XX 查看XX文件內容git reflog 查看歷史記錄的版本號idgit checkout -- XX 把XX文件在工作區的修改全部撤銷。git rm XX 刪除XX文件git remote add origin https://github.com/tugenhua0707/testgit 關聯一個遠程庫git push –u(第一次要用-u 以后不需要) origin master 把當前master分支推送到遠程庫git clone https://github.com/tugenhua0707/testgit 從遠程庫中克隆git checkout –b dev 創建dev分支 并切換到dev分支上git branch 查看當前所有的分支git checkout master 切換回master分支git merge dev 在當前的分支上合并dev分支git branch –d dev 刪除dev分支git branch name 創建分支git stash 把當前的工作隱藏起來 等以后恢復現場后繼續工作git stash list 查看所有被隱藏的文件列表git stash apply 恢復被隱藏的文件,但是內容不刪除git stash drop 刪除文件git stash pop 恢復文件的同時 也刪除文件git remote 查看遠程庫的信息git remote –v 查看遠程庫的詳細信息git push origin master Git會把master分支推送到遠程庫對應的遠程分支上

    12,刪除GitHub中創建的項目

    1.打開要刪除的項目

    2.點擊對應項目的settings

    3. 點擊右側菜單的option(默認就是),拉取到最后點擊刪除按鈕

    4.為了安全執行時會彈窗這個提示框

    總結

    以上是生活随笔為你收集整理的Git和Github的区别与操作简介的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。