0.Git的三种状态
0.0 Git 有三种状态,你的文件可能处于其中之一:
已提交(committed):数据已经安全的保存在本地数据库中。
已修改(modified):已修改表示修改了文件,但还没保存到数据库中。
已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
0.1 由此引入 Git 项目的三个工作区域的概念:
Git 仓库(.git directory)、工作目录(Working Directory) 以及 暂存区域(Staging Area)
0.2 基本的 Git 工作流程如下
- 在工作目录中修改文件
- 暂存文件,将文件的快照放入暂存区域
- 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录
1.常用命令:
1.创建和生成Git仓库
在项目目录下运行 git init 该命令将创建一个名为 .git 的子目录。初始化仓库
git clone [url] 从一个服务器克隆一个现有的 Git 仓库
git clone [url] directoryname 自定义本地仓库的名字
2.记录更新到Git仓库
git status 检测当前文件状态
git add filename (针对特定文件)、git add * (所有文件)、git add *.txt (支持通配符,所有 .txt 文件)提出更改(把它们添加到暂存区)
.gitignore filename 忽略文件
git commit -m “代码提交信息” 提交更新:(准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit)
git commit -a -m “代码提交信息”。 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。
git rm filename 移除文件(从暂存区域移除,然后提交。)
git mv README.md README 对文件重命名:(这个命令相当于mv README.md README、git rm README.md、git add README 这三条命令的集合)#
3.远程Git仓库
git remote add origin <server>:本地仓库关联远程服务器仓库
e.g.: git remote add origin https://github.com/Snailclimb/test.git
将 test 重命名为 test1:git remote rename test test1
移除远程仓库 test1: git remote rm test1
4.查看提交历史
在提交了若干更新,又或者克隆了某个项目之后,想回顾下提交历史。 完成这个任务简单有效的工具是:
git log
只看某个人的提交记录:git log --author=bob
5.撤销操作
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。
此时,可以运行带有 –amend 选项的提交命令尝试重新提交:
git commit --amend
取消暂存的文件: git reset filename
撤消对文件的修改: git checkout – filename
丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master
6.分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认”的分支。在其他分支上进行开发,完成后再将它们合并到主分支上。我们通常在开发新功能、修复一个紧急 bug 等等时候会选择创建分支。单分支开发好还是多分支开发好,还是要看具体场景来说。
创建一个名字叫做 test 的分支: git branch test
切换当前分支到 test(当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。 Git 会自动添加、删除、修改文件以确保此时你的工作目录和这个分支最后一次提交时的样子一模一样): git checkout -b feature_x
创建分支并切换: git checkout -b feature_x
切换到主分支: git checkout master
合并分支(可能会有冲突): git branch -d feature_x
删掉新建的分支: git branch -d feature_x
将分支推送到远端仓库(推送成功后其他人可见):git push origin