git 命令指南

整理一下 git 命令,用時(shí)總會(huì)忘記。

Git常用命令

  • git 克隆遠(yuǎn)程分支倉(cāng)庫(kù)
    git 克隆遠(yuǎn)程倉(cāng)庫(kù)項(xiàng)目時(shí)如果不指定分支,只會(huì)克隆默認(rèn)分支內(nèi)容
git clone -b 分支名稱  遠(yuǎn)程地址
  • 查看 git 用戶名和郵箱
git config user.name
git config user.email
  • 設(shè)置 git 賬號(hào)
git config --global user.ame "foo"
git config --global user.email "foo@email.com"
git config user.name "foo"
git config user.email "foo@mail@com"
  • 查看 git 賬號(hào)
git config --global --list
git config --local --list
  • 僅查看某一項(xiàng)配置
git config --local user.name
  • 分支相關(guān)命令操作
git branch (查看當(dāng)前分支)
git branch -a (查看所有分支)
git branch 分支名 (創(chuàng)建分支)
git branch -d  分支名(刪除分支)
git branch D 分支名 (強(qiáng)制刪除未合并的分支)
git checkout 分支名 (切換到對(duì)應(yīng)分支)會(huì)自動(dòng)將代碼更新為分支代碼
git checkout -b 分支名 (`基于分支名或commit值` 切換分支并直接切換過(guò)去)
  • 查看 git 歷史命令
history
  • 按照關(guān)鍵詞搜索 git 歷史命令
history | grep push
  • 查看 commit 歷史
git log
git log --summary  (--summary 查看已經(jīng)提交的文件詳細(xì)變化)
  • 對(duì)比2個(gè)分支的日志
git log dev..master
  • 回滾本次修改
git reset HEAD foo.js
git checkout -- foo.js
  • 查看本次修改的代碼
git diff
git diff HEAD
git diff --staged
  • 提交后發(fā)現(xiàn)丟了幾個(gè)文件未提交
// 重新添加
git add "*.html"
// 重新提交
git commit --amend
  • 緩存某種后綴的文件
git add "*.js"
  • 清除緩存區(qū)中的文件
git reset  文件路徑
  • 徹底刪除某種后綴的文件
git rm "*.html"
  • 合并分支
git merge 分支名
  • 取消合并
git merge --abort
  • add . 之取消提交某些文件
git checkout -- <文件路徑>
  • 隱藏當(dāng)前修改代碼 保存至堆棧中
git stash
git stash save "命名"
  • 釋放堆棧中的代碼
// 將當(dāng)前stash中的內(nèi)容彈出,并應(yīng)用到當(dāng)前分支對(duì)應(yīng)的工作目錄上 `注:該命令將堆棧中最近保存的內(nèi)容刪除(棧是先進(jìn)后出)`
git stash pop 
// 釋放指定代碼
git stash pop stash@{0}
  • 查看堆棧(stash)目錄
git stash list
  • 刪除某個(gè) stash
//  `stash@{0} 為棧中名稱`
git stash drop stash@{0}
  • 清除 stash 所有內(nèi)容
git stash clear
  • 誤刪除stash
git fsck --unreachable |
grep commit | cut -d\  -f3 |
xargs git log --merges --no-walk --grep=WIP
// 找到對(duì)應(yīng)的 commit hash值
git stash apply hash值
  • 刪除遠(yuǎn)程分支(次分支必須是非默認(rèn)分支)
git push origin --delete branchname
  • 已經(jīng)commit,強(qiáng)制退回到舊版本
git log // 找到對(duì)應(yīng) commit hash 值
git reset --hard hash值
  • 回退一次commit
git revert Head/[commit hash]
  • 設(shè)置遠(yuǎn)程倉(cāng)庫(kù)地址
git remote set-url origin git@foo.bar.com:a/hello.git
  • 本地創(chuàng)建了新分支,但是 origin 沒(méi)有,push代碼前
git push --set-upstream origin preproduction
  • 指定 tag 到遠(yuǎn)程
git push origin <tag_name>
  • 將全部 tag 推送到遠(yuǎn)程
git push --tags
  • 查看當(dāng)前 tags
git tag --list
  • 僅刪除index 不刪除 working tree的.idea文件
