1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Git 使用的奇技淫巧

        共 5688字,需瀏覽 12分鐘

         ·

        2021-05-29 04:38

        公眾號關(guān)注杰哥的IT之旅”,

        選擇“星標(biāo)”,重磅干貨,第一時(shí)間送達(dá)!



        來自:Linux公社

        1. Git 版本對比相關(guān)操作

        [1] 輸出工作區(qū)和暫存區(qū)的不同。

        git diff

        [2] 展示暫存區(qū)和最近版本的不同

        git diff --cached

        [3] 展示暫存區(qū)、工作區(qū)和最近版本的不同

        git diff HEAD

        [4] 展示本地倉庫中任意兩個(gè) commit 之間的文件變動(dòng)

        git diff <commit-id> <commit-id>

        2. Git 分支管理相關(guān)操作

        [1] 展示本地分支關(guān)聯(lián)遠(yuǎn)程倉庫

        git branch -vv

        [2] 列出所有遠(yuǎn)程分支

        git branch -r

        [3] 列出本地和遠(yuǎn)程分支

        git branch -a

        [4] 查看遠(yuǎn)程分支和本地分支的對應(yīng)關(guān)系

        git remote show origin

        [5] 刪除本地分支

        # 創(chuàng)建并切換到本地分支
        git checkout -b <branch-name>

        # 刪除本地分支
        git branch -d <local-branchname>

        # 重命名本地分支
        git branch -m <new-branch-name>

        # 快速切換到上一個(gè)分支
        git checkout -

        # 跨分支提交
        git checkout <branch-name> && git cherry-pick <commit-id>

        [6] 刪除遠(yuǎn)程分支

        git push origin --delete <remote-branchname>

        [7] 遠(yuǎn)程刪除了分支本地也想刪除

        git remote prune origin

        [8] 關(guān)聯(lián)遠(yuǎn)程分支

        # 關(guān)聯(lián)之后 git branch -vv 就可以展示關(guān)聯(lián)的遠(yuǎn)程分支名了
        # 同時(shí)推送到遠(yuǎn)程倉庫直接 git push 命令且不需要指定遠(yuǎn)程倉庫了
        git branch -u origin/mybranch

        3. Git 文件處理相關(guān)操作

        [1] 展示所有 tracked 的文件

        bash

        git ls-files -t

        [2] 展示所有 untracked 的文件

        bash

        git ls-files --others

        [3] 展示所有忽略的文件

        bash

        git status --ignored
        git ls-files --others -i --exclude-standard

        [4] 強(qiáng)制刪除 untracked 的文件

        bash

        # 使用clean命令后,刪除的文件無法找回
        # 不會影響tracked的文件的改動(dòng),只會刪除untracked的文件
        # 如果不指定文件文件名,則清空所有工作的untracked文件
        git clean <file-name> -f

        [5] 強(qiáng)制刪除 untracked 的目錄

        bash

        # 如果不指定目錄名稱,則清空所有工作的untracked目錄
        git clean <directory-name> -df

        [6] 清除 gitignore 文件中記錄的文件

        bash

        git clean -X -f

        [7] 恢復(fù)刪除的文件

        bash

        # 得到deleting_commit信息
        git rev-list -n 1 HEAD -- <file_path>

        # 回到刪除文件deleting_commit之前的狀態(tài)
        git checkout <deleting_commit>^ -- <file_path>

        4. Git 遠(yuǎn)程倉庫相關(guān)操作

        [1] 列出所有遠(yuǎn)程倉庫

        bash

        git remote

        [2] 修改遠(yuǎn)程倉庫的 url 地址

        bash

        git remote set-url origin <URL>

        [3] 增加遠(yuǎn)程倉庫地址

        bash

        git remote add origin <remote-url>

        5. Git 存儲狀態(tài)相關(guān)操作

        [1] 存儲當(dāng)前的修改但不用提交 commit

        bash

        git stash

        [2] 保存當(dāng)前狀態(tài)包括 untracked 的文件

        bash

        git stash -u

        [3] 展示所有 stashes 信息

        bash

        git stash list

        [4] 回到某個(gè) stash 狀態(tài)

        bash

        git stash apply <stash@{n}>

        [5] 回到最后一個(gè) stash 的狀態(tài)并刪除這個(gè) stash 信息

        bash

        git stash pop

        [6] 刪除所有的 stash 信息

        bash

        git stash clear

        [7] 從 stash 中拿出某個(gè)文件的修改

        bash

        git checkout <stash@{n}> -- <file-path>

        6. Git 配置代碼相關(guān)操作

        [1] 配置 ssh 代理

        bash

        # 直接使用shadowsocks提供的socks5代理端口
        $ cat ~/.ssh/config
        Host gitlab.com
        ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

        Host github.com
        ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

        [2] 配置 http 和 socks 代理

        bash

        # 適用于 privoxy 將 socks 協(xié)議轉(zhuǎn)為 http 協(xié)議的 http 端口
        git config --global socks.proxy '127.0.0.1:1080'
        git config --global http.proxy 'http://127.0.0.1:8001'
        git config --global https.proxy 'http://127.0.0.1:8001'

        7. Git 其他高級相關(guān)操作

        [1] 把某一個(gè)分支到導(dǎo)出成一個(gè)文件

        bash

        git bundle create <file> <branch-name>

        [2] 把某一個(gè)文件導(dǎo)入成一個(gè)分支

        bash

        # 新建一個(gè)分支,分支內(nèi)容就是上面 git bundle create 命令導(dǎo)出的內(nèi)容
        git clone repo.bundle <repo-dir> -b <branch-name>

        [3] 修改上一個(gè) commit 的描述

        bash

        # 如果暫存區(qū)有改動(dòng)同時(shí)也會將暫存區(qū)的改動(dòng)提交到上一個(gè)commit中去
        git commit --amend

        [4] 查看某段代碼是誰寫的

        bash

        git blame <file-name>

        [5] 回到某個(gè) commit 狀態(tài)并刪除后面的 commit 提交

        bash

        # 和revert命令不同,reset 命令會抹去某個(gè)commit_id之后的所有commit提交

        # 默認(rèn)就是-mixed參數(shù)
        git reset <commit-id>

        # 回退至上個(gè)版本將重置HEAD到另外一個(gè)commit
        # 并且重置暫存區(qū)以便和HEAD相匹配,但是也到此為止,工作區(qū)不會被更改
        git reset -- mixed HEAD^

        # 回退至三個(gè)版本之前,只回退了commit的信息,暫存區(qū)和工作區(qū)與回退之前保持一致
        # 如果還要提交,直接commit即可
        git reset -- soft HEAD~3

        # 徹底回退到指定commit-id的狀態(tài),暫存區(qū)和工作區(qū)也會變?yōu)橹付╟ommit-id版本的內(nèi)容
        git reset -- hard <commit-id>

        [6] 回到遠(yuǎn)程倉庫的狀態(tài)

        bash

        # 拋棄本地所有的修改,回到遠(yuǎn)程倉庫的狀態(tài)
        git fetch --all && git reset --hard origin/master

        [7] 重設(shè)第一個(gè) commit 信息

        bash

        # 也就是把所有的改動(dòng)都重新放回工作區(qū)并清空所有的commit信息,這樣就可以重新提交第一個(gè)commit了
        git update-ref -d HEAD

        [8] 查找已經(jīng)刪除的文件提交

        bash

        # 模糊查找
        git log --all --full-history -- "**/thefile.*"

        # 精確查找
        git log --all --full-history -- <path-to-file>
        git log --diff-filter=D --summary | grep <file_name> | awk '{print $4; exit}' | xargs git log --all --

        # 查看所有刪除文件
        git log --diff-filter=D --summary | grep delete

        # 查看產(chǎn)出文件是誰提交的
        git log --diff-filter=D --summary | grep -C 10 <file_name>

        8. Git 給 Github 配置 RSS

        /* Repo releases */
        https://github.com/:owner/:repo/releases.atom

        /* Repo commits */
        https://github.com/:owner/:repo/commits.atom

        /* Private feed (You can find Subscribe to your news feed in dashboard page after login) */
        https://github.com/:user.private.atom?token=:secret

        /* Repo tags */
        https://github.com/:user/:repo/tags.atom

        /* User activity */
        https://github.com/:user.atom

        推薦閱讀

        給自己點(diǎn)時(shí)間再記記這 200 條 Git 命令

        保姆級 Git 入門教程,10000 字詳解

        Git 各指令的本質(zhì),真是通俗易懂啊!

        瀏覽 52
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲免费观看高清 | 乱伦中文字幕免费看 | 无码首页 | 黄色免费一级片 | AV天天操| 开心五月婷婷 | 超碰93在线 | 盛世大厦洗手间王经理视频 | 美女高潮性感国产在线观看 | 国产18女人水真多免费看 |