Git使用指南

文章目錄

  • 一、Git概念
  • 二、Git命令清單
    • 1、新建代碼庫
    • 2、配置
    • 3、增加/刪除文件
    • 4、代碼提交
    • 5、分支
    • 6、標簽
    • 7、查看信息
    • 8、遠程同步
    • 9、撤銷
    • 10、其他
  • 三、常用高級操作
    • 1、把其他分支代碼摘到當前分支
    • 2、重置剛剛提交的代碼

一、Git概念

Git流程圖
在這里插入圖片描述

相關概念說明:

  • Workspace:工作區,指的是我們進行開發工作的地方,比如我們的IntelliJ IDEA;
  • Index / Stage:暫存區,是一個中間區域,將內容存儲在Git倉庫的隱藏目錄(.git目錄下的index文件),方便我我們分組提交;
  • Repository:本地倉庫,存儲項目歷史記錄的地方,是對項目的本地備份;
  • Remote:遠程倉庫,位于遠程服務器上的倉庫副本,團隊共享的代碼庫;

一般來說,日常使用只要記住上圖中6個命令,就可以了,但是熟練使用,恐怕要記住60~100個命令。
下面是我整理的常用 Git 命令清單,一起來看看吧~

二、Git命令清單

1、新建代碼庫

在當前目錄新建一個Git代碼庫

git init

新建一個目錄,將其初始化為Git代碼庫

git init [project-name]

克隆遠程倉庫到本地

git clone [url]

2、配置

Git的設置文件為.gitconfig,它可以在用戶主目錄下(全局配置),也可以在項目目錄下(項目配置)。

顯示當前的Git配置

git config --list

編輯Git配置文件

git config -e [--global]

設置提交代碼時的用戶信息

git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"

3、增加/刪除文件

添加每個變化前,都會要求確認

添加指定文件到暫存區

git add [file1] [file2] ...

添加指定目錄到暫存區,包括子目錄

git add [dir]

添加當前目錄的所有文件到暫存區

git add .

對于同一個文件的多處變化,可以實現分次提交

git add -p

刪除工作區文件,并且將這次刪除放入暫存區

git rm [file1] [file2] ...

停止追蹤指定文件,但該文件會保留在工作區

git rm --cached [file]

改名文件,并且將這個改名放入暫存區

git mv [file-original] [file-renamed]

4、代碼提交

提交暫存區到倉庫區

git commit -m [message]

提交暫存區的指定文件到倉庫區

git commit [file1] [file2] ... -m [message]

提交工作區自上次commit之后的變化,直接到倉庫區

git commit -a

提交時顯示所有diff信息

git commit -v

使用新的commit,替代上一次提交,如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息

git commit --amend -m [message]

重做上一次commit,并包括指定文件的新變化

git commit --amend [file1] [file2] ...

5、分支

列出所有本地分支

git branch

列出所有遠程分支

git branch -r

列出所有本地分支和遠程分支

git branch -a

新建一個分支,但依然停留在當前分支

git branch [branch-name]

新建一個分支,并切換到該分支

git checkout -b [branch]

新建一個分支,指向指定commit

git branch [branch] [commit]

新建一個分支,與指定的遠程分支建立追蹤關系

git branch --track [branch] [remote-branch]

切換到指定分支,并更新工作區

git checkout [branch-name]

切換到上一個分支

git checkout -

建立追蹤關系,在現有分支與指定的遠程分支之間

git branch --set-upstream [branch] [remote-branch]

合并指定分支到當前分支

git merge [branch]

選擇一個commit,合并進當前分支

git cherry-pick [commit]

刪除分支

git branch -d [branch-name]

刪除遠程分支

git push origin --delete [branch-name]
git branch -dr [remote/branch]

6、標簽

列出所有tag

git tag

新建一個tag在當前commit

git tag [tag]

新建一個tag在指定commit

git tag [tag] [commit]

刪除本地tag

git tag -d [tag]

刪除遠程tag

git push origin :refs/tags/[tagName]

查看tag信息

git show [tag]

提交指定tag

git push [remote] [tag]

提交所有tag

