最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Git中使用.gitignore忽略文件的推送方式

 更新時(shí)間:2023年02月13日 09:30:20   作者:思影影思  
這篇文章主要介紹了Git中使用.gitignore忽略文件的推送方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1 簡(jiǎn)介

在使用Git管理自己的代碼版本時(shí),由于編譯生成的中間文件,Git使用SHA-1算法來(lái)對(duì)文件進(jìn)行加密,進(jìn)而得出來(lái)一個(gè)40位的十六進(jìn)制加密字符串。

325525d8b1f67b5ddd37956a8a728fd26c4ba5ce

但這種算法對(duì)于文本文件有效,對(duì)于二進(jìn)制之類的文件則無(wú)法正常的進(jìn)行加密。

因此Git版本管理多管理文本文件,而非二進(jìn)制之類的文件,例如obj文件、.class文件,,并且一些敏感文件和臨時(shí)文件、日志文件是不能上傳到Git遠(yuǎn)程倉(cāng)庫(kù)中的。

在Git中提供了.gitignore文件,可以制定自己忽略文件。

比如說(shuō)使用IDEA集成開發(fā)環(huán)境編寫一個(gè)項(xiàng)目,在項(xiàng)目根路徑下,文件結(jié)構(gòu)如下:

在這里插入圖片描述

在上圖中,由IDEA開發(fā)的項(xiàng)目的目錄結(jié)構(gòu)如上圖所示,其中target目錄存放的是項(xiàng)目編譯產(chǎn)生的文件,而.idea目錄則是特定于IDEA集成開發(fā)環(huán)境的文件。

demo.iml文件也不需要上傳到Git。

2 Git忽略文件提交方法

由于作者在撰寫本文時(shí)使用IDEA開發(fā),因此以忽略某些IDEA開發(fā)環(huán)境的特定文件做例子演示

2.1 在Git項(xiàng)目中定義 .gitignore 文件

2.1.1 初始化git倉(cāng)庫(kù)

首先打開Git Bash,并且切換到demo根目錄,執(zhí)行g(shù)it 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 添加遠(yuǎn)端倉(cāng)庫(kù)路徑

添加遠(yuǎn)端倉(cāng)庫(kù),在GitHub上建立repository,demo。拷貝遠(yuǎn)程倉(cāng)庫(kù)目錄:

git@github.com:yanchenmochen/demo.git

在demo目錄執(zhí)行命令如下:

全恒@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)

然后執(zhí)行g(shù)it add .,和執(zhí)行g(shù)it commit –m “first commit”,表示該項(xiàng)目的所有文件均被git管理。

2.1.3 新建.gitignore配置文件

在當(dāng)前目錄生成文件.gitignore,并在其中添加要忽略的文件或目錄,每行表示一個(gè)忽略規(guī)則。

全恒@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結(jié)尾的文件。

$ 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,并且執(zhí)行了一次提交,提交到本地倉(cāng)庫(kù)。

2.1.5 讓Git識(shí)別該配置文件

使用命令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 推送到遠(yuǎn)端

全恒@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 網(wǎng)頁(yè)查看上傳的文件

在這里插入圖片描述

在這里我們發(fā)現(xiàn),.idea目錄,target目錄,demo.iml文件等我們想要忽略的文件。

2.1.8 .gitignore不生效

.gitignore只能忽略那些原來(lái)沒(méi)有被track的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無(wú)效的。這是因?yàn)樵谥?,自己直接使用git add .把所有的文件,包括target目錄,.idea目錄,然后執(zhí)行了

git config core.excludesfile ***

.gitignore只能忽略原來(lái)沒(méi)有被跟蹤的文件,因此跟蹤過(guò)的文件是無(wú)法被忽略的。因此在網(wǎng)頁(yè)上可以看到target等目錄的存在。

解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:

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 驗(yàn)證

登陸網(wǎng)頁(yè),查看本次提交:

在這里插入圖片描述

2.2 定義Git全局的.gitignore文件

如果一直使用某個(gè)開發(fā)工具進(jìn)行開發(fā)項(xiàng)目,則相對(duì)于特定項(xiàng)目的忽略文件,所有的項(xiàng)目均要忽略的文件,則可以使用配置全局忽略文件。

使用命令

git config --global core.excludesfile ~/.gitignore

該配置信息位于~/.gitignore。

整體的操作步驟與上述特定于項(xiàng)目的.gitignore是一致的,不再贅述。

2.3 在Git項(xiàng)目的設(shè)置中指定排除文件

這種方式只是臨時(shí)指定該項(xiàng)目的行為,需要編輯當(dāng)前項(xiàng)目下的 .git/info/exclude 文件,然后將需要忽略提交的文件寫入其中。

需要注意的是,這種方式指定的忽略文件的根目錄是項(xiàng)目根目錄。

3 忽略規(guī)則

