Git 常用命令,建議收藏 -
你好,我是田哥
前兩天,我知識星球裏一位朋友諮詢我 Git 怎麼搞,那麼多命令難道要全部記下來嗎?
答案是:沒有必要,作爲多年使用 Git 的我,其實很多命令也沒用過。
有的同學可能會說,IDEA 上直接這裏點 commit、push 之類的不就能把代碼提交上去了嗎?搞這麼多命令有啥用?自己累不累呀?
我只想回一句:你太年輕了!
爲了讓你不再爲 Git 命令多而煩惱,我特意寫了這篇文章。
在閱讀文章之前,先了解三個概念:
-
工作區
Index / Stage
: -
暫存區
Repository
: -
倉庫區(或本地倉庫)
Remote
:遠程倉庫
本文重點是我們工作中常用的命令,只要搞定本文,工作就輕鬆多了。
話不多說,直接開始吧。
配置 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 add
,commit
只負責提交暫存區
的內容)
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 add
或git 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