git push [remote] --tags

新建一個分支,指向某個tag

git checkout -b [branch] [tag]

7、查看信息

顯示有變更的文件

git status

顯示當前分支的版本歷史

git log

顯示commit歷史,以及每次commit發生變更的文件

git log --stat

搜索提交歷史,根據關鍵詞

git log -S [keyword]

顯示某個commit之后的所有變動,每個commit占據一行

git log [tag] HEAD --pretty=format:%s

顯示某個commit之后的所有變動,其"提交說明"必須符合搜索條件

git log [tag] HEAD --grep feature

顯示某個文件的版本歷史,包括文件改名

git log --follow [file]
git whatchanged [file]

顯示指定文件相關的每一次diff

git log -p [file]

顯示過去5次提交

git log -5 --pretty --oneline

顯示所有提交過的用戶,按提交次數排序

git shortlog -sn

顯示指定文件是什么人在什么時間修改過

git blame [file]

顯示暫存區和工作區的差異

git diff

顯示暫存區和上一個commit的差異

git diff --cached [file]

顯示工作區與當前分支最新commit之間的差異

git diff HEAD

顯示兩次提交之間的差異

git diff [first-branch]...[second-branch]

顯示今天你寫了多少行代碼

git diff --shortstat "@{0 day ago}"

顯示某次提交的元數據和內容變化

git show [commit]

顯示某次提交發生變化的文件

git show --name-only [commit]

顯示某次提交時,某個文件的內容

git show [commit]:[filename]

顯示當前分支的最近幾次提交

git reflog

8、遠程同步

下載遠程倉庫的所有變動

git fetch [remote]

顯示所有遠程倉庫

git remote -v

顯示某個遠程倉庫的信息

git remote show [remote]

增加一個新的遠程倉庫,并命名

git remote add [shortname] [url]

取回遠程倉庫的變化,并與本地分支合并

git pull [remote] [branch]

上傳本地指定分支到遠程倉庫

git push [remote] [branch]

強行推送當前分支到遠程倉庫,即使有沖突

git push [remote] --force

推送所有分支到遠程倉庫

git push [remote] --all

9、撤銷

恢復暫存區的指定文件到工作區

git checkout [file]

恢復某個commit的指定文件到暫存區和工作區

git checkout [commit] [file]

恢復暫存區的所有文件到工作區

git checkout .

重置暫存區的指定文件,與上一次commit保持一致,但工作區不變

git reset [file]

重置暫存區與工作區,與上一次commit保持一致

git reset --hard

重置當前分支的指針為指定commit,同時重置暫存區,但工作區不變

git reset [commit]

重置當前分支的HEAD為指定commit,同時重置暫存區和工作區,與指定commit一致

git reset --hard [commit]

重置當前HEAD為指定commit,但保持暫存區和工作區不變

git reset --keep [commit]

新建一個commit,用來撤銷指定commit
后者的所有變化都將被前者抵消,并且應用到當前分支

git revert [commit]

暫時將未提交的變化移除,稍后再移入

git stash
git stash pop

10、其他

生成一個可供發布的壓縮包

git archive

三、常用高級操作

前置說明:<commit>是應用提交的哈希值或引用

1、把其他分支代碼摘到當前分支

作用:將指定的提交應用到當前分支上

git cherry-pick <commit>

我們在hotfix分支修復了幾個bug,但只有其中幾個可以合到master發線上,就可以這么處理。比如,我們修復了下單bug、用戶信息顯示bug,但測試只驗收通過了下單bug,需要緊急上線,就可以把下單bug的commit信息cherry-pick到master分支發上線

2、重置剛剛提交的代碼

重置到某個commit

git reset --hard [commit]

強行推送當前分支到遠程倉庫

git push  --force

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209207.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

生信技能30 - 獲取CNV開始位置和結束位置所在的染色體區帶

獲取CNV開始位置和結束位置所在的染色體區帶,以下為函數方法和調用方法示例 程序代碼 # 獲取INDEL開始位置和結束位置所在的染色體區帶 def get_cytoband(pos_start, pos_end, chrom):# cytoBand.txt所在的文件路徑cytoband_file = “./cytoBand.txt”try:df = pd.read_csv(…

