理论知识
工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository、Git Directory)。算上远程仓库(Remote Directory),一共有四个工作区域。
工作目录:工作区域,就是你平时放代码的的地方。
暂存区:用于临时存放改动,事实上只是一个记录即将提交改动的文件。
本地仓库:安全存放数据的位置,有提交到所有版本的数据,HEAD指向最新放入仓库的版本。
远程仓库:代码托管仓库,即代码在远程服务器的备份。
通过如上图的指令可以将内容从一个区域提交到另一个区域。
文件的状态
Untracked:未跟踪,文件在工作目录,没有添加到git仓库,通过使用git add
命令添加到暂存区,状态变为Staged。
Unmodify:文件已入库,未修改。即版本库中的快照文件和工作区中的文件完全一致。这种状态的文件有两种去处:1、被修改,状态变为Modified。2、通过git rm
命令移除版本库,状态变为Untracked。
Modified:已被修改,指的是当前文件已被修改,这个状态的文件也有两种去处:1、通过git add
添加到暂存区状态变为Staged。2、通过git checkout
丢弃修改返回Unmodify状态,即从库中取出文件覆盖当前修改。
Staged:已添加到暂存区。它也有两种去处:1、通过git commit
将暂存区提交到仓库,使得工作区文件和仓库文件内容一致,状态变为Unmodify。2、通过git reset HEAD filename
取消暂存,状态变为Modified。
基本命令
git config -l
查看配置列表
git config --system --list
查看系统配置
git config --global --list
查看全局配置即用户配置
git config --gloabl user.name [VALUE1]
配置用户名(VALUE1为配置变量)
git config --gloabl user.email [VALUE1]
配置邮箱(VALUE1为配置变量)
注:在Windows操作系统下,用户配置会保存在C:\Users\${username}\.gitconfig
文件中(username为系统用户名)。系统配置会保存在安装目录下的\etc\gitconfig
文件中。
get init
初始化当前工作区,即在当前工作区创建版本控制(创建.git文件夹)
git clone URL
克隆远程仓库到当前工作空间(URL为远程仓库地址)
git status
查看当前工作区的文件状态
git add [filename]
将当前文件添加到暂存区,如将filename替换成“.”则将当前工作区所有文件添加到暂存区
git rm --cached [filename]
从索引去删除文件,但是文件还在工作区,此时git不再跟踪该文件
git rm [filename]
彻底删除文件,它就不在了
git commit -m [MESSAGE]
将暂存区的代码提交到本地仓库,MESSAGE为提交备注
git brancn
查看当前所有分支
git branch -r
查看当前仓库对应的远程分支
git branch -d [branchName]
删除指定的分支
基础用法
.gitignore文件
如果不想将某些文件被Git管理,可以在工作目录建立一个名为.gitignore的文件,在其中配置即可达到目的。如下为.gitignore文件的语法。
#为注释
*.txt # git将不再管理以.txt结尾的所有文件
!config.txt # 但是config.txt除外
/build # 只忽略根目录下的build文件夹中所有的文件
target/ # 只要有名为target的文件夹出现就忽略
target/*.jar # 只忽略所有名为target下的jar包,其他文件夹下不起作用,比如“target/classpath/app.jar”还是会被git管理的
要点:
-
.gitignore文件中的空行和被“#”号注释的都不起作用
-
可以使用Linux通配符。“*”代表任意多个字符,“?”代表一个字符,“[abc]”代表可选字符范围,“{String1, String2, ...}”代表可选字符范围。
-
感叹号代表例外,如果规则前面加上“!”将作为例外不会被git忽略。
-
名称后加上路径分隔符(例如“target/”),表示只要是这个名称的目录都会被git忽略,不管它在哪。
-
名称前加上路径分隔符(例如“/my”),表示只在根目录下的该名称文件夹下的文件被git忽略。
待续未完