歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 8 個 Git 的小技巧

8 個 Git 的小技巧

日期:2017/2/28 14:02:36   编辑:Linux教程

git 已經成為了我日常必備工具之一,我總結我幾乎每天使用的8個有用(且簡潔)的小技巧。

使用-p選擇性添加

當你想提交內容時,你可以通過使用 git commit -am 來選擇所有文件或使用 git add file 來添加特定文件。然而,有時候你可能想只添加文件的一部分來提交。你可以用 git add -p 交互性地選擇哪些你想提交的部分。

在選擇完你所想要提交的區塊後,只需要做一個 git commit(沒有 -a),這樣只會提交選中的部分。同樣可以使用 git checkout -p 來選擇需要恢復的部分。添加後,你可以使用 git diff --cached 來查看差異。

交互式的重建基准(Interactive Rebase)

如果你在一個分支上工作,同時進行了一些 WIP 提交(commit) ,以用來壓縮合並(squash)或者刪除一個提交(commit)以及這個提交的恢復, 你可以做一個交互式的重建基准(rebase),用來重新組織提交。

為了做到這點,你需要運行命令 git rebase -i <commit>,這裡的<commit>是你想要重寫之前的一個提交(commit)的sha1值。接下來,它將在你的編輯器(在$EDITOR環境變量,或者git配置裡面指定的編輯器)上面打開一些指令,用來變更提交(commit)歷史,你可以選擇壓縮合並(將兩次提交合並為一次新的提交),重寫(變更提交信息),編輯甚至刪除一個提交(commit)。

請注意這改變了歷史信息,因此,如果你提交了這個變更,你將不得不再一次強制提交(push),所以,絕不要在主分支,或者有其他人(除你之外)在使用的分支上面做這個操作。

儲藏(Stashing)

如果你正忙於什麼事情,你必須更改文本去修復其他問題,去git stash查到到儲藏在當前中的更改。然而,過一段時間後,你可能就會忘記關於這個已儲藏的變更。因此,我試著去保持一個儲藏0(就像收件箱0如果沒有儲藏的情況)規則。每一次我儲藏一個美元信號出現在我的輸出,並且我通過git stash show -p檢查,還可以通過git stash pop彈出或者通過git stash clear丟棄。

全局gitignore

在項目的根目錄,你可以通過文件.gitignore來指定git需要忽略的文件。但是,如果存在git需要忽略的文件,同時,你又是唯一創建這個文件的人(如vim的 bkp文件,編輯器或者操作系統生成的一些文件,如OSX生成的.DS_Store文件),你可以在配置文件中指定全局的gitignore文件,它和工程中的.gitignore文件使用一樣的語法格式。

git config --global core.excludesfile=/Users/flores/.gitignore

空格警告

我不得不承認:有時候我忘記代碼尾部的一些空格。但是,通常我不會提交它們,因為我使用了這個選項:apply.whitespace=warn。每次我通過git add -p增加文件中的一大塊代碼,同時,這個代碼塊尾部包含空格,由於git給出警告提示,因此我可以在提交前修正它們。

自動重建代碼基准(Auto setup rebase)

另一個很酷的技巧是自動重建代碼基准(auto setup rebase)。如果你有一個分支,並做了一些commit但並未push。同時,其他人也在這個分支上進行了commit和push。當你pull的時候,git會創建一個commit來合並你的commit到上游(upstream)commit。由於這個commit毫無意義,我更傾向於,在pull時,通過配置來自動重建代碼基准(auto setup rebase):branch.autosetuprebase=always。設置之後,每個pull操作,git都會嘗試在當前版本的上游(upsteam)分支重新使用你的commit。

更好的日志(logging)

你是否嘗試過在一個分支中找一個特定的提交啊? git log 給我們提供了一些基本的信息,不過你使用下面的命令會得到更多有用的信息:

git log --graph --decorate --pretty=oneline --abbrev-commit

--graph 會在各個提交之間打印出線條,這些線條可以展示出分支之間的關系。

--decorate 顯示出分支處在哪一次提交上。

--pretty=oneline 只是在一行中顯示 sha1 和 提交的注釋(譯者將title一詞應對到更精確的注釋)

--abbrev-commit 用開始的7個sha1字符代替整個sha1(他在你的倉庫中是唯一的)。

你可以到 explain shell 去看這些選項的更詳細(且是完整)的解釋。

改寫提交的注釋

如果你在提交代碼的時候注釋不能准確的描述當前提交,或者你寫了錯別字。你可以使用 git commit --amend 來改寫你已經提交的注釋。 他允許你在命令行中通過 -m 選項來指定新注釋或直接打開系統默認編輯器讓你來編輯新的注釋。 另外你還可以把一些新的變化加入到上一次提交中。請記住 該操作和 Interactive Rebase 一樣,他會改變提交歷史。如果你已經把你改動的這次提交push了,那麼你需要強制(force)push這次變化。

歡迎你在評論中分享你在工作中發現一些能提升工作效率的 git小技巧。

GitHub 教程系列文章

GitHub 使用教程圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm

Git 標簽管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm

Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm

Git 遠程倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm

Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm

Git 服務器搭建與客戶端安裝 http://www.linuxidc.com/Linux/2014-05/101830.htm

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm

分享實用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm

Git 的詳細介紹:請點這裡
Git 的下載地址:請點這裡

英文原文:8 Small git tips

Copyright © Linux教程網 All Rights Reserved