書籍推薦: 深入理解Go并發編程

一書在手&#xff0c;并發無憂 收到了鳥窩老師歷時五載寫就的新作「深入理解Go并發編程」 迫不及待開卷閱覽&#xff0c;大呼過癮&#xff0c;最大感觸是誠如副標題所言&#xff0c;“從原理到實踐&#xff0c;看這本就夠了”。 對并發編程優雅簡潔的支持&#xff0c;是Go最大的…

GS求解與QR分解的一致性校驗

QR分解相對于GS分解更簡單,在MATLAB中更容易實現; 我們使用一組數據進行測試,代碼如下: clc; clearvars;%% 方法A:GS求解,construct new orthonormal basis by gram-schmidt y0=1:12; znorm=zeros(3,1); n1=3; znorm(1)=0.0; for j=1:n1 znorm(1)=znorm(1)+y0(n1*j+1)^…

探索無監督域自適應,釋放語言模型的力量:基于檢索增強的情境學習實現知識遷移...

深度學習自然語言處理 原創作者: Xnhyacinth 在自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;如何有效地進行無監督域自適應(Unsupervised Domain Adaptation, UDA) 一直是研究的熱點和挑戰。無監督域自適應的目標是在目標域無標簽的情況下&#xff0c;將源域的知識…

ABAP - Function ALV 01 Function ALV的三大基石

森莫是Function ALV&#xff1f; 業務顧問和用戶方面的名詞定義為報表&#xff0c;在開發顧問方面定義的名詞為ALV 通過調用Function方式展示的ALV叫做FunctionALV.Function的解釋:封裝好的函數 Function ALV的三大基石 Fieldcat :Function ALV字段級別的處理 Layout …

前端小技巧: 設計一個簡版前端統計 SDK

統計 sdk 如何設計 1 ) 概述 客戶端一個sdk &#xff0c;把數據發送給服務端(第三方統計平臺)服務端產生一個統計的報表 2 &#xff09;需求點 訪問量&#xff1a;pv自定義事件&#xff1a;用戶的一切行為我們都可以自定義采集性能&#xff0c;錯誤 3 ) 代碼實現 const P…

uView框架的安裝與Git管理

參考鏈接&#xff1a;Http請求 | uView - 多平臺快速開發的UI框架 - uni-app UI框架 安裝 打開我們項目的cmd進行下載&#xff1a; yarn add uview-ui 首先我們要確定&#xff0c;未下載前的文件目錄以及下載后&#xff0c;是多了個文件目錄node_modules 下載完成之后我們就…

QQ2023備份

需要修改的路徑&#xff08;共3處&#xff09; 這三處路徑中&#xff0c;只有一處是需要修改的 QQPC端-主菜單-設置-基本設置-文件管理 點擊上面的“”自定義“”&#xff0c;然后修改路徑即可 修改路徑后提示 然后等一會才會關干凈QQ的相關進程&#xff0c;關閉后才會有自動…

外貿找客戶軟件工具:WhatBotPlus 4.6.2

WhatBot 是所有使用 Whatsapp 與客戶溝通的中小型公司、企業或自由職業者的理想軟件。借助 WhatBot&#xff0c;您可以通過 Whatsapp 發送新聞通訊活動&#xff0c;還可以設置自動回復。由于命令一旦配置&#xff0c;客戶就可以獲取各種信息、接收優惠和促銷等&#xff0c;從而…

linux安裝tomcat

Tomcat官網&#xff1a; http://tomcat.apache.org 配置java環境 上傳jdk1.8到服務器。安裝jdk [rootjava-tomcat1 ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/[rootjava-tomcat1 ~]# cd /usr/local/[rootjava-tomcat1 local]# mv jdk1.8.0_191/ java 設置環境…

51單片機獨立按鍵以及矩陣按鍵的使用以及其原理--獨立按鍵 K1 控制 D1 指示燈亮滅以及數碼管顯示矩陣按鍵 S1-S16 按下后鍵值 0-F

