git搭建開發版本和使用
問題場景
暫時解決沖突合并的方法
git stash #把自己的版本備份,此時工作區回到了本地最新版本.
git pull #將沖突的版本更新至本地倉庫和工作區.實現同步至最新版本
git stash apply #將備份代碼重新更新到工作區.若沒有沖突即可直接提交本地并push到遠端.有沖突,沖突會直接顯示在文件中.處理好沖突,再提交推送
更換遠端地址.? 原本的gitlab服務因為域名備案沒下來? 是部署在有僅有IP的服務器上 域名下來后? 需要進行遠端更換
1.查看遠端倉庫源缺省別名,通常默認是origin? ?>git remote
2.刪除當前遠端? ?>git remote rm \[上一步獲取的返回\]
3.新增遠端? ? >git remote add origin \[origin地址\]
3.更換后首次推送需要加-u參數? >git push -u origin master
信息來源:
廖雪峰git教程
[https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)
一.搭建
1.linux源碼安裝
先從Git官網下載源碼,然后解壓,依次輸入:./config,make,sudo make install這幾個命令安裝就好了。
二.使用
1.全局配置參數
$ git config --global user.name "54skyer"
$ git config --global user.email "405661806@qq.com"
因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。
注意git config命令的--global參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。
2.創建倉庫目錄\[版本庫\]
$ mkdir learngit
$ cd learngit
$ pwd #查看當前路徑
/Users/michael/learngit
3.初始化倉庫?
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
圖片、視頻這些二進制文件,雖然也能由版本控制系統管理,但沒法跟蹤文件的變化,只能把二進制文件每次改動串起來,也就是只知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統不知道,也沒法知道。
Microsoft的Word格式是二進制格式,因此,版本控制系統是沒法跟蹤Word文件的改動
強烈建議使用標準的UTF-8編碼,所有語言使用同一種編碼,既沒有沖突,又被所有平臺所支持。
4.添加版本庫文件
在版本庫目錄下添加了新文件.此時文件是沒有被git追蹤的.
第一步,用命令git add告訴Git,把文件添加到倉庫:
$ git add readme.txt #對應sourcetree界面上的已暫存部分
$ git add –all #將所有更改加入暫存區
此時文件只是在進入倉庫的暫存\[changes to be commited\],還未實質被倉庫跟蹤記錄.此時也可以撤銷staged.對應的
$ git?reset?readme.txt #對應取消sourcetree界面上的已暫存的指定文件
$ git reset #重設緩存區所有更改,但不影響工作區
第二步,用命令git commit告訴Git,把文件提交到倉庫:
$ git commit -m "wrote a readme file" #只是提交到本地倉庫,因此不會有沖突,此時文件是\[已存狀態\]
git commit命令,-m后面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。開發過程中一定要寫.方便自己和合作伙伴查看
這兩步過程有點像數據庫的事務.只有最后commit才是真正的完成一個完整事件,沒有commit之前,可以多次add和撤銷
5.查看版本狀態
$ git status #反饋的狀態對應sourcetree上的未暫存\[changes not staged\]的部分,比如新增文件,文件更改,文件刪除等等.
6.查看文件變化
$ git diff readme.txt #對應sourcetree點擊提交的版本分支,查看文件版本變化.即提交前的版本和該版本的差異
整個過程類似于RPG游戲的存檔,玩一段劇情,存檔繼續玩,防止因為一次劇情失敗導致重玩或者回檔到最后一次存檔.
這么看的話.存檔的頻率越密集,代碼changes丟失的風險越低
多個個人分支類似于不同角色的故事發展線,最后合并在一起.跟冰與火之歌類似,先各自發展故事線,最后統一對付鬼王
7.查看提交日志
$ git log #由近及遠的顯示commit -m 后的部分
通常會在后面加上參數 --pretty=oneline? 這樣每一行都是一個commit的mark
即
$ git log --pretty=oneline
每個版本會有一個commit id不會像svn這樣的集中式版本管理.只有localcenter可以有類似鎖的機制可以讓提交順序發生.
而git是selflocalcenter 即使不聯網每個人也能在本地版本庫進行開發,只是不能push和pull服務器版本庫.同時git是分布式的,這樣如果也用自增的commit id很容易造成push到center時commit id會沖突,因此git使用的是SHA1計算出來的一個非常大的數字,用十六進制表示
8.版本回退.
如果你錯過了一個隱藏劇情,那只能退到隱藏劇情前的版本重玩了. 如果發現隱藏劇情索然無味,重玩浪費時間,回到最新檔都可以自由切換
$ git reset --hard HEAD^? #向后退一個版本
$ git reset --hard 1094adb7b9b3807259d8cb349e7df1d4d6477073 #切換到指定版本,版本號不一定要完全寫對,順序填寫至唯一時,git會自動識別? 比如可能以下和以上是統一效果
$ git reset --hard 1094adb
一旦進行了回退,那么回退前的版本就無法在git log? 和? git status中顯示??
好比你從21世紀坐時光穿梭機來到了19世紀,想再回去已經回不去了,腫么辦?
在Git中,總是有后悔藥可以吃的。當你用$ git reset --hard HEAD^回退到add distributed版本時,再想恢復到append GPL,就必須找到append GPL的commit id。Git提供了一個命令git reflog用來記錄你的每一次命令:
找到commit\_id你就找到了時間標記,又可以坐時光機飛回來啦
HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit\_id。
穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本。
9\. 工作區 暫存區 本地倉庫
工作區就是本地電腦的倉庫目錄,其中有個.git目錄 可以使用
$ ls -ahl? ? #顯示查看當前目錄下所有文件及目錄?
暫存區和本地倉庫在工作區目錄第一層的.git文件夾,里面的文件默認隱藏.不要更改,否則會破壞git的管理結構
而這個目錄即代表了本地倉庫.其中最重要的概念為暫存區和版本分支
工作區和暫存區都只有唯一一個
版本分支可以有多個
版本分支可以理解為某個版本的副本
- 常見功能
- 第三方授權登錄
- 郵件發送
- 簡易聊天室
- 獲取各國匯率
- PHP獲取服務器硬件指標
- 數據上報之
- web開發
- 開發規范
- 前端
- 踩坑
- 將footer固定在底部
- bootstrap
- Metronic
- 用到的jquery插件
- bootstrap-hover-dropdown
- jquery.slimscroll
- jquery.blockui
- bootstrap-switch
- js.cookie
- moment
- bootstrap-daterangepicker
- morris
- raphael
- jquery.waypoints
- jquery.counterup
- select2
- 取值和設置默認值
- vue
- axios
- 瀏覽器
- 谷歌瀏覽器
- 谷歌插件
- layui
- layui-表格
- layui-表單
- layui-彈窗
- layui-分頁
- 后端
- 操作系統
- linux
- 用戶管理
- 文件管理
- 目錄管理
- 壓縮和解壓縮
- 進程查看
- 端口查看
- 開機自啟動服務
- 定時任務
- shell腳本
- 殺掉運行超過指定時長指定服務的進程
- 獲取服務器使用狀態
- bash-shell連接socket
- 自定義快捷命令
- centos-踩坑
- 防火墻
- 軟件
- yum
- vim
- screen
- window
- 語言
- PHP
- 配置優化
- 框架
- thinkphp5.1+
- think命令行
- laravel6.+
- 維護模式
- 根據環境讀取不同配置
- laravel6.+采坑
- laravel坑位
- 數據庫事務
- 任務調度
- 文件權限問題
- 增強框架
- larvel:elastic-search
- 圖形驗證碼
- laravel獲取ip
- 函數
- strtotime
- 正則匹配
- 類
- 接口類與抽象類
- 類相關的關鍵字 - abstract
- 類相關的關鍵字 - interface
- PHP有關類的調用方式"->"與"::"的區別
- 擴展
- 問題歸納
- json_encode和json_decode
- 字符串的運算
- curl
- 優化php效率
- 數組相加合并與array_merge
- 時區轉換
- 不常用特性
- php反射
- 包管理器-composer
- GuzzleHttp
- Python
- Go
- 數據庫
- Redis
- 安裝
- 本地化-數據備份
- php-redis操作
- Mysql
- mysql-命令集合
- 設置終端可訪問
- 數據庫設計
- 用戶基礎信息表
- 踩坑集合
- mysql-2002
- mysql-2054
- 優化策略
- mysql-密碼驗證插件
- 一些牛逼的sql查詢
- topN
- 無限級分類
- Memcache
- MongoDb
- 安裝mongo-server
- 安裝php-mongodb擴展
- 在laravel中使用mongoDB
- 客戶端軟件
- Hbase
- Elasticsearch
- elastic-search
- restfulApi操作es
- web服務器
- 1.nginx
- 配置語法規則
- 配置詳解
- rewrite規則
- request_filename
- 2.apache
- 功能設計
- 加密解密
- Base64
- 對亞馬遜SKU加密
- 兼職項目中的加解密
- 騰訊外包時的加密
- 接口設計
- 接口限流設計
- 分庫分表
- 遍歷展示文件目錄結構
- 時區換算
- 文件切割
- 解析xml字符串
- 項目
- 博客后臺管理
- 亞馬遜廣告API
- 官方指引文檔
- 開發人員中心
- 應用商店
- 第三方庫
- 申請API郵件記錄
- 亞馬遜MWS
- 付款報告
- 亂碼
- 亞馬遜管理庫存報告
- 報告
- 商品
- 入庫
- 履行
- 出庫
- 財務
- 訂單
- 異步任務處理
- 集群如何同步代碼
- 基本開發流程
- 文檔管理
- showdoc
- 運行環境
- 開發環境
- vagrant
- windows上配置安裝
- vagrant安裝插件緩慢
- 更換ssh默認端口映射
- 設置x-shell密碼登錄
- 使用市場的box-homestead
- homestead-7: Box 'lc/homestead'
- 常見問題
- 虛擬環境reboot
- 突然無法使用
- phpStudy
- wamp
- 壓測性能
- VPN
- vultr
- 凌空圖床
- 寶塔
- 自動化部署
- 版本管理軟件鉤子
- 線上環境-LNMP
- centos7
- nginx
- mysql
- mysql開機自啟
- mysql-更換默認端口
- datetime字段類型默認值
- php
- php擴展安裝
- redis
- swoole
- gd
- BCMath
- igbinary
- zstd
- 包管理器:composer
- 優化性能
- nodejs
- 更新gcc版本
- 版本控制
- git
- 常用命令
- gitlab
- 版本管理規范
- 使用阿里云創建遠程倉庫
- git自動化部署
- svn
- 忽略指定文件
- 拉取代碼
- 自動化運維
- jekins
- 容器
- 集群
- 架構設計
- 設計原則
- 閱讀參考
- 代碼規劃
- 架構實戰
- 服務治理
- 權限控制設計
- 具體設計
- 計劃
- 疑問知識點
- 讀書筆記
- 高性能Mysql
- TCP-IP詳解-卷一:協議
- 思考
- php如何實現并發執行
- 對接調用設計
- 如何在瀏覽器上實現插件
- 如何設計一個app結合業務告警
- mysql的where查詢沒有用到索引
- 為啥in查詢比循環嵌套sql的查詢還要慢
- 使用git來創建屬于自己的composer包
- 翻頁獲取數據的時候又新增了數據
- 安全思路
- 月報
- PHP ?? 和 ?: 的區別
- PHP異步執行
- redis集群的目標是什么
- 大文件數據處理
- 性能瓶頸分析
- 命令行里輸出帶顏色的字體
- 面試問題合集
- 基礎
- 安全
- 算法
- 冒泡排序
- 快速排序
- 二分法查詢數組指定成員
- 字符查找匹配
- 令牌桶
- 漏桶
- 計數器
- 代理
- 協議
- http
- 狀態碼
- tcp
- udp
- Oauth2.0
- 設計模式
- 單例模式
- 適配器模式
- 工廠模式
- 觀察者模式
- 流程化
- 地址欄輸入網址到返回網頁的流程
- 題目收集
- 工具
- rabbitMq
- rabbitMQ用戶管理
- 生產者
- 消費者
- 支持TP5.*的think-queue
- 消息丟失
- 消費者報錯
- rabbitMQ配置優化
- 磁盤滿載導致服務掛掉
- PHP類庫
- rabbitMQ踩坑
- navicat
- vscode
- phpstorm
- 激活碼
- markdown
- PHP自定義類庫
- 工具類
- 領導力
- 任務分配
- 代碼組織
- 不要重復
- 避免污染
- 接口定義規范
- 小業務需求
- 獲取充值面額組成
- 監控服務器CPU和內存
- shell腳本版本