主頁 > 軟體工程 > Git的使用以及常用命令(詳解)

Git的使用以及常用命令(詳解)

2022-09-29 12:05:14 軟體工程

一、 版本控制工具


什么是版本控制系統?


版本控制系統(Version Control System):是一種記錄一個或若干檔案內容變化,以便將來查閱特定版
本修訂情況的系統,版本控制系統不僅可以應用于軟體源代碼的文本檔案,而且可以對任何型別的檔案
進行版本控制,

常見的版本控制系統有:cvs、svn、git


為什么要有版本控制系統?

  1. 在開發程序中,經常需要對一個檔案進行修改甚至洗掉,但是我們又希望能夠保存這個檔案的歷史
    記錄,如果通過備份,那么管理起來會非常的復雜,

  2. 在多人開發時,如果需要多人合作開發一個頁面,那么修改以及合并也會非常的棘手,容易出現沖
    突,

版本控制系統分類


關于版本控制說明


本地版本控制系統

本地版本控制系統就是在一臺機器上,記錄版本的不同變化,保證內容不會丟失

缺點:如果多人開發,每個人都在不同的系統和電腦上開發,沒辦法協同作業,


在這里插入圖片描述


集中式版本控制系統


svn/cvs都是集中式的版本控制系統

  1. 需要一個中央服務器來管理代碼的的版本和備份

  2. 所有的用戶電腦都是從中央服務器獲取代碼或者是將本地的代碼提交到中央服務器

  3. 依賴與網路環境,如果連不上中央服務器,就無法提交和獲取代碼,

  4. 如果中央服務器宕機,所有人都無法作業,

在這里插入圖片描述


分布式版本控制系統

git是分布式的版本控制系統,

  1. 需要一臺服務器作為代碼倉庫

  2. 每個用戶電腦都是一個服務器(代碼倉庫),并且和代碼倉庫是鏡像的,用戶修改和獲取代碼都是提交到自己的服務器當中,

  3. 不需要網路就可以進行作業,

  4. 當連接網路時,用戶可以選擇將自己的服務器與代碼倉庫進行同步

在這里插入圖片描述


二、 git


git介紹


Git是一款免費、開源的分布式版本控制系統 ,用于敏捷高效地處理任何或小或大的專案,

Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放原始碼的版本控制軟體,


git安裝


Git下載地址:https://git-scm.com/download/win


推薦使用國內鏡像下載http://npm.taobao.org/mirrors/git-for-windows

  1. 不要安裝在中文目錄

  2. 不要使用桌面管理軟體

安裝很簡單,一直下一步即可,在任意的目錄下右鍵,能夠出現下圖,表示安裝成功了,


在這里插入圖片描述


git用法方式主要有兩種,

  • git gui,即圖形化界面的方式

  • git bash,命令列的方式

bash是linux系統的命令,因此學習git前,我們先學習一下bash

  1. 在任意檔案夾中,都可以使用右鍵,通過git bash here打開命令列視窗,此時的路徑就是當前目錄,

  2. 視窗上右鍵,通過options-->Text-->select可以調整字體的大小,

# cd 改變目錄 (change directory)

cd images #進入images檔案夾 

cd .. #進入上一層目錄

cd ~ #進入用戶根目錄


# tab 自動補全,當我們輸命令或者目錄很長時,可以使用tab鍵進行自動補全,

# 按兩次tab,會把所有符合要求的內容都列出來,

# pwd 列印當前目錄的路徑 (print work directory) 


# ls 展示當前目錄串列(list) 

ls # 展示當前目錄 

ls -a # 展示全部內容,包括隱藏檔案 

ls -l # 以串列的形式展示內容 

ls -al # 以串列的形式展示所有的內容,包括隱藏檔案, 

ls --help # 查看ls所有的引數, 

ls -l images # 展示images目錄下的檔案,如果沒有寫目錄,默認展示當前目錄, 


# clear reset清屏 

clear # 清除螢屏內容,滾動條,保留了歷史 

reset # 重置,歷史記錄沒了, 


# mkdir 創建一個檔案夾 (make directory)

mkdir css # 創建一個css的檔案夾 

mkdir css img js # 創建了三個檔案夾 


