Git使用的奇技淫巧
源 | Linux公社
Git 版本對比相關操作
[1] 輸出工作區和暫存區的不同。
[2] 展示暫存區和最近版本的不同
[3] 展示暫存區、工作區和最近版本的不同
[4] 展示本地倉庫中任意兩個 commit 之間的文件變動
Git 分支管理相關操作
[1] 展示本地分支關聯遠程倉庫
[2] 列出所有遠程分支
[3] 列出本地和遠程分支
[4] 查看遠程分支和本地分支的對應關系
[5] 刪除本地分支
[6] 刪除遠程分支
[7] 遠程刪除了分支本地也想刪除
[8] 關聯遠程分支
Git 文件處理相關操作
[1] 展示所有 tracked 的文件
bash
git?ls-files?-t[2] 展示所有 untracked 的文件
bash
git?ls-files?--others[3] 展示所有忽略的文件
bash
git?status?--ignoredgit?ls-files?--others?-i?--exclude-standard[4] 強制刪除 untracked 的文件
bash
#?使用clean命令后,刪除的文件無法找回#?不會影響tracked的文件的改動,只會刪除untracked的文件#?如果不指定文件文件名,則清空所有工作的untracked文件git?clean?<file-name>?-f[5] 強制刪除 untracked 的目錄
bash
#?如果不指定目錄名稱,則清空所有工作的untracked目錄git?clean?<directory-name>?-df[6] 清除 gitignore 文件中記錄的文件
bash
git?clean?-X?-f[7] 恢復刪除的文件
bash
#?得到deleting_commit信息git?rev-list?-n?1?HEAD?--?<file_path>#?回到刪除文件deleting_commit之前的狀態git?checkout?<deleting_commit>^?--?<file_path>Git 遠程倉庫相關操作
[1] 列出所有遠程倉庫
bash
git?remote[2] 修改遠程倉庫的 url 地址
bash
git?remote?set-url?origin?<URL>[3] 增加遠程倉庫地址
bash
git?remote?add?origin?<remote-url>Git 存儲狀態相關操作
[1] 存儲當前的修改但不用提交 commit
bash
git?stash[2] 保存當前狀態包括 untracked 的文件
bash
git?stash?-u[3] 展示所有 stashes 信息
bash
git?stash?list[4] 回到某個 stash 狀態
bash
git?stash?apply?<stash@{n}>[5] 回到最后一個 stash 的狀態并刪除這個 stash 信息
bash
git?stash?pop[6] 刪除所有的 stash 信息
bash
git?stash?clear[7] 從 stash 中拿出某個文件的修改
bash
git?checkout?<stash@{n}>?--?<file-path>Git 配置代碼相關操作
[1] 配置 ssh 代理
bash
#?直接使用shadowsocks提供的socks5代理端口$?cat?~/.ssh/configHost?gitlab.comProxyCommand?nc?-X?5?-x?127.0.0.1:1080?%h?%pHost?github.comProxyCommand?nc?-X?5?-x?127.0.0.1:1080?%h?%p[2] 配置 http 和 socks 代理
bash
#?適用于?privoxy?將?socks?協議轉為?http?協議的?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'Git 其他高級相關操作
[1] 把某一個分支到導出成一個文件
bash
git?bundle?create?<file>?<branch-name>[2] 把某一個文件導入成一個分支
bash
#?新建一個分支,分支內容就是上面?git?bundle?create?命令導出的內容git?clone?repo.bundle?<repo-dir>?-b?<branch-name>[3] 修改上一個 commit 的描述
bash
#?如果暫存區有改動同時也會將暫存區的改動提交到上一個commit中去git?commit?--amend[4] 查看某段代碼是誰寫的
bash
git?blame?<file-name>[5] 回到某個 commit 狀態并刪除后面的 commit 提交
bash
#?和revert命令不同,reset?命令會抹去某個commit_id之后的所有commit提交#?默認就是-mixed參數git?reset?<commit-id>#?回退至上個版本將重置HEAD到另外一個commit#?并且重置暫存區以便和HEAD相匹配,但是也到此為止,工作區不會被更改git?reset?--?mixed?HEAD^#?回退至三個版本之前,只回退了commit的信息,暫存區和工作區與回退之前保持一致#?如果還要提交,直接commit即可git?reset?--?soft?HEAD~3#?徹底回退到指定commit-id的狀態,暫存區和工作區也會變為指定commit-id版本的內容git?reset?--?hard?<commit-id>[6] 回到遠程倉庫的狀態
bash
#?拋棄本地所有的修改,回到遠程倉庫的狀態git?fetch?--all?&&?git?reset?--hard?origin/master[7] 重設第一個 commit 信息
bash
#?也就是把所有的改動都重新放回工作區并清空所有的commit信息,這樣就可以重新提交第一個commit了git?update-ref?-d?HEAD[8] 查找已經刪除的文件提交
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#?查看產出文件是誰提交的git?log?--diff-filter=D?--summary?|?grep?-C?10?<file_name>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尋求報道、約稿、文案投放:
添加微信xixiaoyao-1,備注“商務合作”
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的Git使用的奇技淫巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pytorch与Tensorflow,哪
- 下一篇: EMNLP'20最佳论文揭晓!八块肌肉=