Git初步学习
一些基础指令
基本的Linux命令学习
- cd: 改变目录
- cd…: 回退到上个目录
- pwd: 显示当前所在的目录的目录路径
- ls: 列出当前目录中的所有的文件
- touch: 新建一个文件,如touch index.js 就会在当前目录下新建一个index.js文件。
- rm: 删除一个文件, rm index.js 就会把index.js文件删除
- mkdir: 新建一个目录,就是新建一个文件夹
- rm -r: 删除一个文件夹
- rm -rf 切勿在Linux中尝试!删除电脑中的全部文件
- mv: 移动文件, mv index.js test index.js是要移动的文件,test是目标文件夹。
- reset: 重新初始化终端/清屏
- clear: 清屏
- history: 查看命令历史
- help: 帮助
- exit: 退出
- #: 表示注释,但不建议在其中写注释.
Git基本理论
工作区域
Git本地有三个工作区域:工作目录,暂存区,资源库。如果再加上远程的git仓库就可以分为四个工作区域。
- Workspace: 工作区,就是存放项目代码的地方
- Index / Stage: 暂存区,用于临时存放改动。
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,里面有你提交的所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
本地的三个区域确切的说是git仓库中HEAD指向的版本
工作流程
git的工作流程一般是这样的 :
-
在工作目录中添加、修改文件
-
将需要进行版本管理的文件放入暂存区域
git add
-
将暂存区域的文件提交到git仓库
git commit
-
推送到远程仓库
git push
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
Git项目搭建
创建工作目录以及常用指令
工作目录(workspace)一般的就是希望Git帮助你管理的文件夹,可以是项目的目录,也可以是一个空目录,最好不要有中文。
一般只需记住以下命令
- 从工作区(workspace)add 到暂存区(Index)
- 从暂存区 commit 到本地仓库(Repository)
- 从本地仓库 **push ** 到远程仓库(Remote)
- 从远程仓库 clone 到本地,然后 checkout 到工作区
- 从远程仓库直接 pull 到工作区
本地仓库的创建
创建本地仓库有两种选择:
一是创建全新的仓库
创建全新的仓库,需要到希望管理的项目的根目录下右键打开git bash执行以下命令
git init
执行后可看到多出了一个.git目录,为隐藏文件夹,里面存放着版本等所有信息。
二是克隆远程仓库
git clone [url]
可以到gitee或者GitHub上去尝试!
查看文件状态
文件有四种状态:
- Untracked(未跟踪,文件在文件夹中,但是并没有加入到git库中,不参与版本控制)
- Unmodify(文件已经入库,未修改)
- Modified(文件已修改,仅仅是修改,没有进行其他的操作)
- Staged(暂存状态)
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
# git add. 添加所有文件到暂存区
# git comit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
忽略文件
有些时候一些文件不需要提交上去,这时就需要忽略这些文件。
在主目录下建立.gitignore文件,文件有以下规则:
- 忽略文件中的空行或以(#)开始的行将会被忽略
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2})代表可选的字符串等。
- 若名称前有一个感叹号(!),则表示例外规则,将不会被忽略
- 若名称最前面有一个(/),则表示,要忽略的文件在此目录下,而子目录中的文件不忽略
- 若名称的最后面有一个(/),则表示,要忽略的是此目录下该名称的子目录,而非文件
*.txt #忽略所有以.txt结尾的文件
!lib.txt #以txt结尾,但有!所以不被忽略
/temp #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #忽略 doc/notes.txt 但不包括 doc/server/arch.txt
OK!本文到这里就结束了。如果本文内容对你有所帮助的话,请不要吝啬,动动手指点一下赞哦~
ps:第一次用markdown排版,尽力了…