<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在使用Git管理自己的程式碼版本時,由於編譯生成的中間檔案,Git使用SHA-1演演算法來對檔案進行加密,進而得出來一個40位的十六進位制加密字串。
325525d8b1f67b5ddd37956a8a728fd26c4ba5ce
但這種演演算法對於文字檔案有效,對於二進位制之類的檔案則無法正常的進行加密。
因此Git版本管理多管理文字檔案,而非二進位制之類的檔案,例如obj檔案、.class檔案,,並且一些敏感檔案和臨時檔案、紀錄檔檔案是不能上傳到Git遠端倉庫中的。
在Git中提供了.gitignore檔案,可以制定自己忽略檔案。
比如說使用IDEA整合式開發環境編寫一個專案,在專案根路徑下,檔案結構如下:
在上圖中,由IDEA開發的專案的目錄結構如上圖所示,其中target目錄存放的是專案編譯產生的檔案,而.idea目錄則是特定於IDEA整合式開發環境的檔案。
demo.iml檔案也不需要上傳到Git。
由於作者在撰寫本文時使用IDEA開發,因此以忽略某些IDEA開發環境的特定檔案做例子演示
2.1.1 初始化git倉庫
首先開啟Git Bash,並且切換到demo根目錄,執行git init讓git管理該目錄。
$ ls -la total 48 drwxr-xr-x 1 全恆 197609 0 9月 27 09:44 ./ drwxr-xr-x 1 全恆 197609 0 9月 27 09:45 ../ drwxr-xr-x 1 全恆 197609 0 9月 27 09:38 .idea/ drwxr-xr-x 1 全恆 197609 0 8月 29 23:52 .mvn/ -rw-r--r-- 1 全恆 197609 8205 9月 18 17:08 demo.iml -rwxr-xr-x 1 全恆 197609 6468 8月 22 09:03 mvnw* -rw-r--r-- 1 全恆 197609 4994 8月 22 09:03 mvnw.cmd -rw-r--r-- 1 全恆 197609 2707 9月 18 17:06 pom.xml drwxr-xr-x 1 全恆 197609 0 8月 29 23:52 src/ drwxr-xr-x 1 全恆 197609 0 8月 29 23:52 target/ -rw-r--r-- 1 全恆 197609 5162 8月 28 21:11 zioer5.iml 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo $ git init Initialized empty Git repository in D:/Git/demo/demo/.git/
2.1.2 新增遠端倉庫路徑
新增遠端倉庫,在GitHub上建立repository,demo。拷貝遠端倉庫目錄:
git@github.com:yanchenmochen/demo.git
在demo目錄執行命令如下:
全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ git remote add origin git@github.com:yanchenmochen/demo.git 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ git remote -v origin git@github.com:yanchenmochen/demo.git (fetch) origin git@github.com:yanchenmochen/demo.git (push)
然後執行git add .,和執行git commit –m “first commit”,表示該專案的所有檔案均被git管理。
2.1.3 新建.gitignore組態檔
在當前目錄生成檔案.gitignore,並在其中新增要忽略的檔案或目錄,每行表示一個忽略規則。
全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ vim .gitignore 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ cat .git .git/ .gitignore 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ cat .gitignore target/ *.iml .idea/
2.1.4 git管理.gitignore
在上述的程式碼片段中新建了組態檔.gitignore,然後忽略了target目錄,.idea目錄,以字尾.iml結尾的檔案。
$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore nothing added to commit but untracked files present (use "git add" to track) 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ git add .gitignore warning: LF will be replaced by CRLF in .gitignore. The file will have its original line endings in your working directory. 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: .gitignore 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ git commit -m "[ADD]新增.gitignore組態檔" [master 202e7b0] [ADD]新增.gitignore組態檔 1 file changed, 3 insertions(+) create mode 100644 .gitignore
上述的程式碼片段讓Git管理了檔案.gitignore,並且執行了一次提交,提交到本地倉庫。
2.1.5 讓Git識別該組態檔
使用命令git config設定忽略組態檔.gitignore。
git config core. excludesfile .gitignore
與設定使用者名稱和郵箱是一樣的。
$ cat .git/config [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = git@github.com:yanchenmochen/demo.git fetch = +refs/heads/*:refs/remotes/origin/* 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ git config core.excludesfile .gitignore 全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ cat .git/config [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true excludesfile = .gitignore [remote "origin"] url = git@github.com:yanchenmochen/demo.git fetch = +refs/heads/*:refs/remotes/origin/*
2.1.6 推播到遠端
全恆@Lenovo-PC MINGW64 /d/Git/demo/demo (master) $ git push origin master Enumerating objects: 155, done. Counting objects: 100% (155/155), done. Delta compression using up to 8 threads. Compressing objects: 100% (138/138), done. Writing objects: 100% (155/155), 83.41 KiB | 749.00 KiB/s, done. Total 155 (delta 69), reused 0 (delta 0) remote: Resolving deltas: 100% (69/69), done. remote: remote: Create a pull request for 'master' on GitHub by visiting: remote: https://github.com/yanchenmochen/demo/pull/new/master remote: To github.com:yanchenmochen/demo.git * [new branch] master -> master
2.1.7 網頁檢視上傳的檔案
在這裡我們發現,.idea目錄,target目錄,demo.iml檔案等我們想要忽略的檔案。
2.1.8 .gitignore不生效
.gitignore只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。這是因為在之前,自己直接使用git add .把所有的檔案,包括target目錄,.idea目錄,然後執行了
git config core.excludesfile ***
.gitignore只能忽略原來沒有被跟蹤的檔案,因此跟蹤過的檔案是無法被忽略的。因此在網頁上可以看到target等目錄的存在。
解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:
git rm -r --cached .
git add .
git commit -m ‘update .gitignore’
2.1.9 再次推播
$ git push origin master Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 232 bytes | 232.00 KiB/s, done. Total 2 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:yanchenmochen/demo.git 202e7b0..9f4fc9c master -> master
2.1.10 驗證
登陸網頁,檢視本次提交:
如果一直使用某個開發工具進行開發專案,則相對於特定專案的忽略檔案,所有的專案均要忽略的檔案,則可以使用設定全域性忽略檔案。
使用命令
git config --global core.excludesfile ~/.gitignore
該設定資訊位於~/.gitignore。
整體的操作步驟與上述特定於專案的.gitignore是一致的,不再贅述。
這種方式只是臨時指定該專案的行為,需要編輯當前專案下的 .git/info/exclude 檔案,然後將需要忽略提交的檔案寫入其中。
需要注意的是,這種方式指定的忽略檔案的根目錄是專案根目錄。
在 .gitignore 檔案中,每一行的忽略規則的語法如下:
Git在程式設計師開發過程中,不可或缺,因此熟練掌握Git的方方面面,對於提升自己的個人素養和開發效率,不可或缺。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45