git 查看天
curl?[wttr.in/xiamen](qq://txfile/#)
*****
**升級:**
1.打開[Epel-release](https://link.segmentfault.com/?enc=qr2EIlv7AkSinX9wx4gVgw%3D%3D.NPUBGgvcZzOgmTndP7KBoeXCcsQigHnzEtvwxCcPhP7YlEvyLLplKAp4yw0jh%2BMSQnZjq9%2Fx1eLxhFRF9rb%2Bnsw2fHf0c8X%2FB595cBMybZM%3D)搜索git,并用yum安裝rpm包
~~~awk
yum install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
~~~
2.安裝即可
~~~cmake
yum install git
~~~
*****
查看月相。
curl wttr.in/moon
查找 commit 提交的關鍵字
git log --grep 版本號變更
git log --grep=word
git log --author=word
BUG分支
git?stash?把當前工作現場“儲藏”起來,等以后恢復現場后繼續工作
git?stash?list?查看stash
git?stash?apply?恢復現場
git?stash?drop?刪除保存的stash
git?stash?pop?恢復并刪除stash
git?stash?apply?stash@{0}?多次stash,恢復指定的stash
[https://github.com/k88hudson/git-flight-rules/blob/master/README\_zh-CN.md](https://github.com/k88hudson/git-flight-rules/blob/master/README_zh-CN.md)
git init? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?初始化
git config user.name "test"? ? ? ? ? ? 配置用戶名
git config usre.email "test@qq.com"? ? ? ? ?配置用戶郵箱
git status? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看狀態
git add a.txt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?添加,有工作區到暫存區
git commit a.txt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?提交, 由暫存區到版本區
git log? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看日志
git log -1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看最近一次提交的日志
git log -2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 最近兩次
git log --oneline? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?以一行顯示
git log -l -p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看具體提交信息
git log --pretty=oneline
git log --pretty=oneline --abbrev-commit
git commit -am 'ceshi' add commit 組合
git push? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?倉庫地址? ?從本地到遠程倉庫
git pull? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 從遠程倉庫到本地
git clone? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?從遠處倉庫克隆一個到本地
git diff? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比較工作區與緩存區之間的差別
git diff --cached? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比較緩存區與版本之間的差別
git diff HEAD? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比較工作區與版本庫之間區別
git? ?checkout? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?取出歷史版本
[https://www.cnblogs.com/smuxiaolei/p/7484678.html](https://www.cnblogs.com/smuxiaolei/p/7484678.html)
//git 回退版本號處理
第一種是:git reset? --hard HEAD^
那么如果要回退到上上個版本只需把HEAD^ 改成 HEAD^^ 以此類推。那如果要回退到前100個版本的話,使用上面的方法肯定不方便,我們可以使用下面的簡便命令操作:git reset? --hard HEAD~100 即可。未回退之前的readme.txt內容如下:
第二種 git reset? --hard HEAD^ ^ 以此類推
第三種 git reset? --hard HEAD~100
第四種 git reset? --hard 版本號
git reset? --hard 版本號 ,但是現在的問題假如我已經關掉過一次命令行或者333內容的版本號我并不知道呢?要如何知道增加3333內容的版本號呢?可以通過如下命令即可獲取到版本號:git reflog? 演示如下:
第五種 git reflog 在執行 git reset? --hard 版本號
三:理解工作區與暫存區的區別?
工作區:就是你在電腦上看到的目錄,比如目錄下testgit里的文件(.git隱藏目錄版本庫除外)。或者以后需要再新建的目錄文件等等都屬于工作區范疇。
版本庫(Repository):工作區有一個隱藏目錄.git,這個不屬于工作區,這是版本庫。其中版本庫里面存了很多東西,其中最重要的就是stage(暫存區),還有Git為我們自動創建了第一個分支master,以及指向master的一個指針HEAD。
我們前面說過使用Git提交文件到版本庫有兩步:
第一步:是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區。
第二步:使用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支上。
我們繼續使用demo來演示下:
我們在readme.txt再添加一行內容為4444444,接著在目錄下新建一個文件為test.txt 內容為test,我們先用命令 git status來查看下狀態,如下:

現在我們先使用git add 命令把2個文件都添加到暫存區中,再使用git status來查看下狀態,如下:

接著我們可以使用git commit一次性提交到分支上,如下:

三 Git 編輯撤銷處理
1.未添加到緩沖區
2.已添加到緩沖區
注意:命令git checkout -- readme.txt 中的 -- 很重要,如果沒有 -- 的話,那么命令變成創建分支了。
總結
Git基本常用命令如下:
mkdir:???????? XX (創建一個空目錄 XX指目錄名)
pwd:????????? 顯示當前目錄的路徑。
git init????????? 把當前的目錄變成可以管理的git倉庫,生成隱藏.git文件。
git add XX?????? 把xx文件添加到暫存區去。
git commit –m “XX”? 提交文件 –m 后面的是注釋。
git status??????? 查看倉庫狀態
git diff? XX????? 查看XX文件修改了那些內容
git log????????? 查看歷史記錄
git reset? --hard HEAD^ 或者 git reset? --hard HEAD~ 回退到上一個版本
(如果想回退到100個版本,使用git reset –hard HEAD~100 )
cat XX???????? 查看XX文件內容
git reflog?????? 查看歷史記錄的版本號id
git checkout -- XX? 把XX文件在工作區的修改全部撤銷。
git rm XX????????? 刪除XX文件
git remote add origin?[https://github.com/tugenhua0707/testgit](https://github.com/tugenhua0707/testgit)?關聯一個遠程庫
git push –u(第一次要用-u 以后不需要) origin master 把當前master分支推送到遠程庫
git clone?[https://github.com/tugenhua0707/testgit](https://github.com/tugenhua0707/testgit)? 從遠程庫中克隆
git checkout –b dev? 創建dev分支 并切換到dev分支上
git branch? 查看當前所有的分支
git checkout master 切換回master分支
git merge dev? ??在當前的分支上合并dev分支
git branch –d dev 刪除dev分支
git branch name? 創建分支
git stash 把當前的工作隱藏起來 等以后恢復現場后繼續工作
git stash list 查看所有被隱藏的文件列表
git stash apply 恢復被隱藏的文件,但是內容不刪除
git stash drop 刪除文件
git stash pop 恢復文件的同時 也刪除文件
git remote 查看遠程庫的信息
git remote –v 查看遠程庫的詳細信息
git push origin master? Git會把master分支推送到遠程庫對應的遠程分支上
//創建本地分支 并切換
git checkout –b dev? 創建dev分支 并切換到dev分支上
//刪除本地分支
git branch -d
$ git checkout -b 新切的本地分支名 origin/v0.9rc1
#從遠程分支拉取 到本地分支
git checkout -b 本地分支名稱 origin/遠程分支名稱
git創建遠程分支命令步驟:
1、git branch 查看下當前分支 ? ??
2、git branch \*\*\*(分支名稱) ?
3、git push origin \*\*\*(分支名稱) ?其他的Cimmit,push操作都可以在IDEA界面化操作
git創建遠程分支
git push --set-upstream origin 分支名稱
//提交到遠程 的dev 分支
$ git push origin HEAD:dev
方法是找到歷史提交的commit id,然后打上就可以了:
$ git log --pretty=oneline --abbrev-commit
GIT 導出兩個版本之間變動的文件
git archive --format=zip HEAD `git diff --name-only 新的commit 舊的commit` > a.zip
git diff f973239da8 c51d8ac78e8 --name-only | xargs zip -r ~/20190213-update4
比較兩個版本之間變動的文件
git diff 456bcb 93593a --name-only
想要忽略掉 logs 文件夾下所有的日志文件,但是想保留 logs 文件夾以保持項目文件夾結構的完整性。可以在 logs 文件夾里新建 .gitignore 文件,文件內容如下:
1. \# ignore all except .gitignore file
2. \*
3. !.gitignore
git pull : //取回遠程主機某個分支的更新,再與本地的指定分支合并。
git fetch origin master:tmp //從遠程倉庫master分支獲取最新,在本地建立tmp分支 git diff tmp //將當前分支和tmp進行對比 git merge tmp //合并tmp分支到當前分支
[git刪除遠程分支和本地分支](https://www.cnblogs.com/luosongchao/p/3408365.html)
(1)刪除遠程分支
?如上所示,使用命令 git push origin --delete Chapater6?? 可以刪除遠程分支Chapater6(分支名)???
??????? 再次使用命令 git branch -a?? 可以發現,遠程分支Chapater6已經被刪除。
(2)刪除本地分支
?????????? 使用命令,git branch -d Chapater8 可以刪除本地分支(在主分支中)
//小黑屋祖傳代碼
Git Commands
開始使用git
設置用戶名
全局配置
git config --global user.name "linjinkun"
git config --global user.email "380993970@qq.com"
解決重復輸入用戶名密碼
1\. 在終端下執行?
git config --global credential.helper store
2\. 可以看到~/.gitconfig文件,會多了一項:
\[credential\]
helper = store
創建倉庫(當前目錄)
git init
添加文件
git add 添加指定文件
git add . 添加所有改變的文件
注:如果add后又修改了文件,還要再add一次之后再commit
提交
git commit -m "提交說明"
查看狀態
git status
查看修改
git diff 查看單個文件的更改
git diff 查看所有文件的更改
查看歷史提交
git log
git log --pretty=oneline 一次提交顯示為一行
git blame 查看一個文件的修改記錄(誰在什么事件修改了什么)
查看歷史命令
git reflog
版本控制
版本回退
git reset --hard HEAD 撤銷所有未提交的操作,包括add
git reset --hard HEAD^ 回退到上一個版本
git reset --hard HEAD^^ 回退到上兩個版本
git reset --hard HEAD~100 回退到上100個版本
git reset --hard 回退到指定版本
git checkout -- 丟棄工作區的修改,如果文件add到了暫存區又做了修改,則恢復到暫存區,否則恢復到版本庫的狀態,如果文件刪除了,則回復到版本庫的文件
git reset HEAD 把暫存區的修改撤銷掉,重新放回工作區
注:
場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令 git checkout --
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令 git reset HEAD ,就回到了場景1,第二步按場景1操作
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退,不過前提是沒有推送到遠程庫
刪除/重命名
git rm 刪除文件,盡管文件已經添加到暫存區(add)
git rm --cached 把文件從版本庫、暫存區刪掉,但是保留硬盤文件
git mv 重命名文件
遠程倉庫
創建ssh密鑰
ssh-keygen -t rsa -C "youremail@example.com"
注:一路回車,在用戶主目錄里找到.ssh目錄,里面有id\_rsa和id\_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id\_rsa是私鑰,不能泄露出去,id\_rsa.pub是公鑰,可以放心地告訴任何人,復制內容,在github上添加
遠程倉庫
git remote add origin git@github.com:michaelliao/learngit.git 關聯遠程倉庫,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫
git push -u origin master 我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令
git push origin master 把本地master分支的最新修改推送至GitHub
git clone git@github.com:michaelliao/gitskills.git 從遠程倉庫克隆,Git自動把本地的master分支和遠程的master分支對應起來了,并且,遠程倉庫的默認名稱是origin
git remote 查看遠程庫的信息
git remote -v 查看遠程庫的詳細信息
git push origin master 推送遠程分支,就是把該分支上的所有本地提交推送到遠程庫
git pull 從遠程庫拉取
git checkout -b origin/ 創建遠程origin的branch分支到本地
git branch --set-upstream origin/ 指定本地dev分支與遠程origin/dev分支的鏈接
git push origin --delete 刪除遠程分支
分支管理
創建分支
git checkout -b 創建分支并切換過去,相當于執行了 git branch 和 git checkout
git branch 查看當前分支
git checkout 切換分支
git merge 合并分支到當前分支,有沖突修改后再add、commit
git merge --no-ff -m "合并信息" 禁止快速合并
git branch -d 刪除分支
git branch -D 強行刪除分支(未合并的分支)
BUG分支
git stash 把當前工作現場“儲藏”起來,等以后恢復現場后繼續工作
git stash list 查看stash
git stash apply 恢復現場
git stash drop 刪除保存的stash
git stash pop 恢復并刪除stash
git stash apply stash@{0} 多次stash,恢復指定的stash
標簽管理
創建標簽
git tag 創建標簽
git tag 查看所有標簽
git tag 在指定的版本版本id打標簽
git show 查看標簽信息
git tag -a -m "說明" 創建帶有說明的標簽
操作標簽
git tag -d 刪除標簽
git push origin 推送某個標簽到遠程倉庫
git push origin --tags 一次性推送全部尚未推送到遠程的本地標簽
git push origin :refs/tags/ 刪除遠程標簽(刪除遠程標簽之前要先刪除本地標簽)
導出
git archive -o /d/www/update.zip HEAD $(git diff HEAD HEAD^ --name-only) 導出和上個版本差異的文件
git archive -o /d/update/project.zip master -0 導出純凈項目源碼
git config core.quotepath false 如果導出的文件有中文顯示成Unicode導致導出失敗,配置這個
其他配置
git config core.gitproxy=socks5://127.0.0.1:1080 設置socket5代理
git config core.filemode false 忽略文件權限差異
3.查看分支時間 和分支狀態
git reflog show --date=iso 分支名
git 對比兩個分支差異

[笨笨翔](https://www.jianshu.com/u/db9978035875)關注
2018.10.13 10:16?字數 227?閱讀 417評論 0喜歡 0
1\. 顯示出branch1和branch2中差異的部分
git diff branch1 branch2 --stat
2\. 顯示指定文件的詳細差異
git diff branch1 branch2 具體文件路徑
3\. 顯示出所有有差異的文件的詳細差異
git diff branch1 branch2
4\. 查看branch1分支有,而branch2中沒有的log
git log branch1 ^branch2
5\. 查看branch2中比branch1中多提交了哪些內容
git log branch1..branch2
注意,列出來的是兩個點后邊(此處即dev)多提交的內容。
6\. 不知道誰提交的多誰提交的少,單純想知道有是嗎不一樣
git log branch1...branch2
7\. 在上述情況下,在顯示出沒個提交是在哪個分支上
git log --lefg-right branch1...branch2
注意 commit 后面的箭頭,根據我們在 –left-right branch1…branch2 的順序,左箭頭 表示是branch2的。
- 空白目錄
- containerd
- php
- php常用函數
- 點語法
- 依賴注入
- 反射
- 迭代器和yield
- array_walk
- str_replace
- openssl_decrypt
- array_merge
- 閉包
- 深拷貝與淺拷貝
- 面向對象
- 魔術方法
- __invoke
- __isset 和 __unset
- __clone
- 常用知識點
- 訪問權限
- 抽象類
- 多態
- php框架
- tp
- tp3
- tp5
- job
- laravel
- 中間件
- laravel閉包
- symfony
- 小工具
- phpexcel
- xlswrite
- 設計模式
- 事件event
- 里氏替換原則
- 借鑒
- RESTful API
- 環境安裝
- 編譯安裝
- 編譯安裝后擴展補充
- php小記錄
- php-fpm
- 容器(Container)
- composer
- composer踩坑
- mysql
- 基礎知識
- 外鍵
- 索引
- 觸發器
- 定時器
- 分表
- 分區
- 連接查詢
- 事務
- 鎖機制
- 視圖
- 存儲過程
- 查詢
- 字符截取
- 批量修改表名(前綴)
- explain
- when_case
- pdo
- mysql優化
- 主從復制
- 權限分配
- 實用例子
- 查詢用戶
- 常見問題
- 5.7group by問題
- 遠程鏈接慢問題
- 查看進程
- 遠程訪問
- 常用小記
- mysqldump
- 備份還原
- 系統盤遷移數據盤
- 安裝sql
- 安裝MariaDB
- docker
- 安裝docker
- 配置centos開發環境
- docker運行程序
- rabbitmq
- 刪除無用鏡像
- 解決Centos firewalld導致的docker容器內無法訪問外網,無法訪問其他容器(host沒辦法解析)
- docker-compose
- docker-selenium
- ports 配置
- docker-compose-settings
- 安裝
- docker-compose常用配置
- docker常用命令
- build
- docker-hub加速
- docker-run
- Dockerfile
- apt-get update 無法升級
- 阿里打標簽
- 打包流程
- docker-network
- ufw 允許 docker 容器聯網
- 安裝containerd
- linux
- centos7
- 常用語法
- chmod
- chown
- find
- grep
- /etc/passwd
- chattr
- In軟連接
- 文件目錄大小
- xargs
- 管道用法
- top
- free
- 端口占用
- 壓縮解壓
- tar
- gzip
- zip
- 2>&1
- 環境變量
- 服務管理
- systemctl
- sed
- shell腳本
- time
- journal
- history
- linux-set
- linux-curl
- cp
- umask
- mkdir
- http狀態碼
- awk
- lsof
- crontab
- supervisor
- 常用命令匯總
- 用戶權限
- 普通用戶添加sudo權限
- sudo su
- 添加用戶
- 查看用戶信息
- 修改用戶信息
- 特殊權限
- 系統命令
- 常用小技巧
- vim小技巧
- 防火墻
- 常用規則
- iptables
- 磁盤清理
- 分區掛載
- linux-sh
- tmux
- 多命令執行
- 常用工具
- telnet
- ip轉發
- nohup
- watch
- dig
- 查看磁盤IO
- ssh
- 修改ssh端口
- ssh免密登錄
- 配置文件
- 公鑰分發
- xsync
- 國內鏡像站
- github加速
- 測網速
- 網卡
- 清理日志備份
- 配置sftp
- shell
- rpm
- 安全
- 安裝openssl
- 安裝openssh
- 禁用selinux和防火墻
- lanp環境安裝
- versionTool
- git
- git基本用法
- Gogs搭建
- git鉤子
- git的習慣配置
- phpStorm設置git bash
- git bash 設置代理
- gitignore 不起作用的解決辦法
- gitea搭建
- 同步主干到fork
- git修改地址
- svn
- svn基本操作
- svn 鉤子應用
- svn多版本操作
- Go語言
- Go語言基礎
- 安裝環境
- linux安裝
- window安裝
- 工具使用教程
- linux終端分屏Screen
- keepass 帳號密碼管理
- phpstorm
- 去掉window換行符
- php_cs
- 自定義快捷模塊
- phpstorm快捷鍵
- curl
- 正則
- 設計架構
- 設計模式的六大原則
- 計算機基礎
- TCP三次握手
- OSI7層
- http狀態返回碼
- 前端框架
- Vue
- Angular
- React
- node
- 服務端渲染(SSR)
- MVVM
- nuxt
- pm2
- js
- Promise
- es6
- 常用站點
- 工具類
- 學習類
- ps常用命令
- nginx
- 緩存
- 配置
- TCP
- 常用配置
- ng優先級
- vhost注意點
- nginx第一層驗證
- 轉發(跨域問題)
- 404
- nginx日志格式化
- 重啟腳本
- 寶塔禁用境外ip訪問
- ng統計
- ng編譯安裝
- 防盜鏈
- 技術相關了解
- ddos
- xss
- mysql防注入
- csrf攻擊
- 郵箱系統原理
- DNS
- python
- Selenium
- 微信
- 公眾號
- 公眾號配置
- 用戶授權
- 小程序
- 公有云
- 華為云
- JAVA
- springboot
- windows
- service
- WSL
- 目錄遷移
- wsl2 踩坑
- NoSql
- mongodb
- 安裝mongodb
- redis
- redis-windows
- redis-linux
- openstack
- ====副業====
- 擼茅臺
- 網絡
- 單位換算
- DB
- clickhouse
- mac