天天看點

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

别名.

我可以使用這個指令檢視repository的曆史 git log --all --graph --decorate --oneline:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

這個指令可能比較常用, 但是又比較長.

這時我可以建立一個自己的指令, 作為上面指令的别名.

假設我想使用git hist這個指令:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

git說這個指令不存在.

這時就可以使用git config alias.xxx指令去建立一個指令的别名:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

其中--global表示這個别名是全局的(使用者範圍内的, 不隻限于這個repository), 然後alias.xxx 的xxx就是後邊雙引号内的指令的别名.

上圖可以看到git hist的執行效果和之前的那一串指令是一樣的.

下面看一下 git config的東西都儲存在哪了, 先執行這個指令: git config --list --show-origin.

可以看到在windows 10下, 是在user的下面:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

然後可以打開這個檔案看看:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

是以可以在這裡直接修改别名也行.

忽略檔案.

在項目裡添加一個檔案 nouse.txt.

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

假設這是一個項目配置檔案, 不能删除, 但是由于裡面儲存着本機的安全資訊, 又不能上傳到遠端倉庫. 

我可以小心翼翼的不去add這個檔案. 但是git确實有這樣一個指令可以把該檔案排除在外, 以後也不去管他.

git使用一個叫.gitignore的檔案去做這項工作.

可以看一下working directory:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

裡面沒有這個檔案. 是以建立這個檔案.

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

Git忽略的模式是這樣的:

針對具體的檔案: 就寫檔案名即可.

針對某種類型的檔案: *.字尾名

針對檔案夾: 檔案夾名/

那麼我就把nouse.txt添加到該檔案:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

然後檢視狀态:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

可以看到.gitignore檔案已經起作用了, nouse.txt已經不再被追蹤了.

但是.gitignore檔案還是一個需要被追蹤的檔案, 是以針對這個檔案還是需要走正常的流程的.

下面是另一個例子, 假設我項目中有一些log檔案是以.log結尾的 ,例如 apache.log和iis.log等等..

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.
Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

這些log檔案不應該被git所管理, 是以打開.gitignore檔案, 添加: *.log:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.
Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

可以看到log檔案都被排除了.

另外一種情況就是檔案夾, 假設log都放在logs檔案夾下了.

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

\

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

可以看到這個未被追蹤的logs目錄. 這是因為logs目錄下的檔案是被檢測到了并且還沒有被從git的管轄範圍内排除.

這時編輯.gitignore檔案, 把logs/添加進去:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

檢視狀态:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

這樣logs檔案夾就被排除了.

推送回origin.

檢視一下剛才這個項目的狀态:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

裡面寫着我的分支比origin/master(我這個項目放在了github上面)領先了6個commit.

是以要把這些變化推送到github上.

首先應該git pull origin master:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

因為我并沒有在别的地方修改這個倉庫的代碼, 是以遠端倉庫沒有更新.

現在把變化推送到github, git push origin master:

之前也寫過, origin就是github這個倉庫的引用/别名, master是它的分支.

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

到github就可以看到整個commit 曆史了:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.

今天提到的指令有: git config alias.xxx, git config --list --show-origin, git pull origin master, git push origin master

還有.gitignore檔案.

下面是我的關于ASP.NET Core Web API相關技術的公衆号--草根專欄:

Git基本指令 -- 别名 + 忽略 + 推送 别名. 忽略檔案. 推送回origin.