Git命令大全【建議收藏】
前言
其實(shí)在很久之前想寫這個(gè)文章,但是吧,又覺得這個(gè)東西大家都是最常用的,應(yīng)該大家都比較熟悉,但是呢,在實(shí)際工作中還是有很多人不太會使用使用Git命令行,或者連Git的客戶端工具都不太會使用,可怕
其實(shí)這個(gè)東西如果只是用來工作中的開發(fā)使用,倒也是沒必要去為之買本書而研究,只需要稍微理解原理,學(xué)會使用常用命令即可
本文假設(shè)的是大家有一定的Git基礎(chǔ),這一篇的作用是介紹Git的命令行,解釋每個(gè)的命令的作用
我這篇文章默認(rèn)大家對Git是有一定了解的,也就是關(guān)于上面這些理論啥的大概應(yīng)該是懂得,我也就不多啰嗦了,個(gè)人操作的是工作區(qū),add之后會提交到一個(gè)暫存區(qū)stage,commit之后會提交到本地倉庫,push是提交到遠(yuǎn)程倉庫
Git是世界上目前最先進(jìn)的分布式版本控制系統(tǒng),為的就是解決那種多人協(xié)作、多次修改的問題
最順利提交
先來給大家熟悉下Git的倉庫的劃分情況:Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一)。
先來給大家熟悉下Git的倉庫的劃分情況:Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一)。
配置和創(chuàng)建版本庫、分支命令、tag命令、修改和提交、撤銷、查看歷史、
配置和創(chuàng)建版本庫
查看配置:git config --list
配置/修改用戶名:git config --global user.name "name"
配置/修改郵箱:git config --global user.email "email"
檢出倉庫:git clone git://github.com/jquery/jquery.git
查看遠(yuǎn)程倉庫:git remote -v
添加遠(yuǎn)程倉庫:git remote add [name] [url]
刪除遠(yuǎn)程倉庫:git remote rm [name]
拉取遠(yuǎn)程倉庫:git pull [remoteName] [localBranchName]
推送遠(yuǎn)程倉庫:git push [remoteName] [localBranchName]
分支命令
查看遠(yuǎn)程所有分支:git branch -r
查看本地所有分支:git branch
查看所有分支:git branch -a
創(chuàng)建本地分支:git branch [name] 創(chuàng)建后需要手動切換分支
創(chuàng)建遠(yuǎn)程分支:git push origin [name]
創(chuàng)建新分支并且立即切換到新分支:git checkout -b [name]
切換分支:git checkout [name]
刪除本地分支:git branch -d/-D [name] -D用來強(qiáng)制刪除 -d只能刪除已經(jīng)參與了合并的分支,對于未有合并的分支是無法刪除的
刪除遠(yuǎn)程分支:git push origin --delete [name]
強(qiáng)制覆蓋本地代碼:git fetch --all && git reset --hard origin && git pull
合并分支:git merge [name] 將name分支合并到當(dāng)前分支
查看當(dāng)前狀態(tài):git status
tag命令
查看版本:git tag
創(chuàng)建版本:git tag [name]
刪除版本:git tag -d [name]
查看遠(yuǎn)程版本:git tag -r
創(chuàng)建遠(yuǎn)程版本:git push origin [name]
刪除遠(yuǎn)程版本:git push origin --delete [name]
合并遠(yuǎn)程倉庫的tag到本地:git pull origin --tags
上傳本地tag到遠(yuǎn)程倉庫:git push origin --tags
創(chuàng)建帶注釋的tag:git tag -a [name] -m 'message'
修改和提交代碼
查看狀態(tài):git status
查看變更內(nèi)容:git diff
添加修改文件到暫存區(qū):git add [file]
添加所有修改文件到暫存區(qū):git add .
文件改名:git mv [old] [new]
刪除文件:git rm [file]
提交所有暫存區(qū)文件到本地倉庫:git commit -m 'message'
修改最后一次提交:git commit --amend
推送本地倉庫到遠(yuǎn)程倉庫:git push origin [name]
合并分支代碼:git merge [name] 將name分支合并到當(dāng)前分支
撤銷代碼
對某個(gè)文件的add撤銷:git reset HEAD xxx.java
對所有文件的add撤銷:git reset HEAD
對文件的commit撤銷:git reset --hard HEAD
git reset [--mixed --soft --hard] commitID有三種參數(shù),熟悉這三個(gè)參數(shù)的含義
--mixed代表撤銷git add和git commit的操作,保留編輯器的代碼;
--soft代表撤銷git commit,不撤銷git add操作,同時(shí)保留編輯器的代碼;
--hard參數(shù)很暴力,直接撤銷commit和add的操作,撤銷所有改動的代碼,當(dāng)你決定用--hard參數(shù)的時(shí)候,就代表著你應(yīng)該已經(jīng)決定了放棄修改過的所有代碼咯
push操作的撤銷:git reset commitID / git revert commitID
reset則是回到某次提交,此次提交以及之前的Commit都會被保留,但是此次之后的修改都會被退回到暫存區(qū)
revert則是生成一次新的Commit提交來撤銷某次提交,此次提交之前的Commit都會被保留,可以理解成把相應(yīng)版本的代碼刪除掉,再次提交
查看信息
查看當(dāng)前分支的版本和歷史:git log
顯示commit歷史,以及每次Commit的發(fā)生變更的文件:git log --stat
根據(jù)關(guān)鍵字搜索提交歷史:git log -S [keyword]
顯示某個(gè)文件的版本歷史,包括文件改名:git log --follow [file]
顯示過去五次的提交:git log -5 --pretty --oneline
顯示所有提交過的用戶,按照提交次數(shù)排序:git shortlog -sn
顯示指定文件是什么人在什么時(shí)間修改過:git blame [file]
顯示暫存區(qū)和工作區(qū)的差異:git diff
顯示當(dāng)前分支的最近幾次提交:git reflog
新建Git代碼庫:git init
查看當(dāng)前文件狀態(tài):git status
遠(yuǎn)程同步
下載遠(yuǎn)程倉庫的所有變動:git fetch [remote]
顯示所有遠(yuǎn)程倉庫:git remote -v
顯示某個(gè)遠(yuǎn)程倉庫的信息:git remote show [remote]
增加一個(gè)新的遠(yuǎn)程倉庫并命名:git remote add [shortname] [url]
上傳本地指定分支到遠(yuǎn)程倉庫:git push [remote] [branch]
強(qiáng)行推送當(dāng)前分支到遠(yuǎn)程倉庫:git push [remote] --force
推送所有分支到遠(yuǎn)程倉庫:git push [remote] --all