IO 的使用–按鍵 本文主要涉及8051單片機按鍵的使用&#xff0c;包括獨立按鍵以及矩陣按鍵的使用以及其原理&#xff0c;其中代碼實例包括: 1.獨立按鍵 K1 控制 D1 指示燈亮滅 2.通過數碼管顯示矩陣按鍵 S1-S16 按下后鍵值 0-F 文章目錄 IO 的使用--按鍵一、按鍵消抖二、獨立按…

node.js和npm的安裝與環境配置(2023最新版)

目錄 安裝node.js測試是否安裝成功測試npm環境配置更改環境變量新建系統變量 安裝node.js 1、進入官網下載&#xff1a;node.js官網 我選擇的是windows64位的&#xff0c;你可以根據自己的實際情況選擇對應的版本。 2、下載完成&#xff0c;安裝。 打開安裝程序 接受協議 選…

【RabbitMQ基礎編程模型】

文章目錄 RabbitMQ基礎編程模型基礎編程模型step1、首先創建連接&#xff0c;獲取Channelstep2、聲明Exchange-可選step3、聲明queuestep4、聲明Exchange與Queue的綁定關系-可選 RabbitMQ基礎編程模型 RabbitMQ的使用生態已經相當龐大&#xff0c;支持非常多的業務場景&#x…

五、HotSpot細節實現

一、并發標記與三色標記 問題&#xff1a;三色標記到底發生在什么階段&#xff0c;替代了什么。并發標記 1、并發標記( Concurrent Marking) 從 GC Root 開始對堆中對象進行可達性分析&#xff0c;遞歸掃描整個堆里的對象圖&#xff0c;找出要回收的對象&#xff0c;這階段耗…

【大數據分析】

系列文章目錄 文章目錄 系列文章目錄前言一、數據分析框架二、數據分析方法1.數據清洗&數據探索2.數據清洗之異常值判別3.數據清洗之缺失值處理4.數據探索5.結構優化 三、大數據可視化1.大數據可視化概念1.1 定義1.2 數據可視化的意義 2.可視化類型和模型2.1 科學可視化2.2…

網站內容審核功能的重要性

網站內容審核功能的重要性在保護用戶權益、維護網站形象、遵守法律法規等方面都起到了至關重要的作用。 維護網站的合法性和道德性&#xff1a;網站內容審核功能的存在可以幫助過濾和刪除違法、淫穢、惡意、詐騙等不良內容&#xff0c;保證網站內容的合法性和道德性。 保護用…

前端部分知識點總結

小程序接口的通用協議是什么 小程序接口的通用協議是HTTPS。 小程序體驗版本打開后顯示空白&#xff0c;只有點擊"打開調試模式"再次打開才能顯示正常&#xff0c;原因是體驗版本的接口協議是HTTP&#xff0c;但小程序只認HTTPS&#xff0c;所以不會去調接口&#…

Python表單處理

目錄 通過Flask處理表單 通過Flask-WTF處理表單 通過Flask-WTF驗證表單 通過Flask處理表單 表單是在網頁中搜集用戶信息的各種表單控件的集合區域&#xff0c;表單控件包括文本框、單選框、復選框、提交按鈕等&#xff0c;用于實現客戶端和服務器端之間的數據交互。 利用F…

用Java寫一個拼圖游戲

目錄 運行出的游戲界面如下&#xff1a; User類 CodeUtil類 游戲設置 登陸代碼 注冊代碼 游戲代碼 運行出的游戲界面如下&#xff1a; 按住A不松開&#xff0c;顯示完整圖片&#xff1b;松開A顯示隨機打亂的圖片 User類 package domain;/*** ClassName: User* Author: Kox*…

AI人工智能和大模型(概念)之二

Pytorch的安裝 通過Anaconda安裝PyTorch更為便捷 張量&#xff1a;&#xff08;1&#xff09;Tensor可以是高維的&#xff08;2&#xff09;并非是PyTorch中才有的概念&#xff08;3&#xff09;PyTorch運算的基本單元&#xff08;4&#xff09;基礎數據定義和運算&#xff0…