.gitignore 文件之忽略无需上传至 Git 仓库中的文件
使用
.gitignore
文件忽略指定文件
.gitignore
在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store
文件,或者是Xocde的操作记录,又或者是pod库的中一大串的源代码。这种情况下使用.gitignore
就能够在Git提交时自动忽略掉这些文件。
忽略的格式
#
:此为注释 – 将被 Git 忽略*.a
:忽略所有.a
结尾的文件!lib.a
: 不忽略lib.a
文件/TODO
:仅仅忽略项目根目录下的TODO
文件,不包括subdir/TODO
build/
: 忽略build/
目录下的所有文件doc/*.txt
: 会忽略doc/notes.txt
但不包括doc/server/arch.txt
创建方法
从 github 上获取
github上整理了一些常用需要的项目中需要忽略的文件配置,根据需要进行获取
https://github.com/github/gitignore.git
与 Xcode 相关的三个文件
- Xcode.gitignore
- Objective-C.gitignore
- Swift.gitignore
Xcode.gitignore
忽略 Xcode
配置信息,如操作记录,默认打开窗口等
其他两个在 Xcode.gitignore
基础上针对不同的语言进行忽略
将这些文件重写命名为 .gittignore
$ mv Swift.gitignore .gittignore
通过 gitignore.io 创建(推荐)
先自定义终端命令:
macOS下默认是\#!/bin/bash
:
$ echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile
如果是 #!/bin/zsh
$ echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.zshrc && source ~/.zshrc
使用
在当前终端目录下
$ gi swift > .gitignore
就会针对 Swifit 类型的工程创建 .gitignore
文件。
git后悔药 ———— 代码回滚
并不适合阅读的个人文档。
git revert 和 git reset 的区别
先看图:
sourceTree 中 revert 译为提交回滚
,作用为忽略你指定的版本,然后提交一个新的版本。新的版本中已近删除了你所指定的版本。
reset 为 重置到这次提交,将内容重置到指定的版本。git reset
命令后面是需要加2种参数的:–-hard
和 –-soft
。这条命令默认情况下是 -–soft
。
执行上述命令时,这该条commit号之 后(时间作为参考点)的所有commit的修改都会退回到git缓冲区中。使用git status
命令可以在缓冲区中看到这些修改。而如果加上-–hard
参数,则缓冲区中不会存储这些修改,git会直接丢弃这部分内容。可以使用 git push origin HEAD --force
强制将分区内容推送到远程服务器。
代码回退
默认参数 -soft
,所有commit的修改都会退回到git缓冲区
参数--hard
,所有commit的修改直接丢弃
$ git reset --hard HEAD^ 回退到上个版本
$ git reset --hard commit_id 退到/进到 指定commit_id 推送到远程
$ git push origin HEAD --force
可以吃的后悔药->版本穿梭
当你回滚之后,又后悔了,想恢复到新的版本怎么办?
用git reflog
打印你记录你的每一次操作记录
$ git reflog
输出:
c7edbfe HEAD@{0}: reset: moving to c7edbfefab1bdbef6cb60d2a7bb97aa80f022687
470e9c2 HEAD@{1}: reset: moving to 470e9c2
b45959e HEAD@{2}: revert: Revert "add img"
470e9c2 HEAD@{3}: reset: moving to 470e9c2
2c26183 HEAD@{4}: reset: moving to 2c26183
0f67bb7 HEAD@{5}: revert: Revert "add img"
找到你操作的id如:b45959e
,就可以回退到这个版本
$ git reset --hard b45959e