git第三章——git基础使用实操
git命令
git status # 查看git仓库状态
# -----------------------------------------------------
git init # 初始化本地仓库
# -----------------------------------------------------
git add <file> # 提交单个指定文件到暂存区
git add . # 提交所有文件到暂存区
# -----------------------------------------------------
git rm -cached <file> # 表示将已提交的文件从暂存区中删除,文件重新变成未追踪的状态。文件还在工作区
# -----------------------------------------------------
git commit -m "first git file" gitfile.txt # 将单个文件从暂存区提交的本地库,并填写修改信息
git commit -m "first git file" # 将所有暂存区文件从暂存区提交的本地库,并填写修改信息
# -----------------------------------------------------
git reflog # 查看版本信
git log # 查看版本详细信息
# -----------------------------------------------------
git reset --hard 版本号 # 版本穿梭
文件4种状态
- 1、Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制.通过git add状态变为staged
- 2、Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致.这种类型的文件有两种去处,如果它被修改,而变为Modified:如果使用git rm移出版本库,则成为untracked文件
- 3、Modified:文件已修改,仅仅是修改,并没有进行其他的操作。这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout则丢弃修改过,返回到unmodify状态,这个 git checkout即从库中取出文件,覆盖当前修改!
- 4、Staged:暂存状态.执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为unmodify状态.执行git reset HEAD filename 取消暂存,文件状态为Modified
项目创建
方式一:创建全新的仓库
命令:git init
.git目录中相关文件说明hooks 目录包含客户端或服务端的钩子脚本;
info 包含一个全局性排除文件
logs 保存日志信息
objects 目录存储所有数据内容;
refs 目录存储指向数据的提交对象的指针(分支
config 文件包含项目特有的配置选项
description 用来显示对仓库的描述信息
HEAD 文件指示目前被检出的分支
index 文件保存暂存区信息
方式二:克隆远程仓库
成员克隆远程仓库
git clone 仓库地址 (在本地生成.git文件 默认为远程仓库配了别名 orgin)
只有在克隆的时候 本地分支master 和 远程跟踪分支别名/master 是有同步关系的
成员做出贡献
修改源码文件
git add
git commit
git push 别名 分支 (输入用户名 密码;推完之后会附带生成远程跟踪分支)
项目经理更新修改
git fetch 别名 (将修改同步到远程跟踪分支上)
git merge 远程跟踪分支
查看文件状态
git status [filename] #查看指定文件状态
git status #查看所有文件状态
提交文件到暂存区
如果git add 文件名
到暂存区后,如果发现该文件不需要从暂存区提交到本地仓库,则可以使用git reset 文件名
将其移除暂存区
将暂存区文件提交到本地仓库
忽略文件(不需要要上传的文件采用忽略上传)
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立”.gitignore”文件,此文件有如下规则:
1、忽略文件中的空行或以井号(#)开始的行将会被忽略。
2、可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
3、如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
4、如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
5、如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录
tempbuild/ #忽略build/目录下的所有文件
doc/*.txt #会忽略doc/notes.txt 但不包括 doc/server/arch.txt
还没有评论,来说两句吧...