Python——程式碼版本管理-Git和GitHub
目錄:
1.什麼是Git
2.Git安裝配置
3.Git工作流程
4.Git工作區、暫存區和版本庫
5.建立倉庫
6.基本操作
7.分支管理
8.檢視提交歷史
9.標籤標記
10.遠端倉庫
11.伺服器搭建
12.開發工具繼承
13.案例:通過SSH協同開發應用
1.什麼是Git
1-1.GitGit是一個開源的分散式版本控制系統,用於敏捷高效的處理任何專案的版本問題。Git是Linux Torvalds 為了幫助管理Linux核心開發而開發的一個開放原始碼的版本控制軟體。
Git與常用的版本控制工具cvs、svn等不同,它採用了分散式版本庫的方式。不必伺服器端軟體支援,它是主機本身既是客戶端又是伺服器。
1-2.關於專案版本管理
專案在開發過程中,經常會出現多人分工協作進行專案分發並開發整合的過程,所以專案在剛開始流行的時候經常會出現一些協作開發的同步的問題,同時存在專案整體進度的控制和管理的問題,所以在程式的開發行業衍生出來的版本管理工具。
版本管理工具,首先是一個內容管理工具,可以將專案的內容資訊存放在版本管理伺服器上方便專案組人員進行訪問和查詢修改。版本管理具有里程碑意義的主要有三個階段:
cvs階段——>svn階段——>Git階段
1-2-1.cvs階段
專案搭建開發的過程中,每次提交專案都會將整個專案提交到伺服器進行儲存,伺服器儲存著專案的N個備份,開發過程中的協作效率低下,佔用空間較大,同時也出現了各種傳輸問題,所以慢慢淡出了行業。
1-2-2.SVN階段
考慮到cvs的缺陷,開發人員根據專案的實際情況,研發出專門針對專案版本控制的軟體Subversion(簡稱SVN),SVN同樣也是搭建伺服器,讓專案組成員將資料儲存在伺服器上,但是每次改動並提交的時候,SVN伺服器並不重新儲存整個專案的完整資訊,而是和原來的專案進行對比,只儲存改動的資訊,這樣就大大較少了空間的佔用。所以至今為止,有很多公司依然選擇使用SVN作為公司內部專案協作額版本控制軟體。
1-2.3Git階段
前面的CVS和SN都是基於一個伺服器的,如果脫離伺服器,專案的版本儲存就沒有了任何意義。Git恰恰處理了這樣的問題,Git是一個分散式的版本控制系統,在Git中即使使用者離線,也能進行專案的提交和更新操作,此時只是儲存在本機的暫存區,等到下次連線到GitHub(類似伺服器角色)時進行的整體的同步操作。
Git VS SVN
① Git是分散式的,SVN不是
②Git是按照元資料的方式儲存內容,SVN是按照檔案的形式儲存
③Git和SVN中的分支不同
④Git沒有全域性版本號,SVN有
⑤Git內容的完整性由於SVN
2.客戶端安裝配置
2-1.使用Git之前,PC上需要安裝Git 支援Linux/Unix.Solaris、Mac和Windows平臺上執行 Git各平臺安裝包下載地址為:http://git-scm.com/downloads 2-2.Git開發人員資訊配置 Git提供了一個git config 工具,專門用於配置和讀取相應的工作環境變數: ① etc/gitconfig檔案,系統中所有的使用者都普遍適用的配置,如果適用get config時新增--system選項,修改的就是這個檔案; ② ~/.gitconfig檔案,使用者目錄下的配置檔案,只適用於當前使用者,使用get config時新增--global選項,修改的就是這個檔案; ③ /config檔案,當前專案的.git目錄中的配置檔案,配置只是針對當前專案有效。 資訊配置操作: 安裝好Git之後,點選滑鼠右鍵即可看到有Git bush選項,點選即可進入Git命令列操作。 使用命令: git config --global user.name "lyh" git config --global user.email "*****@***com"即可依次設定使用者名稱和郵箱資訊,此資訊用於版本提交時記錄提交人資訊。 檢視開發人員資訊 git config --list
2-2.Git工作流程
常規工作流程如下:
克隆Git資源作為目錄
在克隆的資源上新增或者修改檔案
如果是其他人修改過的檔案,可以進行更新檔案的操作
提交前的檔案修改資訊檢查
提交修改
修改完成後,如果發現錯誤,撤回提交併再次修改後提交
一些常用的命令如下:
建立祕鑰:ssh keygen -t rsa -C "郵箱名“”
git init dictoryname | 建立本地倉庫,暫存區 |
git status | 檢視當前工作區檔案狀態(管理|脫管) |
git add file | 將某個脫管的檔案新增到Git版本管理中 |
git commit file -m ‘提交的註釋’ | 提交修改後的檔案,並必須提交註釋 |
git log | 檢視所有提交資訊 |
gti diff | 檢視工作區與暫存區檔案的不同,也就是commit之後、push之前 |
git clone “伺服器倉庫地址” | 從遠端伺服器克隆專案到本地暫存區 |
git branch | 檢視所有分支,綠色帶星號為當前所在分支 |
git branch “新分支名稱" | 增加一個分支 |
git chechout "分支名稱" | 切換到某個指定分支 |
git merge "另一個分支名稱“ | 將另一個分支的程式碼合併到當前分支 |
git branch -d “分支名稱” | 刪除指定分支 |
3.工作區、暫存區及版本庫
基本概念
工作區:個人 PC 中能看到的檔案目錄結構
暫存區:stage/index,一般存放在.git/index 中,所以 git 中的暫存區也會 稱為索引
版本庫:工作區中的.git 隱藏檔案,不算是工作區,而是 Git 的版本庫。
當對工作區修改(或新增)的檔案執行 "git add" 命令時,暫存區的目錄樹被更新, 同時工作區修改(或新增)的檔案內容被寫入到物件庫中的一個新的物件中,而該物件的 ID 被記錄在暫存區的檔案索引中。
當執行提交操作(git commit)時,暫存區的目錄樹寫到版本庫(物件庫)中,master 分支會做相應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹。
當執行 "git reset HEAD" 命令時,暫存區的目錄樹會被重寫,被 master 分支 指向的目錄樹所替換,但是工作區不受影響。
當執行 "git rm --cached <file>" 命令時,會直接從暫存區刪除檔案,工作區 則不做出改變。
當執行 "git checkout ." 或者 "git checkout -- <file>" 命令時,會用 暫存區全部或指定的檔案替換工作區的檔案。這個操作很危險,會清除工作區中未新增到暫 存區的改動。
當執行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令 時,會用 HEAD 指向的 master 分支中的全部或者部分檔案替換暫存區和以及工作區中 的檔案。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫 存區中未提交的改 動。
4.Git 本地操作
建立工作目錄——本地倉庫
git init
Git 使用 git init 命令初始化一個 git 倉庫。 git 很多命令都是在倉庫中執行的,git init 執行完成後 Git 會在對應的目錄中建立一 個.git 隱藏資料夾,資料夾中的檔案包含了 git 所有元資料,其他的專案資料夾保持不變
使用當前資料夾作為 git 倉庫 進入對應的資料夾中,執行 git init 命令即可
指定資料夾作為 git 倉庫 執行 git init myrepo;
執行完成後,myrepo/資料夾下會出現一個.git 目錄,
建立好的專案資料夾中,就可以通過 git add file_name 命令,就可以告訴 git 對指定 的檔案進行跟蹤操作。
最後對修改的檔案進行提交操作
克隆專案到工作目錄 所謂克隆專案,就是建立遠端 git 倉庫中的專案副本 git clone <repo> git clone <repo> <directory> 案例操作
4-2 基本操作【核心】
獲取與建立專案命令 git init [<directoryName>]:初始化建立專案工作空間 git clone <gitURL> [projectName]:克隆專案
新增檔案到快取中——暫存區 git add <fileName>
檢視上次提交之後的修改狀態 git status
檢視具體的修改資訊 git diff:檢視尚未快取的改動{尚未 add 操作} git diff --cached:檢視已經快取的改動 git diff HEAD:檢視已經快取和未快取的所有改動 git diff --stat:檢視摘要資訊
新增內容到倉庫中 git commit:將快取區中的內容新增到倉庫中。 git 為你的每一個提交記錄名字和電子郵箱地址【教程開頭使用 git config 配 置的使用者資訊】 git commit -m “註釋內容”:-m 選項用於提交時添加註釋內容
同時 git 提供了-a 選項,用於提示提交簡略資訊
取消快取內容 git reset HEAD:用於取消使用者已經快取的內容 修改 README 和 file2 檔案
取消 file2 快取
從快取區中移除 git rm <fileName>:將指定的檔案從快取區中移除 重新命名並重新新增到快取中 git mv <fileName> <newFileName>:將指定的檔案 fileName 重新指定新 的名稱 newFileName,並自動通過 add 將新的檔案新增到的快取區中
4-3 分支管理
很多的版本控制工具都是支援分支操作的,使用分支操作的意義是從開發的主線上分離開達 到不影響主線任務的同時進行功能開發 專案一旦建立,就會有一個主線分支 master,開發過程中,如果需要其他的並行開發 的需要,就會建立新的分支進行非同步開發。
>> 列出分支 git branch
備註:前面有梅花圖案,表示當前正在操作的分支。 >> 建立分支 git branch [branch_name]
備註:使用 git branch 命令,新增一個分支 shopcart。再列出當前所有分支,可以看到有兩個分 支,並且當前是工作在 master 主分割槽中。
>> 切換分支 git checkout [branck_name]
備註:通過 git checkout 命令切換分支,切換完成後,通過列出分支命令 git branch 看到當前工 作在 shopcart 分支
>> 合併分支 git merge
備註:所謂合併分支,是指將指定分支的程式碼和當前分支進行合併,完成程式碼的共享,這裡的 git merge 合併的是分支的內容。並不是將兩個分支變成一個分支。
>> 刪除分支 git branch –d [branch_name]
備註:通過 git branch -d <b_name>可以直接將一個分支從 git 工作流中刪除。
4-4檢視提交歷史
使用 git 提交/更新等操作、或者克隆專案等操作後,很多情況下需要檢視某個專案的操作 歷史記錄資訊
git log:專門用於檢視所有的 git 倉庫操作歷史資料的命令 git log --online:檢視專案的歷史紀錄的簡潔版本 git log --graph:檢視歷史記錄中的分支、合併等操作 git log --reverse:逆向顯示所有的日誌 git log --author:檢視指定使用者的提交日誌 git log --before={3.week.age} --after{2015-10-11}:指定時間段查詢 git log --no-merges:隱藏合併提交 >>
git log $ git log
commit 75b98b48898557dadfeb75048f25025fc846d040
Author: muwenbin <[email protected]> Date: Mon Sep 5 17:02:04 2016 +0800
取消快取測試
commit c25e6c14e45c44a94b169110ce342e9a6ef0202a Author: muwenbin <[email protected]>
Date: Mon Sep 5 16:58:07 2016 +0800
使用者須知修改
.. .. .. .. .. .. ..
commit c25e6c14e45c44a94b169110ce342e9a6ef0202a
Author: muwenbin <[email protected]>
Date: Mon Sep 5 16:58:07 2016 +0800
使用者須知修改
commit 1edb7a8ad089427e882c8f94c2d08d39eeef55ff
Author: muwenbin <[email protected]> Date: Mon Sep 5 16:56:13 2016 +0800
提交所有修改內容
5標籤/標記操作
專案開發的過程中,會出現一些重要重大的改動,通常會稱為里程碑版本等等,顯示這 個版本的重要性,在使用 Git 操作的時候,同樣也可以通過特殊的方式標記某個版本的特 殊性。
git tag <desc> 給專案新增應標識/標籤 git tag 檢視專案標籤資訊
5-1 遠端操作
以上所有的操作都是在本地執行,但是如果要團隊協作開發專案,或者將專案分享給其 他人的話,就需要將專案資料放在其他人都能訪問的伺服器上。操作步驟如下: github 註冊賬號-> 本地生成 SSH 金鑰-> 倉庫中新增金鑰-> SSH 通訊
5-2 註冊賬號
瀏覽器開啟 http://github.com 網站 預設開啟首頁時,頁頭部分提示了註冊,如果沒有提示,點選導航區域的 Sign Up 進 入註冊頁面 註冊需要填寫郵箱、密碼、確認密碼。
15-3 建立倉庫
註冊成功之後,進入登入頁面/點選導航 Sign In 進入登入頁面
使用賬號登入 github.com 網站,如下圖所示:點選 New repositoy 建立專案倉庫。
以上資訊提示,可以從當前的倉庫中克隆專案,也可以將本地專案推送到 GitHub 倉庫中。
>> 推送專案 執行如下命令,將專案推送到遠端倉庫中
>> 檢視倉庫
5-4 遠端操作命令
>> 檢視遠端倉庫 git remote git remote –v -v 引數可以檢視到每個倉庫別名的實際連線地址
>> 提取遠端倉庫 git fetch
備註:命令執行完成後,需要通過 git merge 合併遠端分支到你自己的分支中 git pull:從遠端倉庫提取資料並嘗試合併到當前分支
>> 推送到遠端倉庫 git push [alias] [branch] 將 branch 分支推送稱為 alias 遠端倉庫的 branch 分支 >> 刪除遠端倉庫 git remote rm [repo_name]
6 IDE 工具整合 GIT
.、6-1 HBuilder 整合 GIT 開發
選單-> 外掛安裝 EGIT->安裝
共享專案 專案上右鍵點選 選擇 Team->共享專案 在 Repository 中選擇一個本地的 GIT 工作區 工作區可以先選擇一個目錄資料夾 點選 Create 按鈕,會將選中的資料夾建立成 git 工作區 點選完成,就會將要共享的專案剪貼到工作區中 以後修改和提交的專案,都是 git 管理的專案,可以進行修改、提交、回退 等等各種操作。
1-5.2 WebStrom 整合 GIT 開發
1) 電腦上安裝 git 客戶端,下載地址:https://git-scm.com/downloads/ 2) 開啟 webstrom,點選 File->Settings 3) 在設定視窗中,找到 Version Control->GitHub,填寫配置
備註:填寫在 GitHub 上註冊的賬號和密碼
4) 配置 Git,找到 Version Control->Git
備註:上面紅色標註區域,就是前面安裝的 git 的可執行檔案
5) 分享[share project on github]或者檢出[checkout from..]專案
7 案例:SSH 協同開發專案配置
專案實際開發中,通常我們常見好一個專案,由第一個人將專案上傳到建立好的 git 遠 程倉庫中。其他人更新到本地,並進行開發,開發的過程中會有【更新、提交、合併】等等 操作。如果只是使用賬號建立的倉庫,除了本人可以進行讀取和提交的操作之外,其他登入 到 git 的賬號只能讀取你的專案而不能進行寫入操作(如提交新檔案等)。
這樣的情況下,就需要對專案開發人員進行授權操作,有許可權的開發人員才能進行專案 的讀取/寫入操作。
Git 出了上述的 HTTPS 專案操作之外,還有另一種 SSH 金鑰匹配的操作,由每一個開 發人員在自己的個人 PC 上建立一個 SSH 金鑰,然後將金鑰提供給 GIT 遠端倉庫進行配置 新增,添加了 SSH 標識的客戶端 PC 就可以對倉庫進行讀取/寫入操作,由此完成多人協同 開發的目的。
1-6.1 多人協同開發案例
1) 專案發起人建立倉庫。 建立公共倉庫,名稱為 1000phone_repo 選擇 Public 選擇生成 Readme.md 檔案 提交建立倉庫
2) 收集客戶端 SSH 金鑰 a) 參與專案開發的客戶端 PC,在個人 PC 上,生成 SSH 金鑰
b) 檢測 Git 連線有效性
上圖中如果出現 are you sure you want to continue connecting?輸入 yes
提示 Hi ***! You’ve successfully authenticated..就表示接入成功。
金鑰檔案位置:通常情況,金鑰檔案會生成在 C:\Users\[username]\.ssh\資料夾的 下面,username 表示電腦的名稱。
id_rsa.pub 內容如下(這個檔案的內容,是需要提供給 github 進行配置的) : ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZw/UcMD6PKzyiUM+MVwKnuT66kUdaFmy3 WM2kQLnLGQ1bBXr/DpIDMt3k2VXAqaiDg5smKFNtb0LjSwqm0z1gVTYO3Upv/4sY O9Kmnr5H7yityMBih+8nOheRHmwFfUVOBpdOcZEOtf91gL2rmVn0BdO4tkh2lhYc lFIpm30UEVnvJUud04Qi468dNkb3hztAj1D5h60EhiHYUJLE8I/MhmRPRB1seMrA
5waBPkIf++qvoU/m6HLUBr6iLV95pb5VR0+DDaO4caqhMut4YOcmjKOY5ino8Vur Zp1k9oRsFrGdXq1KmxHVX86obk+fgjT4sedyL/cXP5qrKd04cVjt [email protected]
c) GitHub 新增金鑰
點選 New SSH Key title 中輸入你註冊 github 用的郵箱,key 中輸入前面的步驟中用 ssh 命令生成的 金鑰檔案內容即可。
點選 Add SSH Key 之後,新增完成。如下圖所示:
此時,就可以向這個使用者的所建立的倉庫進行資料的增刪改查了。
1-6.2 工具配置之 HBuilder
HBuilder 前面的內容中已經集成了 Git 外掛,可以進行專案的操作。這部分講解 Git 實 現團隊協作。 主要有以下配置項: 1) 配置 SSH 進入選項配置
配置 SSH
備註:SSH2 主頁,配置的是命令列生成的金鑰檔案目錄【參考 1.2.13 章節】;私鑰就是金鑰檔名稱, 將生成的 id_rsa、id_rsa.pub 以及 known_hosts 檔案新增進來。確定即可。
2) 專案操作 a) 後續的專案操作,選項如下圖:使用 SSH 傳輸協議,URI 也是 SSH 地址(GIT 倉 庫中提供的地址,直接複製得到)
1-6.3 工具配置之 WebStrom
webstrom 因為直接配置的 git 客戶端,客戶端已經對金鑰進行了處理。ws 不需要進行二 次處理了。直接進行如下配置即可。
相關推薦
Python——程式碼版本管理-Git和GitHub
目錄: 1.什麼是Git 2.Git安裝配置 3.Git工作流程 4.Git工作區、暫存區和版本庫 5.建立倉庫 6.基本操作 7.分支管理 8.檢視提交歷史 9.標籤標記 10.遠端倉庫 11.伺服器搭建 12.開發工具繼承 13.案例:通過SSH協同開發應用 1.什麼是
版本管理(一)之Git和GitHub的區別(優點和缺點)
機制 最大 客戶 內核 文件 敏捷 star 一定的 sch Git 簡介 https://www.yiibai.com/git/getting-started-git-basics.html Git 是一個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的
版本管理(二)之Git和GitHub的連接和使用
ext 郵箱地址 github 遠程倉庫 編輯器 version it 管理 png 記錄 首先需要註冊登錄GitHub:https://github.com 然後 ①:下載Git 先從Git官網,由於我的系統是64位的所以選擇64-bit Git for Wi
如何使用Git和GitHub來管理自己的程式碼
一、註冊GitHub賬號 註冊並登入GitHub賬號 建立儲存倉庫 點選右上角加號箭頭,在彈出的選單中選擇New repository選項進行倉庫配置。 1> Repository
Git 程式碼版本管理的基本使用命令和步驟
相信現在很多人做開發不再是一個人單打獨鬥了,而是跟隨一個小團隊或者帶領一個小團隊多人同步開發,那麼我們就需要一個程式碼版本管理器來協助我們。這個時候Git程式碼版本管理就是我們的不二選擇,下面介紹一下
使用git和github管理項目代碼
你是 -s 同時 查看 現在 後來 為我 一次 官方 以前不知道使用代碼管理工具,最後寫的一些東西都沒有了,由於硬盤壞了或者不小心格式化了之類的,後來使用了Git 和Github來托管自己的代碼和讀書筆記方便了不少,到哪裏只要有網就可以把自己的東西拷貝下來繼續使用。 我這裏
Mac OSX python多版本管理工具:pyenv 和 virtualenv搭建
macos pyenv pyenv-virtualenv本博文只是簡單介紹如何安裝 概念問題 請自行查詢環境:10.13.1+shell1、安裝brew官網地址:https://brew.sh//usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercon
Git程式碼版本管理工具
Git Git 是分散式版本控制系統,原始碼管理工具。 作用: 方便協同開發、方便版本控制 分散式管理:伺服器和客戶端都有版本控制能力,都能進行程式碼的提交、合併、… Git會在根目錄下建立一個.git隱藏資料夾,作為原生代碼倉庫 Git伺服器 -
關於git程式碼版本管理
什麼時候合程式碼,預發,線上環境 搜尋到兩篇文章 master,develop,feature,release https://www.cnblogs.com/amwuau/p/8021638.html https://www.cnblogs.com/amwuau/p/8021638
VS Code程式碼版本管理與GitHub上傳
簡介 以前學習GIt版本管理,但是基於命令列的還是有些繁瑣,平時使用VS Code做程式碼編輯,當然還是喜歡利用VS Code上自帶的版本管理工具進行版本管理,但是一直都是本地Git,GitHub倉庫空空如也,這次打算學習下怎麼使用VS Code方便快捷的將本
Visual Studio程式碼版本管理工具Git的使用(二)
首先我們開啟團隊資源管理器找到當前專案所對應的本地儲存庫,雙擊 進入該專案的團隊管理器-主頁接下來,詳細介紹下主頁下四個專案的主要功能:1.更改檢視程式碼改動的地方,以及將改動的程式碼提交到本地Git儲存庫下圖表示YYApplyInfoImpl這個類發生了改動更改數右側的‘+
在pycharm中使用git版本管理以及同步github
注意:首先你電腦必須安裝git版本控制器(軟體),在官網下載即可。 pycharm中使用git以及github很簡單,首先在設定中搜索github: 點選右邊的Create API Token,系統會要求輸入你的github賬號和密碼,當你輸入正確點選確
軟工 實驗一 Git程式碼版本管理
實驗目的: 1)瞭解分散式版本控制系統的核心機理; 2) 熟練掌握git的基本指令和分支管理指令; 實驗內容: 1)安裝git 2)初始配置git ,git init git status指令 3)掌握git log ,git add ,git diff 指令 4) 掌握git tag
關於程式碼版本管理的思考和建議
眾所周知,良好的系統研發應該有延續性和一致性,所以很多公司非常注意程式碼版本控制,並逐漸慢慢的迭代自己的產品。 具體到自然資源行業來說,我司純粹的產品銷售較少,專案開發較多,不同的地區,不同的客戶對於同一個功能的理解可以千差萬別。即
關於git和github
config user http 簡單使用 git 添加 官網下載 教程 nsh 1.github的簡單使用教程:http://www.jianshu.com/p/f58e38f38594 記得安裝之前要安裝git軟件 官網下載即可。 然後要使用gitbash 添加自己的郵
Git和Github簡單教程
發布 code workspace align cal 團隊合作 github init 出現 網絡上關於Git和GitHub的教程不少,但是這些教程有的命令太少不夠用,有的命令太多,使得初期學習的時候需要額外花不少時間在一些當前用不到的命令上。這篇文章主要的目標是用較少的
Android Studio中Git和GitHub使用詳解
可能 必須 窗口 gin 擁有 說明 詳細 對話 發現 一、Git和GitHub簡述 1.Git 分布式版本控制系統,最先使用於Linux社區,是一個開源免費的版本控制系統,功能類似於SVN和CVS。Git與其他版本管理工具最大的區別點和優點就是分布式;
Git和Github的使用教程
span github merger tar push ssh keys 查看 刪掉 回退 Git是一款免費、開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目; GitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持git 作為唯一的版本庫格式進行托管
git和github的重要性
完成 原因 們的 src 技術分享 開源 world 倉庫 地址 Git是一款免費、開源的分布式版本控制系統,github是全球最大的同性交友平臺啊呸,說錯了github是一個基於git的代碼托管平臺,付費用戶可以建私人倉庫,我們一般的免費用戶只能使用公共倉庫,也就是代碼要
Git和Github
target tar targe 不同的 一個 版本 link sogo 開源項目 1.程序的地址:https://github.com/sky1147/sky 2.Git在網絡上是這麽描述的:Git是一款免費、開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目