在 .gitignore 文件中,每一行的忽略規(guī)則的語(yǔ)法如下:

  • 空格不匹配任意文件,可作為分隔符,可用反斜杠轉(zhuǎn)義
  • #開頭的文件標(biāo)識(shí)注釋,可以使用反斜杠進(jìn)行轉(zhuǎn)義
  • ! 開頭的模式標(biāo)識(shí)否定,該文件將會(huì)再次被包含,如果排除了該文件的父級(jí)目錄,則使用 ! 也不會(huì)再次被包含。可以使用反斜杠進(jìn)行轉(zhuǎn)義
  • / 結(jié)束的模式只匹配文件夾以及在該文件夾路徑下的內(nèi)容,但是不匹配該文件
  • / 開始的模式匹配項(xiàng)目跟目錄
  • 如果一個(gè)模式不包含斜杠,則它匹配相對(duì)于當(dāng)前 .gitignore 文件路徑的內(nèi)容,如果該模式不在 .gitignore 文件中,則相對(duì)于項(xiàng)目根目錄
  • ** 匹配多級(jí)目錄,可在開始,中間,結(jié)束
  • ? 通用匹配單個(gè)字符
  • [] 通用匹配單個(gè)字符列表

4 總結(jié)

Git在程序員開發(fā)過(guò)程中,不可或缺,因此熟練掌握Git的方方面面,對(duì)于提升自己的個(gè)人素養(yǎng)和開發(fā)效率,不可或缺。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Git原理和常用操作

    Git原理和常用操作

    今天小編就為大家分享一篇關(guān)于Git原理和常用操作的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • 詳解Google Protobuf簡(jiǎn)明教程

    詳解Google Protobuf簡(jiǎn)明教程

    這篇文章主要介紹了詳解Google Protobuf簡(jiǎn)明教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 算法系列15天速成 第十一天 樹操作(上)

    算法系列15天速成 第十一天 樹操作(上)

    我們可以對(duì)”線性結(jié)構(gòu)“改造一下,變?yōu)椤币粋€(gè)節(jié)點(diǎn)最多有一個(gè)"前驅(qū)“和”多個(gè)后繼“。哈哈,這就是我們今天說(shuō)的”樹“
    2013-11-11
  • hexo博客開啟https的SSL?證書實(shí)現(xiàn)過(guò)程

    hexo博客開啟https的SSL?證書實(shí)現(xiàn)過(guò)程

    這篇文章主要為大家介紹了hexo?博客開啟https的SSL證書實(shí)現(xiàn)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 有關(guān)將idea的系統(tǒng)配置文件移到其它盤激活失效的問(wèn)題

    有關(guān)將idea的系統(tǒng)配置文件移到其它盤激活失效的問(wèn)題

    這篇文章給大家介紹win7系統(tǒng)盤空間不足,發(fā)現(xiàn)idea2019.3 占3.4G,將idea的系統(tǒng)配置文件移到其它盤,激活失效的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-11-11
  • Git基礎(chǔ)學(xué)習(xí)之分支基本操作詳解

    Git基礎(chǔ)學(xué)習(xí)之分支基本操作詳解

    這篇文章主要為大家詳細(xì)介紹了Git基礎(chǔ)學(xué)習(xí)中分支的基本操作,例如分支的創(chuàng)建、查看、切換和刪除等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • Geohash的原理、算法和具體應(yīng)用探究

    Geohash的原理、算法和具體應(yīng)用探究

    這篇文章主要介紹了Geohash的原理、算法和具體應(yīng)用探究,Geohash可以實(shí)現(xiàn)當(dāng)前手機(jī)應(yīng)用中的查找附近的人功能,需要的朋友可以參考下
    2014-07-07
  • 接口數(shù)據(jù)安全保證的10種方式

    接口數(shù)據(jù)安全保證的10種方式

    這篇文章主要為大家介紹了接口數(shù)據(jù)安全保證的10種方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程

    網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程

    這篇文章主要介紹了網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程,需要的朋友可以參考下
    2016-10-10
  • 關(guān)于指令重排現(xiàn)象的兩個(gè)階段詳解

    關(guān)于指令重排現(xiàn)象的兩個(gè)階段詳解

    這個(gè)知識(shí)點(diǎn)也是很多人說(shuō)不清道不明的地方,感覺(jué)都知道,說(shuō)又說(shuō)不出來(lái)。為什么會(huì)這樣呢?因?yàn)檫@幾個(gè)字,很容易被當(dāng)成動(dòng)詞去理解,其實(shí)正確的理解是當(dāng)成名詞,即指令重排現(xiàn)象
    2022-01-01

最新評(píng)論

武山县| 威宁| 桦甸市| 安平县| 江城| 微山县| 澳门| 延庆县| 南郑县| 濮阳市| 定兴县| 东明县| 都安| 临武县| 白水县| 屯留县| 洛阳市| 陇川县| 阳西县| 开封市| 阿鲁科尔沁旗| 泾阳县| 达尔| 精河县| 迁安市| 正镶白旗| 榆林市| 竹山县| 原平市| 保山市| 陆良县| 泸定县| 徐水县| 湘潭县| 福鼎市| 斗六市| 永登县| 临潭县| 文成县| 北票市| 肥城市|