# rmdir 洗掉一個空的檔案夾

# 洗掉檔案夾 

# touch 創建檔案 touch index.html 

# 創建了一個index.html檔案 touch css/index.css 

# 在css目錄下創建idnex.css檔案 

# rm 洗掉一個檔案獲取檔案夾 rm index.html 

# 洗掉index.html檔案 rm js 

# 洗掉空的js檔案夾 rm -r css 

# 遞回洗掉一個檔案夾 

# mv 移動檔案(move) mv index.html js 

# 將html檔案移動到js檔案夾中 mv index.html index2.html 

# 將index.html重命名為index2.html 

# cp 復制檔案(cp) cp index.html index2.html 

# 復制index.html檔案,命名為index2.html cp -r css css02 

# 如果復制的是檔案夾,需要使用-r引數, 

# cat 查看檔案全部內容 cat index.html 

# less 查看檔案部分內容 less index.html 

# q退出查看

基本操作


  1. 初始化git倉庫 git init

  2. 查看當前git倉庫的狀態 git status

  3. 將檔案添加到git的暫存區 git add 檔案名

  4. 將檔案由暫存區提交到倉庫區 git commit -m '提交說明'

  5. 查看提交日志 git log

# 初始化git倉庫,會在當前目錄生成一個隱藏檔案夾 .git 不要去修改這個檔案夾下的任意東西, 

git init 


# 查看git的狀態 ,如果此時新建一個檔案,那么這個檔案是沒有被追蹤的,說白了git還沒有管理這個新建 的檔案 

git status 


# 讓git管理這個新建的檔案 

git add index.html 


# 讓檔案由暫存區提交到倉庫區,此時檔案才真正的被git管理了, 


# 如果提交日志亂碼,右鍵-->options-->Text-->將編碼改成utf-8 

git commit -m '第一次提交' 


# 查看提交日志 

git log

配置郵箱和用戶名


如果第一次使用git,會要求設定用戶名和郵箱

# git config user.name 你的目標用戶名

# git config user.email 你的目標郵箱名


# 這種配置方式只有在當前倉庫生效

git config user.name shuaige 

git config user.email [email protected]



# 可以使用--global引數,配置全域的用戶名和郵箱,這樣別的git倉庫就不需要重新配置了,


# 如果同時配置了區域的和全域的,那么區域的用戶名和郵箱將會生效,

git config --global user.name shuaige

git config --global user.email [email protected]



# 查看配置資訊

git config --list

git的作業原理


在這里插入圖片描述


git命令詳解


git add

作用:將檔案由 作業區 添加到 暫存區,暫存檔案

用法:git add 檔案名

git add --all 或者 git add -A 或者 git add . (簡寫) 添加所有檔案

git add a.txt b.txt 同時添加兩個檔案

git add *.js 添加當前目錄下的所有js檔案


git checkout 檔案名

作用:暫存區的內容恢復到作業區,

git checkout 1.txt 將暫存區中1.txt檔案恢復到作業區

git commit

作用:將檔案由 暫存區 添加到 倉庫區

git commit -m "提交說明"

git status

作用:查看檔案的狀態

命令: git status

命令: git stauts -s 簡化日志輸出格式

git log

作用:查看提交日志

git log 只能查看當前head以及以前的日志

git log --oneline 簡潔的日志資訊

git reflog 查看所有的提交變更日志

git reset

作用:版本回退,將代碼恢復到已經提交的某一個版本中,

git reset --hard 版本號 將代碼回退到某個指定的版本(版本號只要有前幾位即可)

git reset --hard head~1 將版本回退到上一次提交

  • ~1:上一次提交

  • ~2:上上次提交

  • ~0:當前提交

git忽視檔案

在倉庫中,有些檔案是不想被git管理的,比如資料的配置密碼、寫代碼的一些思路等,git可以通過配置從而達到忽視掉一些檔案,這樣這些檔案就可以不用提交了,

在倉庫的根目錄創建一個 .gitignore 的檔案,檔案名是固定的,

將不需要被git管理的檔案路徑添加到 .gitignore 中

# 忽視idea.txt檔案
idea.txt


