Git 常用命令,建議收藏 -

你好,我是田哥

前兩天,我知識星球裏一位朋友諮詢我 Git 怎麼搞,那麼多命令難道要全部記下來嗎?

答案是:沒有必要,作爲多年使用 Git 的我,其實很多命令也沒用過。

有的同學可能會說,IDEA 上直接這裏點 commit、push 之類的不就能把代碼提交上去了嗎?搞這麼多命令有啥用?自己累不累呀?

我只想回一句:你太年輕了!

爲了讓你不再爲 Git 命令多而煩惱,我特意寫了這篇文章。

在閱讀文章之前,先了解三個概念:

本文重點是我們工作中常用的命令,只要搞定本文,工作就輕鬆多了。

話不多說,直接開始吧。

配置 git

Git 用戶名

git config --global user.name "Your Name"

郵箱

git config --global user.email "email@example.com"

Git 顯示顏色

git config --global color.ui true

初始化

創建項目文件夾,進入到文件夾裏,然後初始化 Git。

mkdir project
cd project
git init

添加文件並提交代碼 (git commit之前需先git addcommit只負責提交暫存區的內容)

git add README.md(文件名)
# git add -f README.md(-f爲強制添加,可提交.gitignore中配置的文件)
git commit -m "提交備註"

查看當前倉庫狀態

git status

對比文件改動內容

git diff README.md(文件名)

查看 Git 日誌

git log

版本回退到第 N 個版本前

git reset --hard HEAD~N

版本回退 (切換) 到指定版本(git 每次提交的唯一十六進制的 id,git log或者git reflog(記錄每次一提交的信息) 可以查看)

git reset --hard e475afc93c209a690c39c13a46716e8fa000c366(版本號,這只是個例子,此值不必寫全,只要能讓git知道是哪個把那本就行,一般寫5-6位即可)

撤銷修改 (撤銷到最近一次git addgit commit之前的狀態)

git checkout -- README.md(文件名)

撤銷暫存區的修改 (git commit之前)

git reset HEAD README.md(文件名)

刪除文件 (確定刪除需要git commit,若誤刪可以使用git checkout -- 文件名)

git rm README.md(文件名)

查看遠程倉庫連接信息 (fetch 抓取,push 推送)

git remote -v

關聯遠程倉庫

git remote add origin git@github.com:username/xxxx.git

推送到遠程庫 (第一次推送master分支)

git push -u origin master

推送到遠程庫

git push origin 分支名

克隆代碼

git clone https://github.com/username/xxxx.git

git clone git@github.com:username/xxxx.git

克隆指定分支代碼

git clone -b 分支名 https://github.com/username/xxxx.git

創建分支

git branch 分支名

切換分支

老版本

git checkout 分支名

新版本

git switch 分支名

創建分支並切換

老版本

git checkout -b 分支名

新版本

git switch -c 分支名

查看分支

git branch

查看所有分支 (本地 + 遠程,遠程分支會以紅色標出,當前分支前面會標一個*號)

git branch -a

合併某分支到當前分支,若存在衝突會提示手動修改後再提交,git merge默認爲fast forward模式

fast forward模式

git merge 其他分支名

禁用Fast forward模式 (--no-ff) 推薦

git merge --no-ff -m "提交備註" 其他分支名

git log --graph --pretty=oneline --abbrev-commit命令可以看到分支合併圖

刪除分支

git branch -d 分支名

強行刪除分支

git branch -D 分支名

保存工作空間

git stash

查看保存的工作空間

git stash list

從保存的工作空間恢復

git stash apply

若存在多個保存的工作空間 (n 爲序號 0 開始)

git stash apply stash@{n}

刪除保存的工作空間

git stash drop

若存在多個保存的工作空間 (n 爲序號 0 開始)

git stash drop stash@{n}

從保存的工作空間恢復並刪除保存的空間

git stash pop

若存在多個保存的工作空間 (n 爲序號 0 開始)

git stash pop stash@{n}

將其他分支上的提交應用到當前分支

git cherry-pick commit的編號

抓取代碼

git pull

將本地分支與遠程分支關聯

git branch --set-upstream-to 分支名 origin/分支名

把本地未 push 的分叉提交歷史整理成直線;

git rebase

rebase 的目的是使得我們在查看歷史提交的變化時更容易,因爲分叉的提交需要三方對比。

打標籤

git tag v1.0 commit的id(不加則爲之後的commit添加標籤)
git tag -a v1.0 -m "提交備註" commit的id(不加則爲之後的commit添加標籤)

查看所有標籤

git tag

查看標籤信息

git show v1.0

刪除本地標籤

git tag -d v0.1

刪除遠程標籤

git push origin :refs/tags/v1.0

推送某個標籤到遠程

git push origin v1.0

推送全部尚未推送的標籤

git push origin --tags

同一套代碼關聯多個遠程庫 (同時關聯 github 和 gitee 爲例)

關聯 GitHub 的遠程庫

git remote add github git@github.com:username/xxxx.git

關聯 Gitee 的遠程庫

git remote add gitee git@gitee.com:username/xxxx.git

推送 Github

git push github master

推送 Gitee

git push gitee master

查看.gitignore文件中哪條規則寫錯了

git check-ignore -v 文件名

設置命令別名

git status => git st

git config --global alias.st status

git reset HEAD file => git unstage

git config --global alias.unstage 'reset HEAD'

git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit => git lg

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

後記

命令還真不少,也沒事的哈,Git 原本就是個工具,所以,會使用就好。

建議收藏哈,工作中遇到了,不用到處去找。

參考:segmentfault.com/a/1190000020912590

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/oQCtM75OoRpitardK5pq0g