Git的使用和讲解
版本控制:
说到版本控制,脑海里总会浮现大学毕业是写毕业论文的场景,你电脑上的毕业论文一定出现过这番景象!
-
毕业论文_初稿.doc毕业论文_修改1.doc毕业论文_修改2.doc毕业论文_修改3.doc毕业论文_完整版1.doc毕业论文_完整版2.doc毕业论文_完整版3.doc毕业论文_最终版1.doc毕业论文_最终版2.doc毕业论文_死也不改版.doc
以上就是使用最原始的方式进行版本控制,但是这种方式有显著缺点:
- 多个文件,保留所有版本时,需要为每个版本保存一个文件…
- 协同操作,多人协同操作时,需要将文件打包发来发去…
- 容易丢失,被删除意味着永远失去…(可以选择网盘)
注意:一般版本控制工具包含两部分
- 客户端(本地):本地编写内容以及版本记录 # .git 仓库
- 服务端(网盘):将内容和版本记录同时保存在远程(可有可无) # Github 码云
git是什么?
git 是一种版本控制器,更直白的说,团队开发的时候,管理代码使用的软件
git的配置!
相当于你在项目中是谁,
人在江湖飘,哪能没名号
1
2
3
|
cd E:/
mkdir test
git init
|
- 不要将仓库建在中文目录下,否则可能出现问题
一旦git init之后, .git
是一个隐藏的目录,不要随便乱碰(每一次的操作,都会有记录)-
$ git init 把这个目录变成Git可以管理的仓库(后续新建提交和ssh克隆需要)
添加文件
在E:/test
目录下面,用你喜欢的编辑器来开发你的程序,比如:index.py
1
|
print("helloworld")
|
编辑完成之后,git status
来查看文件的状态
1
|
git status
|
此时,git发现有一个新的文件(git会自动检测是删除还是添加还是修改),但是并没有把该文件纳入管理。
我们需要两步,让git来管理该文件
git add index.py
# 把index.py文件保存在本地暂存区git commit -m '新建文件'
# 把index.py提交到本地版本库
删除文件
用rm
来删除文件,并直接commit
,提交到版本库
例如:先创建一个foo.py的文件,供练习删除使用
步骤如下:
1
2
3
4
5
6
7
8
9
10
11
|
$ touch foo.py # 创建foo.py
$ git add foo.py
$ git commit -m '删除使用'
$ ls
foo.py index.py
# 开始删除
$ git rm foo.py
rm 'foo.py'
$ git commit -m '删除foo.py'
|
经过前面的练习,我们已经能够在本地的仓库里管理代码了,但如果是团队开发,怎么配合起来呢?
注册在线仓库账号 (省略)
把代码推到远程仓库
推:push
-
为本地库添加远程库
git remote add origin https://git.oschina.net/lianshou/test.git
意思是:添加一个远程的仓库,代号是origin 地址是:https://.../test.git
-
push推代码
git push origin master
意思是:把你本地的版本(默认是master),推到代号为origin的远程库
这个过程会让你输入用户名和密码,即你注册时的用户名和密码
拉: pull
你想让xiaoming和你一起开发这个项目,首先我们需要在lianshou这个项目中把xiaoming添加进来,让其成为开发者,步骤如下:
项目-->管理-->项目成员管理-->开发者-->添加项目成员-->输入xiaoming
接下来就是开发:
- 首先需要clone一份代码到自己的本地,
1
2
|
cd F:/
git clone https://git.oschina.net/lianshou/test.git
|
xiaoming开始在自己的工作区开发代码,然后提交代码到这个地址
那到另一个账户,如何得到最新的代码?
之前推(push)代码到远程服务器,那拉代码,自然就是pull了
1
|
git pull origin master
|
如果你想更清晰的学习git,你必须要了解3个重要的区域:
- 工作区:开发者的工作目录 worksapce
- 暂存区:修改已被记录,但未被录入版本库的区域
- 版本库:存放变化日志以及版本信息
版本的切换
1
|
git reset --hard "head^^^"
|
--hard
代表的是当前版本,后面的^
符号代表的是退回到第几个版本,几个^
符号就代表退回第几个
但是这种方式不是很灵活,因此不建议大家使用这种方式切换,我们使用:
1
|
git reset --hard 2580d
|
2580d
代表的是版本号,只需要保证版本号是唯一的即可