# 忽視.gitignore檔案
.gitignore


# 忽視css下的index.js檔案

css/index.js


# 忽視css下的所有的js檔案

css/*.js


# 忽視css下的所有檔案

css/*.*


# 忽視css檔案夾

css

三、 git分支操作


分支就是科幻電影里面的平行宇宙,當你正在電腦前努力學習Git的時候,另一個你正在另一個平行宇宙里努力學習SVN,

如果兩個平行宇宙互不干擾,那對現在的你也沒啥影響,不過,在某個時間點,兩個平行宇宙合并了,結果,你既學會了Git又學會了SVN!


在這里插入圖片描述


為什么要有分支?


如果你要開發一個新的功能,需要2周時間,第一周你只能寫50%代碼,如果此時立即提交,代碼沒寫完,不完整的代碼會影響到別人無法作業,如果等代碼寫完再提交,代碼很容易丟失,風險很大,

有了分支,你就可以創建一個屬于自己的分支,別人看不到,也不影響別人,你在自己的分支上作業,提交到自己的分支上,等到功能開發完畢,一次性的合并到原來的分支,這樣既安全,又不影響他人作業,

在作業程序中,經常會碰到多任務并行開發 的情況,使用分支就能很好的避免任務之間的影響,其他版本工具比如svn,cvs中也有分支這個概念,但是這些工具中的分支操作非常的慢,形同擺設,


分支操作的命令


創建分支

git branch 分支名稱 創建分支,分支中的代碼,在創建時與當前分支的內容完全相同,

git在第一次提交時,就有了一個叫master的主分支,

查看分支

git branch 可以查看所有的分支,

在當前分支的前面會有一個 *

切換分支

git checkout 分支名稱 切換分支

在當前分支的任何操作,都不會影響到其他的分支,除非進行了分支合并,

切換分支之前,必須保證代碼已經提交了

創建并切換分支

git checkout -b 分支名稱 創建并切換分支

洗掉分支

git branch -d 分支名稱 可以洗掉分支

注意:不能在當前分支洗掉當前分支,需要切換到其他分支才能洗掉,

注意: master 分支是可以洗掉的,但是不推薦那么做,

合并分支

git merge 分支名稱 將其他分支的內容合并到當前分支,

master 分支中執行git merge dev 將 dev分支中的代碼合并到 master 分支


git分支的作業原理


在這里插入圖片描述


git合并沖突


對于同一個檔案,如果有多個分支需要合并時,容易出現沖突,

合并分支時,如果出現沖突,只能手動處理,再次提交,一般的作法,把自己的代碼放到沖突代碼的后面即可


四、遠程倉庫


所有的程式員都可以通過遠程倉庫來進行版本的共享,達到所有人的代碼一致的效果,


遠程倉庫相關的命令


git push

作用:將本地代碼提交到遠程倉庫

git push 倉庫地址 master 在代碼提交到遠程倉庫,注意master分支必須寫,不能省略

例子: git push [email protected]:hucongcong/test.git master 如果第一次使用,需要填寫github的用戶名和密碼

git pull

作用:將遠程的代碼下載到本地

git pull 代碼地址 將遠程的代碼中master分支下載到本地

通常在push前,需要先pull一次,

git clone

作用:克隆遠程倉庫的代碼到本地

git clone 倉庫地址 自定義本地倉庫名 將整個倉庫克隆到本地

git remote

每次push和pull操作都需要帶上遠程倉庫的地址,非常的麻煩,我們可以給倉庫地址設定一個別名

git remote add 倉庫別名 倉庫地址

使用倉庫別名替代倉庫地址,倉庫別名相當于一個變數,倉庫地址就是對應的值,

git remote add hucc [email protected]:hucongcong/test.git 設定了一個hucc的倉庫別名,以后push和pull都可以不用倉庫地址,而用hucc

git remote remove hucc 洗掉hucc這個倉庫別名,

git remote 查看所有的倉庫別名

如果使用了git clone命令從遠程倉庫獲取下來的,那么這個本地倉庫會自動添加一個 origin的遠程地址,指向的就是克隆的遠程地址,


github


git與github沒有直接的關系,

  • git是一個版本控制工具,

  • github是一個代碼托管平臺,是git的一個遠程代碼倉庫,

  • 將來作業時,公司會有自己的代碼倉庫,

github官網:https://github.com/

gitee碼云官網:https://gitee.com/

  1. gitHub是一個面向開源及私有軟體專案的托管平臺,因為只支持git 作為唯一的版本庫格式進行托管, 故名gitHub,

  2. github免費,代碼所有人都能看到,但是只有你自己能修改,付費的可以隱藏,

在github上創建一個專案,獲取到倉庫的地址,然后就可以將本地的代碼推送到遠程的服務器上,


SSH免密碼登陸


(對稱加密與非對稱加密)

每次push代碼,都需要輸入用戶名跟密碼,非常的麻煩,因此我們可以配置一個SSH免密碼登陸,

  • github為了賬戶的安全,需要對每一次push請求都要驗證用戶的身份,只有合法的用戶才可以push

  • 使用ssh可以實作免密碼操作(不需要使用密碼)

SSH免密碼登錄配置

  1. 創建SSH Key: ssh-keygen -t rsa

  2. 在檔案路徑 C:\用戶\當前用戶名\ 找到.ssh檔案夾

  3. 檔案夾中有兩個檔案:

    • 私鑰: id_rsa

    • 公鑰: id_rsa.pub

  4. github -> settings -> SSH and GPG keys 頁面中,新創建SSH key

  5. 粘貼 公鑰 id_rsa.pub 內容到對應文本框中

  6. 在github中新建倉庫或者使用現在倉庫,拿到 [email protected]:用戶名/倉庫名.git

  7. 此后,再次SSH方式與github“通信”,不用輸入密碼確認身份了

使用github pages搭建博客


GitHub Pages 本用于介紹托管在 GitHub 的專案, 不過,由于他的空間免費穩定,用來做搭建一個博客再好不過了,

缺點:只能放靜態頁面,也就說github pages只能決議html、css、js,無法決議后端語言,

[用戶名.github.io] 將來訪問路徑

博客搭建步驟:

  1. 在本地作業目錄使用git初始化 git init

  2. 創建自己的博客專案

  3. 將創建好的博客添加到暫存區 git add [檔案路徑]

  4. 本地提交: git commit -m "第一個博客"

  5. 在github上創建一個專案,專案名 用戶名.github.io 固定的

  6. 提交到github: git push github倉庫地址 master

  7. 查看github中對應的倉庫中,是不是提交到了

  8. 訪問:用戶名.github.io

hexo創建博客


npm,node這些命令是在windows環境下運行的,需要在cmd中敲

安裝步驟

npm config set registry https://registry.npm.taobao.org --global 

npm config set disturl https://npm.taobao.org/dist --global
  • 安裝hexo

npm install -g hexo

hexo -v # 查看hexo的版本資訊

  • 初始化博客

# 新建一個目錄 blog

hexo init # 初始化

  • 生成靜態頁面

hexo generate # 生成靜態頁面

hexo g # 生成靜態頁面(簡寫)

  • 啟動服務

hexo server # 啟動服務

hexo s # 簡寫

  • 訪問站點

http://localhost:4000/ # 通過這個地址就可以訪問了

hexo常見命令

]hexo中文檔案:https://hexo.io/zh-cn/docs/](https://hexo.io/zh-cn/docs/)

博客格式:

---
title: 我的第一篇博客//(注意冒號后面有一個空格不能丟,)

date: 2017-10-28 01:12:29 //指定博客的日期 

tags:

	 - 學習 
	 
	 - 隨筆 
	 
	 - 心情 

categories:

	 - javascript 

--- 

# 我是大標題 

這后面的內容就跟普通的markdown檔案沒什么區別

發布配置

安裝hexo的部署工具 npm install hexo-deployer-git --save

修改_config.yml檔案

# Site

title: 網站標題

subtitle: 子標題

description: 無 

author: HUCC 

language: zh-CN 

timezone: 


# 發布配置 

deploy: 

	type: git 

	repo: github倉庫地址 

	branch: master

使用 hexo d 發布博客


五、idea集成git


idea配置git


在這里插入圖片描述


idea上傳專案到本地倉庫


在這里插入圖片描述


在這里插入圖片描述


選中指定專案右鍵,選擇Git將專案添加到版本控制,然后使用Commit Directory提交專案到本地倉庫,


在這里插入圖片描述


在這里插入圖片描述


在這里插入圖片描述


將本地倉庫專案推送到遠程倉庫


在這里插入圖片描述


在這里插入圖片描述


在這里插入圖片描述


注意:如果沒有配置ssh公鑰,第一次本地推送,需要輸入GitHub或gitee遠程倉庫用戶名密碼,


idea設定git忽略部分檔案


安裝.ignore插件

點擊File->Settings ,找到Plugins搜索ignore,然后install,OK重啟idea


在這里插入圖片描述


創建專案,在專案中添加.gitignore檔案


在這里插入圖片描述


在這里插入圖片描述


在這里插入圖片描述


建議.gitignore檔案內容

###################################################################### 

# Build Tools 

.gradle 

/build/ 

!gradle/wrapper/gradle-wrapper.jar 


target/ 

!.mvn/wrapper/maven-wrapper.jar 

###################################################################### 

# IDE 
### STS ### 

.apt_generated 

.classpath 

.factorypath 

.project 

.settings 

.springBeans 

### IntelliJ IDEA ### 

.idea

*.iws 

*.iml 

*.ipr 

out 

gen 

### NetBeans ### 

nbproject/private/ 

build/* 

nbbuild/ 

dist/ 

nbdist/ 

.nb-gradle/

###################################################################### 

# Others 

*.log 

*.xml.versionsBackup 

!*/build/*.java 

!*/build/*.html 

!*/build/*.xml

# .gitignore檔案內容撰寫規則 

*.a 				# 忽略所有 .a 結尾的檔案 

!lib.a 				# 但 lib.a 除外 

/TODO 				# 僅僅忽略專案根目錄下的 TODO 檔案,不包括 subdir/TODO 

build/ 				# 忽略 build/ 目錄下的所有檔案 

doc/*.txt 			# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

創建本地倉庫

$ git init

創建個人分支

$ git checkout -b dev

添加檔案到版本控制,提交到本地倉庫

$ git add . 

$ git commit -m "first commit"

推送到遠程倉庫

$ git push https://gitee.com/liyunyi/ssm.g

合并分支推送到主分支

$ git checkout master 

$ git merge dev 

$ git push https://gitee.com/liyunyi/ssm.git master

克隆遠程倉庫專案到本地


在這里插入圖片描述
在這里插入圖片描述


附件:命令大全


在這里插入圖片描述


Workspace:作業區

Index / Stage:暫存區

Repository:倉庫區(或本地倉庫)

Remote:遠程倉庫


倉庫


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

$ git init 


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

$ git init [project-name] 


# 下載一個專案和它的整個代碼歷史 

$ git clone [url]

配置


# 顯示當前的Git配置 

$ git config --list 


# 編輯Git組態檔 

$ git config -e [--global] 


# 設定提交代碼時的用戶資訊 

$ git config [--global] user.name "[name]" 

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

增加/洗掉檔案


# 添加指定檔案到暫存區 

$ 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]

代碼提交


# 提交暫存區到倉庫區 

$ 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] ...

分支


# 列出所有本地分支 

$ 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]

標簽


# 列出所有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]

查看資訊


# 顯示有變更的檔案 

$ 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

遠程同步


# 下載遠程倉庫的所有變動 

$ 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

撤銷


# 恢復暫存區的指定檔案到作業區

$ 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

其他


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

$ git archive

參考網址


git大全

https://gitee.com/all-about-git

深入淺出git教程

https://www.cnblogs.com/syp172654682/p/7689328.html

阮一峰git教程

https://www.liaoxuefeng.com/wiki/896043488029600

idea中.ignore忽略提交檔案到Git的使用

http://t.csdn.cn/seZMH

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/509821.html

標籤:其他

上一篇:回歸理性,直面低代碼

下一篇:Git、TortoiseGit中文安裝教程,如何注冊Gitee賬號進行代碼提交,上傳代碼后主頁貢獻度沒顯示綠點(詳解)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more