// --cached 僅刪除index, -r(recursive) 遞歸刪除.idea目錄下的所有文件
git rm --cached -r .idea
  • git 主動(dòng) track 文件,控制文件,做好提交準(zhǔn)備
git add <file(s)>/.
  • git unstage 文件,釋放文件 選擇性控制
git reset HEAD <file(s)>/.
  • 暫存區(qū)文件如何覆蓋工作目錄文件
git reset HEAD <file(s)>/. && git checkout -- <files>/.
  • 提交已經(jīng)被 git 管理,修改過(guò)為紅色的所有文件
git add -u
  • 重置工作區(qū)和暫存區(qū)的所有文件為原始狀態(tài)
git reset --hard
  • 比較當(dāng)前分支與某次提交的區(qū)別
git diff HEAD [commit has fragment]
  • 同步到 remote 后,合并多個(gè) commit 為1個(gè)
git rebase -i HEAD~2/hash
pick && squash
:wq!
  • 查看項(xiàng)目的 origin 代表地址
git remote -v
  • pick 中途誤退出
git rebase --abort
  • 未同步到 remote,重新提交
reset soft
  • 撤銷遠(yuǎn)程分支錯(cuò)誤提交
...reset
git push --force
  • 誤刪除領(lǐng)先遠(yuǎn)程的本地如何恢復(fù)
git reflog  // 找出最新的commit sha1值HEAD@{1}比HEAD@{2}新
git branch branchName <sha1>
  • git fetch 與 git pull的區(qū)別
git fetch 更新 origin/*下所有的分支,在發(fā)布git flow feature 前很有用,用于更新remote分支
git pull 主要用來(lái)更新多人合作的當(dāng)前分支,多用于更新local分支
  • 遠(yuǎn)程刪除分支,本地git fetch 不能更新到最新分支
git fetch --prune
`-prune:  Before fetching, remove any remote-tracking references that no longer exist on the remote.`
  • 及時(shí)查看本地所有分支狀態(tài)
git remote show origin

-假如遠(yuǎn)程已經(jīng)不存在分支,git fetch --prune也更新不到狀態(tài),該如何做?

git push origin --delete feature/fix-chat-unread-msg-async
  • 刪除單個(gè)脫離的遠(yuǎn)程分支
git remote prune <name>
  • 添加.gitignore后的文件名,.gitignore不生效
git rm -r --cached 文件名
  • git 工作區(qū)和暫存區(qū)的區(qū)別
          add                   commit
工作目錄 ------------> 暫存區(qū)  ------------> 版本歷史
暫存區(qū):git已經(jīng)獲得了對(duì)文件的管理權(quán)限,暫存區(qū)文件有狀態(tài):new file,deleted,modified等等。
版本歷史:git log查看每一次commit記錄。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 團(tuán)隊(duì)工作基本模型 建立初始遠(yuǎn)程倉(cāng)庫(kù)->各人拉取遠(yuǎn)程倉(cāng)庫(kù)到本地->建立自己的開(kāi)發(fā)分支->開(kāi)發(fā)完成后push新的...
    會(huì)飛小超人閱讀 328評(píng)論 0 1
  • [TOC] 前言 剛剛開(kāi)始使用Git的版本控制時(shí),我根本不確定我付出那么多時(shí)間是不是會(huì)得到回報(bào),Branch、St...
    木貓尾巴閱讀 7,726評(píng)論 6 37
  • 先奉上Git常用命令速查表,方便大家查閱。 再來(lái)個(gè)目錄說(shuō)明,大家可以根據(jù)自己所需進(jìn)行選擇學(xué)習(xí) 1 git簡(jiǎn)介 Gi...
    司鑫閱讀 6,605評(píng)論 28 233
  • Git操作指南 git是分布式版本控制系統(tǒng),想了解更清楚的可以查閱百度百科。在說(shuō)明操作指南前,我先給大家說(shuō)明幾個(gè)專...
    前端工程獅_jam閱讀 453評(píng)論 0 2
  • git日常使用指南 Git是使用廣泛的分布式版本控制系統(tǒng)。版本控制,簡(jiǎn)單講就是記錄文件變更歷史。使用Git可以處理...
    awsome365閱讀 430評(píng)論 0 0

友情鏈接更多精彩內(nèi)容