赞
踩
git是目前世界上最先进的 分布式版本控制工具(没有之一)
git有什么特点?
就是帮助我们管理不同版本的文件的一个应用程序
2000年之前,linus自己手动维护linux的版本代码
2002之后到2005年,使用的免费的bitkeeper
2005年之后,linus开发git
特点:
1、实现大部分开发中对版本管理的需求
2、结构很简单,上手容易
缺点:
1、对中央仓库依赖严重,一旦损坏了,历史数据难以恢复
2、程序员上传的都是完整版,如何追溯查询?
3、系统正在上线运行,需要修改bug或增加几个不同的功能,持续几个月的时间。如何同时管理几个版本
4、如果管理一个分布在世界各地且互不相识的大型开发团队
1、协同开发
2、版本记录
3、冲突解决
4、历史追查
5、代码备份
6、版本还原
7、权限管理
8、分支管理
9、代码审查
最早的git实在Linux上开发的,很长一段时间中,git只能在linux和unix上运行。不过,后来有人把他一直到windows平台。现在git可以在linux、unix、mac os和Windows几个主流平台上运行
要使用git,第一步当然是安装(window安装)
1、方式一
命令行工具:git for windows(重点)
https://git-for-windows.github.io/
2、方式二
可视化工具:TortoiseGit
https://tortoisegit.org
3、方式三
idea、pycharm插件(掌握)
4、方式四
github网站(掌握)
http://www.github.com
选中你要作为git工程存放的目录,然后单击鼠标右键选 择 git bash 即可
① git是分布式版本控制工具,所以我们需要填写 用户名和邮箱作为一个标志(用于识别上传代码的所有者)
② 在 git bash中使用:
git config --global user.name "gyh"
git config --global user.email "xxx@163.com"(注意:此处应该与github账号保持一致)
添加标志
③ C:\Users\用户名路径下 .gitconfig 文件,这个我文件里面可以看到--global属性,所有的git项目都会公用这个属性(所配置的git信息会保存在此文件中)
git bash
git init
git status
git add 文件名 (or 目录名)
e.g.
git add src/XXX.xxx
tip:
以上通过git add 命令的文件会提交到暂存区中,但是这里的文件其实没有真正的提交。使用下一个命令才是把它提交到一个统一的版本文件
git commit
git commit
tip:
① 会进入到一个Vim编辑页面,将临时暂存区中的信息自动添加进去,并且提示让用户添加此次 git commit 的备注文字信息
② commit后,git status 中的信息会被清空
git commit -m "备注信息"
tip:
① 不用进入vim界面,直接进行commit
② 每当有文件被修改/添加/删除的时候,都需要重新git add,然后再 git commit
git log
tip:
可以查看历史 git commit 执行的信息
e.g.
git log --pretty=oneline
tip:
打印历史提交的简要信息(序列号,备注信息)
git reset --hard HEAD^1
tip:
① HEAD是一个指针,永远指向最新版本
② ^1:表示让HEAD指针指向上一个版本
③ 执行的原理就是修改HEAD指向的位置
git reset <选项> HEAD^1
选项:
① --hard:这种回顾不但可以将版本回顾,还会将处于此版本后面提交的版本均删除。不会保留任何你修改的记录
② --soft:可以回退版本,也会保留改动的记录,会自动的git add
③ --mix:可以回退版本,并会保留所有改动记录。但是不会自动帮你git add
注:这种方式可以恢复到之前某个提交的版本,但是恢复到的版本的之后版本将不复存在。
git reset --hard HEAD~2 # 回退到2个版本之前的版本
git reflog # 查看历史记录的版本号
e.g.
$ git reflog # 查看历史记录的版本号
c31f760 (HEAD -> master) HEAD@{0}: commit: del 2 file
e6b9e41 HEAD@{1}: commit: 3.txt
31e9b0e HEAD@{2}: reset: moving to HEAD^1
052576e HEAD@{3}: commit: 3.txt
31e9b0e HEAD@{4}: commit: add 2.txt
41e4b7b HEAD@{5}: reset: moving to HEAD~2
8b46ac0 HEAD@{6}: commit: test add 2
dcb0c5c HEAD@{7}: reset: moving to HEAD^1
d0d6fe2 HEAD@{8}: commit: test2
dcb0c5c HEAD@{9}: commit: test 1
41e4b7b HEAD@{10}: commit: submit 2
496fb08 HEAD@{11}: commit (initial): this is my first commit!
e.g.(穿越回之前的版本,写入唯一标识码,同时不会清除其之后的版本信息)
git reset --hard 052576e
git checkout 文件名 # 用于将指定文件回退至git中保存的内容状态
e.g.
git checkout src/a.txt
注:git checkout 不会返回历史文件
① 删除文件
② git add
③ git commit
项目已经上线了,但是又有新的功能需要开发(或存在BUG需要修改),需要在保持项目仍在上线的情况下,进行处理
git branch -v
e.g.
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git branch -v
* master fbd5f53 add a.txt
git branch 分支名称
e.g.
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git branch common
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git branch -v
common fbd5f53 add a.txt
* master fbd5f53 add a.txt
git checkout 分支名
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git checkout common
Switched to branch 'common'
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (common)
$ git branch -v
* common fbd5f53 add a.txt
master fbd5f53 add a.txt
1、切换到主分支
git checkout master
2、合并
git merge 分支名
e.g.
git merge common
冲突一般指同一文件同一位置的代码,在两种版本的仓库合并时,版本的管理软件无法判断到底应该保留哪一个版本,因此会提示该文件发生冲突,冲突一般都需要程序员手动解决。
① 在主分支上新增文件conflict.txt,并提交git
② 在common分支上新增文件conflict.txt,并提交git
③ 在master分支上合并common,发生冲突
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git merge common
Auto-merging src/confilct.txt
CONFLICT (content): Merge conflict in src/confilct.txt
Automatic merge failed; fix conflicts and then commit the result.
④ 查看冲突
git diff
⑤ 解决冲突:切换到出现冲突的目录,然后查看文件,手动编辑问题区域
⑥ 重新 git add 和 git commit 即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。