前言
首先要理解工作区 暂存区 版本库 远程仓库
- 工作区:电脑存放文件的地方
- 暂存区:git init后创建的.git文件。里面用来存放记录代码文件改动的文件,只用来保存即将提交的文件列表信息
- 版本库:.git文件中用于保存提交的所有版本信息,其中head指向最新的版本
- 远程仓库:托管代码的服务器
文件状态
-
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
-
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
-
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
-
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,文件状态为Modified
-
流程
新建文件--->Untracked
使用add命令将新建的文件加入到暂存区--->Staged
使用commit命令将暂存区的文件提交到本地仓库--->Unmodified
如果对Unmodified状态的文件进行修改---> modified
如果对Unmodified状态的文件进行remove操作--->Untracked
工作流程
- 在工作目录添加修改等操作文件
- 将修改的信息提交到暂存区
- 将暂存区的文件提交到git仓储中
- 将本地版本库推到远程仓库中
基本命令
-
初始化
git init ---创建本地代码库
git clone [url] ---下载项目代码及代码历史
-
文件状态查看
git status [filename] ---查看指定文件状态
git status ---查看所有文件状态
-
工作区《=》暂存区
git add . ---将所有文件添加到暂存区
-
工作区/暂存区《=》版本库
git commit -m 'text' ---暂存区提交到版本库
git reset HEAD^ /filename ---撤销提交
git rm -r [file-name.txt] ---删除文件(或文件夹)
-
远程操作
git push ---本地版本上海传到远程仓库
git pull ---本地合并最新远程代码分支
-
隐藏目录
git stash ---本地修改放置到脏目录
git stash list ---显示保存的工作进度列表,编号越小代表保存进度的时间越近。
git stash clear --- 清空隐藏目录
git stash apply stash@{num} --- 恢复到工作区,stash@{num}是可选项,带此项则默认恢复最近的一次进度相当于git stash apply stash@{0}
-
分支操作
git branch
git branch [new branch] --- 创建新分支
git branch -d [branch name] ---删除分支
git checkout [branch name] ---切换分支
git diff [source branch] [target branch]--- 合并前预览更改
git merge [branch] ---合并分支
-
Git fetch 只是从远程获取最新版本到本地,不会merge(合并),Git pull:从远程获取最新版本并merge(合并)到本地
-
其他、
git config --list ---git信息查看
git cinfig --global user.name 'xxx' ---设置git信息
git --version ---git 版本
git log ---变更查看
git --help ---帮助
git remote add origin ssh://git@github.com/[username]/[repository-name].git ---添加一个远程仓库
.gitignore 文件
未完待续。。。
git提交规范
对不必要的文件进行忽略,使其不被git追踪。