一、GIT簡介
1.什麼是GIt
git 是一個開源的分布式版本控制系統,用于高效的管理各種大小的項目和檔案。
2.代碼管理工具的用途
- 防止代碼丢失,做備份
- 項目的版本管理和控制,可以通過設定節點進行跳轉。
- 建立各自的開發環境分支,互不影響,友善合并
- 在多終端開發,友善代碼的項目傳輸
3.常用代碼管理工具
git、svn…
二、GIT基本工作流程
1、Git工作流程
- 工作區:就是你在電腦裡能看到的目錄。
- 暫存區:英文叫 stage 或 index。一般存放在 .git 目錄下的 index 檔案(.git/index)中,是以我們把暫存區有時也叫作索引(index)。
- 版本庫:工作區有一個隐藏目錄 .git,這個不算工作區,而是 Git 的版本庫。
本地倉庫工作流程
2、Git基本操作
Git 常用的是以下 6 個指令:git clone、git push、git add 、git commit、git checkout、git pull。
總工作流程
說明:
- workspace:工作區
- staging area:暫存區/緩存區
- local repository:版本庫或本地倉庫
- remote repository:遠端倉庫
3、初始化一個新的git倉庫
滑鼠右擊選擇Git Bash Here->輸入$ git init
4、向倉庫中添加檔案和送出
檔案通過添加到暫存區指令格式:$ git add 檔案名(注:git add . 則是送出全部檔案)
送出暫存區到本地倉庫并記錄倉庫的改變:$ git commit [file] -m ‘操作詳情’(file位置可以是一個或者多個檔案,不寫是指将暫存區全部内容送出)
連接配接遠端主機:$ git remote add origin 遠端倉庫位址
最後上傳遠端代碼并合并操作:$ git push -u origin main(main倉庫的分支,-u第一次送出才加,origin為遠端主機名)
5、基礎指令
$ git config :初試配置
git config --system [user.name 使用者名]:配置所有使用者
配置檔案位置:/etc/gitconfig
git config --global [user.mail 郵箱]:配置目前使用者
配置檔案位置:~/.gitconfig
git config :配置目前項目
配置檔案位置:project/.git/config
$ git status:檢視本地倉庫狀态。
$ git rm --cached 檔案夾名 :撤回送出的暫存檔案。
$ git log :檢視commit日志記錄。
$ git relog :檢視所有的commit操作記錄。
$ git log --pretty=online :檢視commit日志記錄,每個送出隻顯示一行
$ git diff 檔案名: 對比工作區和暫存區檔案的差別 。
$ git checkout – 檔案名:從倉庫恢複檔案原本的樣子,并且還可以通過倉庫,恢複通過 $ rm 檔案名 删除的工作區本地檔案。
$ git checkout 分支名:切換分支
$ git mv [file][path]:移動檔案
$ git rm [file]:删除檔案
注意:這兩個操作會修改工作區内容,同時将操作記錄送出到暫存區
6、版本控制
$ git reset --hard HEAD^ :回退到上一個commit節點,一個^表示回退1個版本,依次類推。當版本回退之後工作區會自動和目前commit版本保持一緻。
$ git reset --hard [commit_id ]:回退到指定的commit_id節點 (commit全球唯一碼前七位),即使是回退到回退前的狀态也行,用relog查詢唯一碼,有标簽時,也可以把commit_id 換成标簽名
$ git tag [tag_name] (commit_id) -m ‘message’ :在項目的重要commit位置添加快照,儲存目前的工作狀态,一般用于版本的疊代,commit_id 不寫就預設在最新标簽檢視加标簽。如:重要節點處 git tag v1.0 -m ‘版本1’
$ git tag :檢視标簽
$ git show v1.0 :顯示标簽詳細資訊
$ git tag -d 标簽名:删除标簽
7、儲存工作區
$ git stash save ‘message’ :儲存工作區内容,說明:将工作區未送出的修改封存,讓工作區回到修改前的狀态。
$ git stash list :檢視工作區清單,說明最新儲存的工作區在最上面
$ git stash apply [email protected]{ 序号} :應用某個工作區,之後可用add、commit送出給倉庫
$ git stash drop [email protected]{ 序号} :删除某個工作區。
$ git stash clear :删除所有工作區。
8、分支管理
意義:分支即每個人在原有(代碼)分支的基礎上建立自己的工作環境,單獨開發,互不幹擾。完成開發工作後再進行分支統一合并。
分支原理圖
$ git branch :檢視分支情況,說明前面帶*的分支表示目前工作分支。
$ git branch -a :加上-a參數,可以檢視遠端分支,遠端分支會用紅色表示出來
$ git branch [branch_name]: 建立分支,基于a分支建立b分支,此時b分支會擁有a分支全部内容,在建立b分支時最好保持a分支‘幹淨’狀态
$ git checkout -b 分支名:建立分支并切換到新分支
$ git merge 分支名:合并指定分支到目前分支
注:沖突問題是合并分支過程中最為棘手的問題,當分支合并時,原分支和以前發生了變化就會産生沖突。當合并分支時添加新的子產品(檔案),這種沖突可以自動解決,隻需自己決定commit操作即可。當合并分支時兩個分支修改了同一個分支,則需要手動解決沖突。
$ git branch -d 分支名:删除分支
$ git branch -D 分支名:删除沒有被合并的分支
9、遠端倉庫管理
$ git remote add origin 遠端倉庫位址: 連接配接遠端主機,僅剛開始需要連接配接
$ git remote rm origin :斷開 origin遠端主機的連接配接
$ git clone :克隆遠端倉庫
$ git push -u origin main :上傳遠端代碼并合并操作。main為倉庫的分支名,-u第一次上傳新分支才加,origin為遠端主機名。連接配接之後再送出直接git push
$ git push origin (–)tags :上傳(所有)标簽
$ git push origin --delete tag 标簽名 :删除标簽名
$ git push origin :遠端分支名 :删除遠端分支名
$ git push --force origin:強行推送。目前本地分支使用reset後的最新送出落後于其對應的遠端分支,更新被拒絕時使用
$ git pull :将遠端分支拉取到本地
$ git fetch origin master:tmp :将遠端分支master拉取到本地,作為tmp分支
差別:pull将遠端内容直接拉取到本地,并和對應分支内容進行合并,fetch将遠端分支内容拉取到本地,但是不會和本地對應分支合并,可以自己判斷後再使用merge合并
詳細流程圖
參考:
參考一 git—代碼管理工具
參考二 git 安裝與使用
參考三 git使用詳細教程