git 常用commands(轉)

常用 Git 命令清單

作者:?阮一峰

日期:?2015年12月 9日

我每天使用 Git ,但是很多命令記不住。

一般來說,日常使用只要記住下圖6個命令,就可以了。但是熟練使用,恐怕要記住60~100個命令。

下面是我整理的常用 Git 命令清單。幾個專用名詞的譯名如下。

  • Workspace:工作區
  • Index / Stage:暫存區
  • Repository:倉庫區(或本地倉庫)
  • Remote:遠程倉庫

一、新建代碼庫


# 在當前目錄新建一個Git代碼庫
$ git init# 新建一個目錄,將其初始化為Git代碼庫
$ git init [project-name] # 下載一個項目和它的整個代碼歷史 $ git clone [url] 

二、配置

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


# 顯示當前的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

(完)

轉載于:https://www.cnblogs.com/hubgit/p/6898035.html

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

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

相關文章

Win2003磁盤分區調整

引用如下: 可能大家都知道,在Windows Server 2003下,普通版本的分區魔術師是無法運行的,而Windows內置的命令行工具Diskpart則能勝任分區魔術師的大部分工作,它的功能非常強大。輸入Diskpart后,將顯示如圖所…

檢查集群狀態命令_輕松管理Kubernetes集群的7個工具

Kubernetes正在不斷加快在云原生環境的應用,但如何以統一、安全的方式對運行于任何地方的Kubernetes集群進行管理面臨著挑戰,而有效的管理工具能夠大大降低管理的難度。K9sk9s是基于終端的資源儀表板。它只有一個命令行界面。無論在Kubernetes儀表板Web …

leetcode 122. 買賣股票的最佳時機 II(貪心算法)

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉…

前端繪制繪制圖表_繪制圖表(第2頁):JavaScript圖表庫的比較

前端繪制繪制圖表by Mandi Cai蔡曼迪 繪制圖表(第2頁):JavaScript圖表庫的比較 (Charting the waters (pt. 2): a comparison of JavaScript charting libraries) 深入研究D3.js,Dygraphs,Chart.js和Google Charts (A deep dive into D3.js,…

python 3.6.5 pip_在Windows 10 + Python 3.6.5 中用 pip 安裝最新版 TensorFlow v1.8 for GPU

聲明什么cuDNN之類的安裝,應該是毫無難度的,按照官網的教程來即可,除非。。。像我一樣踩了狗屎運。咳咳,這些問題不是本文的關鍵。本文的關鍵是解決pip安裝tensorflow gpu版的問題。安裝環境操作系統:64位的Windows 10…

模板進階——模板實參推斷

一、關鍵點 模板實參:模板參數T的實例類型,如int、string等 模板實參推斷:從函數實參來確定模板實參的過程 模板類型參數與類型轉換:const的轉換、數組/函數到指針的轉換 顯式模板實參:當模板參數類型并未出現在函數參…

leetcode 973. 最接近原點的 K 個點(排序)

我們有一個由平面上的點組成的列表 points。需要從中找出 K 個距離原點 (0, 0) 最近的點。 (這里,平面上兩點之間的距離是歐幾里德距離。) 你可以按任何順序返回答案。除了點坐標的順序之外,答案確保是唯一的。 示例 1&#xf…

ios 打開揚聲器

[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; AVAudioSession *audioSession [AVAudioSession sharedInstance]; //默認情況下揚聲器播放 [audioSession setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthe…

sqlserver 批量處理數據

目前我覺得有兩種方法可以用作批量數據的處理,也算比較靠譜的吧:sqlbulkcopy 和利用表值函數。 1.sqlbulkcopy是dotnet中的一個用來處理大批量插入數據的,具體用法如下: using (SqlConnection conSave new SqlConnection(Config.…

區塊鏈編程語言_區塊鏈開發中使用的最受歡迎的編程語言

區塊鏈編程語言by Michael Draper通過邁克爾德雷珀(Michael Draper) We’re currently in the midst of a new burgeoning industry with blockchain development.我們目前正處于區塊鏈開發的新興行業中。 Blockchain technology is very much in a nascent stage, however t…

vscode 模糊部分代碼_本周 GitHub 速覽:您的代碼有聲兒嗎?(Vol.38)

作者:HelloGitHub-小魚干摘要:還記得花式夸贊程序員的彩虹屁插件 vscode-rainbow-fart 嗎?它后續有人啦!JazzIt 同它的前輩 vscode-rainbow-fart 一樣,是一個能讓代碼“發聲”的工具,它會在腳本運行成功或者…

有趣的鏈接

1行命令實現人臉識別:https://linux.cn/article-9003-1.html轉載于:https://blog.51cto.com/10704527/1983007

webpack基礎使用Loader(三)

loaders:[ { test:/\.js$/, loader:babel-loader, exclude:__dirname"/node_modules/", //排除打包的范圍(需要絕對路徑) include:__dirname"src",//指定打包的范圍(需要絕對路徑) query:{ …

Flutter VS React Native –為什么我認為Flutter最適合移動應用程序開發

This isn’t the type of article you might think it’s going to be. I’m not going to list the pros and cons of every framework and I am not going to do a comparative analysis of performance. 這不是您可能會想到的文章類型。 我不會列出每個框架的優缺點&#xf…

python 2.7 error: Microsoft Visual C++ 9.0 is required

參考:https://stackoverflow.com/questions/43645519/microsoft-visual-c-9-0-is-required 解決方法: 下載并安裝Microsoft Visual C Compiler for Python 2.7: Microsoft Visual C Compiler for Python 2.7 轉載于:https://www.cnblogs.com/…

python內置支持集合運算嗎_Python中的集合支持交、并運算

Python中的集合支持交、并運算答:√新冠肺炎患者潛伏期的傳染性最強答:對在運動的組接中,鏡頭組接一個基本的原則是()、()。答:動接動 靜接靜在中指背,距指甲根中點1分許稱答:老龍庫存控制屬于生產管理而不是物流管理的…

C語言遞歸實現二叉樹(二叉鏈表)的三種遍歷和銷毀操作(實驗)

今天寫的是二叉樹操作的實驗,這個實驗有三個部分: ①建立二叉樹,采用二叉鏈表結構 ②先序、中序、后續遍歷二叉樹,輸出節點值 ③銷毀二叉樹 二叉樹的節點結構定義 typedef struct BiTNode //二叉樹的節…

OC extern和變量

注意&#xff1a; extern只能用來聲明全部變量&#xff0c;不能拿來定義變量 #include <stdio.h>// 第一種做法是將a定義在main函數的前面 // int a;// 完整地聲明全部變量a // extern int a;// extern是可以省略的 int a;int a;int a;int a;void test();int main(int ar…

leetcode514. 自由之路(dp)

電子游戲“輻射4”中&#xff0c;任務“通向自由”要求玩家到達名為“Freedom Trail Ring”的金屬表盤&#xff0c;并使用表盤拼寫特定關鍵詞才能開門。 給定一個字符串 ring&#xff0c;表示刻在外環上的編碼&#xff1b;給定另一個字符串 key&#xff0c;表示需要拼寫的關鍵…

java實現遞歸算法_如何在Java中實現二進制搜索算法而無需遞歸

java實現遞歸算法by javinpaul由javinpaul 流行的二進制搜索算法的迭代實現&#xff0c;用于在排序數組中查找元素。 (An Iterative implementation of the popular binary search algorithm to find an element in a sorted array.) Hello everyone! I have published a lot …