代碼版本管理工具,定要先更新后提交,git提交本地,推送遠程


集中式版本控制系統---中央服務器(不安全)--圖書館借書--必須要聯網--提交代碼到中央

CVS

SVN

----受限與網絡,回退,多版本分支

Maven--https://mvnrepository.com

 

分布式版本控制系統-----git----這個 “中央服務器” 只是為了方便大家“交換”修改,每個人的電腦上都是一個完整的版本庫(安全),不需要聯網--提交代碼到本地

1 配置全局屬性-用戶名密碼

git config --global user.name "----"

git config --global user.email "---"

 

git  config --list 

git  config -l 

2設置倉庫目錄--初始化

該目錄下直接 git init 生成隱藏文件夾*.git

或者git init --bare 直接是設置git倉庫,不生成隱藏目錄--用於搭建自己git遠程服務

3 倉庫基本操作

a 當前倉庫狀態 git status

b 添加暫存庫 git add 文件名/批量全部添加 git add .

c 提交到本機本地版本庫 git commit -m ”注釋"

不區分暫存庫版本庫,一步直接提交到版本庫 git commit -a -m "注釋"

* 查看文件改動 git diff 文件名

* 查看文件提交棧歷史 git log 文件名--可得到 commit ID--用於版本回退

注意:

git 三區-工作區 暫存庫 版本庫Master       --歷史穿越HEAD

雖是同一文件,但要注意不同區域的修改!提交的結果

添加后再修改,然后提交。此時后面的提交不應被提交。提交的是第一次添加的結果。

* 版本穿越--回退切換--commit ID 與Master分支上的HEAD指針

git log --pretty =oneline

HEAD指的是當前正在使用的版本。最新的提交點

改變了HEAD的指針--回退指定版本--  git reset --hard~1

* 查看刪除的提交點日志 git reflog  針對版本的操作,恢復指定版本

git reset --hard id值   提交點就是恢復點

* 撤銷修改

未add--工作區撤銷--git checkout 文件名

已add未commit--暫存區撤銷--先撤到工作區,再回退內容

git reset HEAD 文件名 + git checkout 文件名

區域操作

工作<——>暫存  git add /git reset HEAD

暫存——>master分支 git commit

* 文件刪除

工作區 del 文件名 再提交 git commit -a -m "刪除"

再恢復文件 git reflog --> git reset --hard id值

未提交 git checkout 文件名

總結:工作區恢復checkout,Master分支上用版本穿越git reset --hard id值

 

遠程倉庫服務器----國內外代碼托管網站----在線的基於Git的代碼托管服務平台

github

git remote add origin git@github...

git push -u origin master

注意倉庫初始化,遠程初始化就克隆,遠程沒有初始化就本地初始化然后推送過去

gitee

 ......

 模塊代碼與分支代碼

每個模塊可能都有不同分支

多個模塊多個分支

* 分支創建與合並

Git規定所有要使用的分支將其定義在Master分支上。Master里的代碼是提供給用戶使用的,穩定!

開發過程會不斷變化調試。所有的合作開發要在子分支上。最后反合主分支!

維護開發必須要在原有基礎上創建新的分支!

所在模塊本地分支 git branch

在該版本庫創建新分支名 git barach 分支名   (在最后一個提交點創辦的)

切換分支 git checkout dev分支名 (HEAD指向修改)

在新分支上開發---新分支比master分支代碼更多

開發完畢,切回主分支開始 分支合並/代碼返合/

git checkout master  合到哪,切到那!

git merge 分支 即快速合並,前提條件,master分支沒有任何變化

其實改變master指向最方便(Fast-forward),HEAD指向隨當前分支/操作而改變!

git push -u origin(指代遠程)  分支名如master

git push -u origin dev  將分支提交到遠程后,在github就可以看見分支信息

* 本地庫刪除分支 git branch -d 分支名

遠程庫也刪除

git push orgin --delete 分支名 直接刪除

git push orgin:分支名 推送空分支覆蓋

沖突修改----一個文件被多人修改

git checkout -b dev ==創建並切換到那個分支

git merge 分支名 -->出現conflict,同時該分支上的文件內容會有標記!

解決沖突后,查狀態,再git commit -a -m ""

分支合並模式

git log --graph --pretty=oneline

Fast-forward 提交方式沒有提交點!不會產生提交信息!

git merge --no-ff -m "注釋" 分支名   ; “-no-ff” 參數即no fast forward模式

 

實際中,master分支上不允許進行開發,master分支是要提供給客戶,最終形式發布的!

所有人在dev分支上合並后,並且調試完畢后,在合並到主分支,進行測試回歸,最后發布!要使用“-no-ff” 參數 即 no fast forward模式。產生新的提交點!

 

 

 

 工作區暫掛,當前分支沒搞完,要緊急去處理另一分支的修改提交。

git stash 暫存分支

git stash list

* 恢復掛起

恢復掛起的工作區 git stash apply  + 刪除暫掛區 git stash drop

直接一步到位 git stash pop 恢復工作區+刪除暫掛區

在主分支上 刪除 其他分支!(自己不能刪自己)  但git branch -d 分支名->該分支未合並,不允許刪除!

分支沒合並就刪除,用強制刪除 -D

 

 

 補丁分支----不用分支合並,應用補丁修改主干分支

git diff master > patch    命令行管道輸出流,輸出patch文件

到master分支上應用這個補丁信息 ,git apply patch ,再添加提交推送(還不如直接在主分支上改

修改需要通知遠程開發者本人

git format-patch -M master 該版本目錄下會多了一個*.patch文件,里面記錄了修改者及代碼修改內容等信息

把這個補丁拿到主干master分支上應用  git am *.patch ,再添加提交推送

* 抓取github上xx分支,且變為本地 yy分支

關聯分支 git checkout -b yy origin/xx

 git pull 抓取失敗

git branch --set-upstream-to=origin/xx yy

 git pull 可以抓取

標簽

git tag

git tag v1.0

 git log --pretty=oneline --abbrev-commit

git tag v0.1 7f111fe(commit id)

 

git tag v0.1 -m "注釋"

git show v1.0

git push origin v1.0

git push origin --tags

本地 git tag -d v0.1

遠程 git push origin :refs/tags/v1.0

搭建git私服---略

 

 

 

 

圖片參考鏈接  https://myslide.cn/slides/3023?vertical=1

命令參考鏈接 lxh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM