python學習目錄傳送門
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
文章目錄
- Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
-
- GIT和GitHub
-
- 一. GIT概述
- 二. GIT使用
-
- 2.1 初始配置
- 2.2 基本指令
- 總結
- 三. 版本控制
- 四. 分支管理
-
- 4.1 基本概念
- 4.2 基本操作
- 4.3 分支沖突問題
- 五.GitHub使用
-
- 5.1 擷取項目
- 5.2 建立自己的項目倉庫
- 5.3 遠端倉庫操作指令
- GIT常用指令[回顧]
GIT和GitHub
一. GIT概述
-
什麼是GIT
GIT是一個開源的分布式版本控制系統,用于高效的管理各種大小項目和檔案。
- 代碼管理工具的用途
- 防止代碼丢失,做備份
- 項目的版本管理和控制,可以通過設定節點進行跳轉
- 建立各自的開發環境分支,互不影響,友善合并
- 在多終端開發時,友善代碼的互相傳輸
- GIT的特點
- git是開源的,多在*nix下使用,可以管理各種檔案
- git是分布式的項目管理工具(SVN是集中式的)
- git資料管理更多樣化,分享速度快,資料安全
- git 擁有更好的分支支援,友善多人協調
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - Linux下GIT安裝
sudo apt install git
二. GIT使用
- 基本概念
- 工作區:項目所在操作目錄,實際操作項目的區域
- 暫存區: 用于記錄工作區的工作(修改)内容
- 倉庫區: 用于備份工作區的内容
- 遠端倉庫: 遠端主機上的GIT倉庫
注意: 在本地倉庫中,git總是希望工作區的内容與倉庫區保持一緻,而且隻有倉庫區的内容才能和其他遠端倉庫互動。
2.1 初始配置
- 配置指令: git config --global [選項]
- 配置檔案位置: ~/.gitconfig
- 配置使用者名
e.g. 将使用者名設定為AK
sudo git config --global user.name AK
- 配置使用者郵箱
e.g. 将郵箱設定為[email protected]
git config --global user.email [email protected]
- 檢視配置資訊
sudo git config --list
注意: 該指令需要在某個git倉庫下執行
- 實際操作
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
2.2 基本指令
- 初始化倉庫
sudo git init
意義:将某個項目目錄變為git操作目錄,生成git本地倉庫。即該項目目錄可以使用git管理
- 檢視本地倉庫狀态
sudo git status
說明: 初始化倉庫後預設工作在master分支,當工作區與倉庫區不一緻時會有提示。
- 将工作内容記錄到暫存區
git add [files..]
e.g. 将檔案 a ,b 記錄到暫存區
git add a b
e.g. 将所有檔案(不包含隐藏檔案)記錄到暫存區
git add *
- 實際操作
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
- 取消檔案暫存記錄
git rm --cached [file]
-
設定忽略檔案
在GIT項目中可以在項目根目錄添加**.gitignore**檔案的方式,規定相應的忽略規則,用來管理目前項目中的檔案的忽略行為。.gitignore 檔案是可以送出到公有倉庫中,這就為該項目下的所有開發者都共享一套定義好的忽略規則。在.gitignore 檔案中,遵循相應的文法,在每一行指定一個忽略規則。
.gitignore忽略規則簡單說明 file 表示忽略file檔案 *.a 表示忽略所有 .a 結尾的檔案 !lib.a 表示但lib.a除外 build/ 表示忽略 build/目錄下的所有檔案,過濾整個build檔案夾;
- 将檔案同步到本地倉庫
git commit [file] -m [message]
說明: -m表示添加一些同步資訊,表達同步内容,不加file表示同步所有暫存記錄的檔案
e.g. 将暫存區所有記錄同步到倉庫區
git commit -m 'add files'
- 實際操作
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
- 檢視commit 日志記錄
git log
- 将暫存區或者某個commit點檔案恢複到工作區
e.g. 将a.jpg檔案恢複,不寫commit表示恢複最新儲存的檔案内容
git checkout -- a.jpg
- 移動或者删除檔案
git mv [file] [path]
git rm [files]
注意: 這兩個操作會修改工作區内容,同時将操作記錄送出到暫存區。
總結
重點:本地項目上傳到github上需要一下步驟
- 三步流程:
- 在對應目錄下先把新增的檔案 git add *把檔案存儲到暫存區
- 将暫存區的檔案送出到本地倉庫git commit -m’送出說明/注釋’
- 将本地倉庫的檔案送出到遠端倉庫git push 如果網速慢沒反應需要試多幾次
-
通過以上三步就能在github上看到自己上傳的項目了
三. 版本控制
- 退回到上一個commit節點
git reset --hard HEAD^
說明: 一個^表示回退1個版本,依次類推。當版本回退之後工作區會自動和目前commit版本保持一緻
- 退回到指定的commit_id節點
- 檢視所有操作記錄
git reflog
注意:最上面的為最新記錄,可以利用commit_id去往任何操作位置
- 建立标簽
标簽: 在項目的重要commit位置添加快照,儲存當時的工作狀态,一般用于版本的疊代。
說明: commit_id可以不寫則預設标簽表示最新的commit_id位置,message也可以不寫,但是最好添加。
e.g. 在最新的commit處添加标簽v1.0
- 檢視标簽
git tag 檢視标簽清單
git show [tag_name] 檢視标簽詳細資訊
- 去往某個标簽節點
- 删除标簽
- 實際操作
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
四. 分支管理
4.1 基本概念
- 定義: 分支即每個人在原有代碼(分支)的基礎上建立自己的工作環境,完成單獨開發,之後再向主分支統一合并工作内容。
- 好處
- 各自開發互不幹擾
- 防止誤操作對其他開發者的影響
4.2 基本操作
- 檢視現有分支
git branch
說明: 前面帶 * 的分支表示目前工作分支
- 建立分支
說明: 基于a分支建立b分支,此時b分支會擁有a分支全部内容。在建立b分支時最好保持a分支"幹淨"狀态。
- 切換工作分支
說明: 2,3可以同時操作,即建立并切換分支
注意: git checkout -b [branch_name] 可以同時完成建立分支和切換分支的工作
- 實際操作
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
- 合并分支
git merge [branch]
注意:分支的合并一般都是子分支向父分支中合并
- 删除分支
git branch -d [branch] 删除分支 git branch -D [branch] 删除沒有被合并的分支
4.3 分支沖突問題
- 定義: 當分支合并時,原來的父分支發生了變化,在合并過程中就會産生沖突問題,這是合并分支過程中最為棘手的問題。
-
沖突情形1—— 原來的分支增加了新檔案或者原有檔案發生了變化
此時隻要先摁 ctrl-o 寫入,然後回車,再摁ctrl-x 離開就可以了。
也可能出現提示讓直行commit合并,那麼此時隻需要直行commit操作就可以了。這種沖突比較好解決。
-
沖突情形2—— 子分支和父分支修改了相同的檔案
此時會出現:
這種沖突不太好解決需要自己進入檔案進行修改後,再直行add ,commit操作送出
- 總結
- 盡量在項目中降低耦合度,不同的分支隻編寫自己的子產品。
- 如果必須修改原來父級分支的檔案内容,那麼做好分工,不要讓多個分支都修改同一個檔案。
五.GitHub使用
-
遠端倉庫
遠端主機上的GIT倉庫。實際上git是分布式結構,每台主機的git倉庫結構類似,隻是把别人主機上的git倉庫稱為遠端倉庫。GitHub可以幫助我們建立一個遠端倉庫。
-
GitHub介紹
GitHub是一個開源的項目社群網站,擁有全球最多的開源項目。開發者通過可以注冊網站賬戶,在GitHub建立自己的項目倉庫(我們可以視作一個遠端倉庫),GitHub規定GIT為它的唯一代碼管理工具。
GitHub網址:github.com
5.1 擷取項目
- 在左上角搜尋欄搜尋想要的擷取的項目
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - 選擇項目後複制項目git位址
- 在本地使用git clone方法即可擷取
git clone https://github.com/xxxxxxxxx
注意:
- 擷取到本地的項目會自動和GitHub遠端倉庫建立連接配接。且擷取的項目本身也是個git項目。
- GitHub提供兩種位址連結方式,http方式和SSH方式。通常通路自己的項目可以使用SSH方式,clone别人的項目使用http方式。
5.2 建立自己的項目倉庫
- 點選右上角加号下拉菜單,選擇新的倉庫
- 填寫相應的項目資訊即可
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - github倉庫相對本地主機就是一個遠端倉庫通過remote連接配接
- 使用https連結
# 後續操作每次上傳内容都需要輸入密碼,比較麻煩,一般用于臨時計算機的連接配接使用 git remote add origin https://github.com/xxxxxxxxx
- 使用SSH連接配接
# 先建立秘鑰信任 1. 将自己要連接配接github的計算機的ssh公鑰内容複制 2. github上選擇頭像下拉菜單,settings-》SSH and GPG keys-》new SSH key 3. 将公鑰内容添加進去,并且起一個标題名字,點選添加
- 使用https連結
- 實際操作[生成本機ssh秘鑰]
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - 将上圖中生成的秘鑰複制到github中
(github上選擇頭像下拉菜單,settings-》SSH and GPG keys-》new SSH key)
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - 上傳成功後如圖所示
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - 下面為大家示範添加圖檔後上傳到遠端倉庫
- 第一步:先在本地添加兩張圖檔到對應檔案下
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - 第二步:添加到本地倉庫,再進行送出
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - 第三步:推送到遠端倉庫
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)
- 第一步:先在本地添加兩張圖檔到對應檔案下
- 恭喜你成功了
Git與GitHub精選系列(常用指令操作、建立項目、上傳更新)Git與GitHub精選系列(常用指令操作、建立項目、上傳更新) - 後續無需輸入密碼,一般用于自己信任的計算機
git remote add origin [email protected]:TenciousAK/Travel_project_version01.git
- 檢視連接配接的遠端倉庫名稱
git remote
- 斷開遠端倉庫連接配接
- 如果是自己的倉庫需要删除,則選擇自己的倉庫選擇settings,在最後可以選擇删除倉庫。
5.3 遠端倉庫操作指令
- 将本地分支推送給遠端倉庫
git push -u origin master
git push origin [:branch] # 删除向遠端倉庫推送的分支
# 将master分支推送給origin主機遠端倉庫,第一次推送分支使用-u表示與遠端對應分支 建立自動關聯
- 推送代碼到遠端倉庫
git push
# 如果本地的代碼有修改項推送給遠端倉庫
- 推送舊的版本
用于本地版本比遠端版本舊時強行推送本地版本
git push --force origin
- 從遠端擷取代碼
git pull
GIT常用指令[回顧]
1. git clone 克隆遠端代碼到本地;
2. git status 檢視本地倉庫狀态,是否有修改未添加或者未送出;
3. git add . 添加到暫存區;
4. git commit 把暫存區内容送出到目前分支;
5. git diff 版本比較,預設為工作區和目前分支版本,可以輸入送出版本号兩兩比較;
6. git log 檢視送出日志,版本号可以從此檢視;
7. git checkout[分支名]切換到某分支;
8. git branch 檢視分支資訊;
9. git checkout -b [分支名]建立并切換到分支;
10. git checkout -b [本地分支名][遠端分支名]如果本地分支已經存在,就不需要-b參數了
11. git branch -r 檢視遠端分支資訊;
12. git push origin [分支名]推送本地分支到遠端倉庫,真正的讓協作者可見你本人送出的操作;
13. git pull 拉取最新遠端更新到本地,自動merge;
14. git merge 合并操作;
15. git checkout -- . 撤銷工作區修改;
16. git clean 清理未git add的檔案或者檔案夾,參數為-n顯示,-f删除檔案,-df删除檔案和目錄。
17. git pull remote master 合并遠端master到本地fork master分支