专业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.c
touch 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.txt
touch .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 文件名 #将这个文件的的修改撤销