专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
git本地版本管理
- 每一个人的电脑都有一个独立的版本库,可以在本地做版本管理
- 适用于单人项目
- 方便备份代码
- 代码可以回退到之前任意提交的版本
git本地提交的操作步骤
- 初始化一个本地仓库
- 配置用户名和用户邮箱
- 添加或修改文件
- 将文件提交到仓库
初始化一个本地仓库
cd到保存仓库的路径- 使用
git init创建本地仓库,会看到终端有一下输出表示创建本地仓库成功了Initialized empty Git repository in /Users/UserName/Project/01.git本地仓库/.git/ .git是git的仓库,千万不要自己手动去更改里面的内容
给仓库配置用户名和用户邮箱
- 配置用户名和邮箱可以查看每行代码是谁写的,方便联系作者,对于有bug的代码可以一目了然,谁也无法抵赖
- 配置用户名
git config user.name yourname - 配置用户邮箱
git config user.email youremail - 配置好的
user.name和user.email会保存在.git/config文件中 - 每当新建一个仓库都需要配置用户名和用户邮箱比较麻烦,可以给
git配置一个全局的用户名和用户邮箱 - 配置全局的用户名
git config --global user.name yourname - 配置全局的用户邮箱
git config --global user.email youremail - 配置全局的
user.name和user.email会保存在/Users/UserName/.gitconfig文件中
添加或修改文件
- 在
.git同级目录创建文件main.ctouch main.c - 使用
git status查看当前仓库的状态,可以查看哪些文件没有被添加到仓库,哪些文件被修改了Untracked files: 表示没有添加到仓库的文件modified: 文件被修改Changes to be committed: 需要提交到仓库
将文件提交到仓库
git add: 将文件添加到暂存区- 如果添加单个文件使用
git add 文件名 - 如果添加多个文件使用
git add .:.表示当前目录
- 如果添加单个文件使用
git commit: 将文件添加到对象存储区(仓库)git commit -m "注释": 提交时附上简短的注释,告诉别人这次提交干了什么事
git 工作区,暂存区,对象存储区 的概念
- 我们的项目文件夹即是
工作区。提交的过程,是先将修改的文件放到暂存区、再从暂存区移动到对象存储区

git 常用操作
- 一次添加多个文件到仓库
touch Person.c Student.c: 创建2个文件git add .: 将多个文件一起添加到暂存区git commit -m "添加Person和Student文件": 将暂存区的文件添加到对象存储区- 给
Person.c文件添加feature方法void feature() { print("完成摇一摇功能"); } - 将
Person.c的改动添加到仓库 - 修改
Person.c的feature方法void feature() { print("将摇一摇改成甩一甩"); } - 将
Person.c的改动添加到仓库
git log: 查看版本库的提交日志MacBook-Pro:01.git本地仓库 zhangping$ git log commit 5273301917e762b1389673e8b5208d4ee18c28fb Author: ZhangSan <[email protected]> Date: Tue Jun 14 13:45:34 2016 +0800 将摇一摇改成甩一甩 commit 7b5ab5ae19315ea95dc35b43db91a2d2dfb20416 Author: ZhangSan <[email protected]> Date: Tue Jun 14 13:44:45 2016 +0800 添加摇一摇功能 commit 27a1d9ee87ec90f2a6a7f32dd4150299f2decd39 Author: ZhangSan <[email protected]> Date: Tue Jun 14 13:43:49 2016 +0800 添加Person.c和Student.c commit 0eaea35592d38bf4fedca16e991270b8386fe98c Author: ZhangSan <[email protected]> Date: Tue Jun 14 13:42:55 2016 +0800 添加main.c- 可以看到每次提交
commit的内容和版本号- 如果提交内容很多,超过一页使用
空格键下一页,Control + b上一页。 使用j下一行,使用k上一行
- 如果提交内容很多,超过一页使用
- 可以看到每次提交
git reset --hard 版本号: 将仓库和工作目录代码回退到指定版本- 将代码回退到
添加摇一摇功能这个版本git reset --hard 7b5ab5a - 可以看到代码又回到
添加摇一摇功能:void feature() { print("添加摇一摇功能"); } git log查看仓库logcommit 7b5ab5ae19315ea95dc35b43db91a2d2dfb20416 Author: ZhangPing <[email protected]> Date: Tue Jun 14 13:44:45 2016 +0800 添加摇一摇功能 commit 27a1d9ee87ec90f2a6a7f32dd4150299f2decd39 Author: ZhangPing <[email protected]> Date: Tue Jun 14 13:43:49 2016 +0800 添加Person.c和Student.c commit 0eaea35592d38bf4fedca16e991270b8386fe98c Author: ZhangPing <[email protected]> Date: Tue Jun 14 13:42:55 2016 +0800 添加main.c- 可以看到
git仓库也没有了将摇一摇改成甩一甩这次的提交
- 将代码回退到
- 将代码再次回到
将摇一摇改成甩一甩- 刚才通过
git log可以看到git仓库也没有了将摇一摇改成甩一甩这次的提交,那怎么才能回退回去呢 - 其实
git会记录我们的每一次提交 - 通过
git reflog可以看到每次的提交操作7b5ab5a HEAD@{0}: reset: moving to 7b5ab5a 5273301 HEAD@{1}: commit: 将摇一摇改成甩一甩 7b5ab5a HEAD@{2}: commit: 添加摇一摇功能 27a1d9e HEAD@{3}: commit: 添加Person.c和Student.c 0eaea35 HEAD@{4}: commit (initial): 添加main.c - 可以看到每次提交的commit版本号
- 使用
git reset --hard 5273301可以将代码再次回到将摇一摇改成甩一甩的状态
- 刚才通过
git diff: 查看工作区文件变化- 在
Person.c添加develop方法void develop() { print("研发摸一摸功能") } - 使用
git status可以看到Person.c发生了改变,但是具体改变了哪些内容看不到 - 使用
git diff: 查看工作区文件变化diff --git a/Person.c b/Person.c index 2be19b5..fa91490 100644 --- a/Person.c +++ b/Person.c @@ -1,3 +1,7 @@ void feature() { print("将摇一摇改成甩一甩"); +} + +void develop() { + print("研发摸一摸功能") } \ No newline at end of file+: 表示添加了内容-: 表示删除了内容
- 在
git checkout 文件名: 将这个文件的的修改撤销
忽略不想添加到仓库的文件
在开发过程中,有些文件我们不想提交到git仓库,将不想添加到git仓库的文件写入.gitignore文件中可以忽略
touch abc.txt创建abc.txt文件git status: 显示未跟踪的文件,文件没有被添加到git仓库进行管理Untracked files: (use "git add <file>..." to include in what will be committed) abc.txttouch .gitignore: 创建git忽略文件,只要在这个文件写入要忽略文件的名称,这个文件就会被忽略,git仓库就不会来跟踪这个文件了,但是在磁盘上还有这文件的- 打开
.gitignore文件,输入abc.txt git status:Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore- 可以看到git仓库就不会理会
abc.txt文件了
总结用到的命令
git init #创建本地仓库
git config user.name yourname #配置用户名
git config user.email youremail #配置用户邮箱
git config --global user.name yourname #配置全局的用户名
git config --global user.email youremail #配置全局的用户邮箱
git status #查看仓库的状态
git add 文件名 #将文件添加到暂存区
git add . #将当前目录的所有文件添加到暂存区
git commit #将文件添加到 对象存储区(仓库)
git log #查看版本库的提交日志
git reset --hard 版本号: #将仓库和工作目录代码回退到指定版本
git reflog #可以看到每次的提交操作
git checkout 文件名 #将这个文件的的修改撤销