(git是一个免费、开源的版本控制软件)
目的:通过git管理托管项目代码
下载安装:
- 下载地址:Git - Downloading Package,选 64位
- 双击安装
1、Git工作流程:
2、Git初始化及仓库创建或操作
(1)基本信息设置:
- 设置用户名:
git config --global user.name ‘xiao-creat’
- 设置用户名:
git config --global user.email ‘xxxxxxx@qq.com’
补充:上述设置在github仓库主页显示谁提交了该文件
忘记命令时可以双击Tab键来进行提示
(2)初始化一个新的Git仓库:
- 创建test文件夹
mkdir test
- 进入test目录
cd test
- 文件内初始化git(创建git仓库)
git init
(3)向仓库中添加文件
- 创建一个php文件
touch a1.php
- 查看文件状态(要经常使用) Untracked files
git status
- 将php文件添加到暂存区-->查看状态为new file: a1.php
git add a1.php
- 将文件从暂存区添加到仓库中,每一次commit都会有一个commitId产生,用来对版本进行管理
git commit -m ‘add a1.php. Here is the description ’
(4)修改仓库文件
1、进入编辑界面--->esc:wq保存
修改完文件后正常操作是进行第四步,将文件添加到暂存区;但是当你不想将修改后的文件添加到暂存区时可以执行第五步。
vi a1.php
2、查看输入的内容
cat a1.php
3、查看文件状态-->变成了modified: a1.php
git status
4、将修改后的php文件添加到暂存区
git add a1.php
5、丢弃刚刚在文件中添加的内容,撤销工作区修改,回到初始状态,就可以不用进行第四步操作
git restore a1.php
6、当工作区文件很多时,直接用点将所有文件添加到暂存区
将文件添加到暂存区后正常操作是进行第七步,将文件提交到仓库;但是当你不想将暂存区文件进行提交时可以进行第八步
git add .
7、提交文件
git commit -m ‘第一次通过git修改文件并提交到仓库’
8、
git reset HEAD a1.php //回到暂存区的最新版本。或git restore --staged a1.php
git restore a1.php //将修改拉回到工作区,把工作区的内容清空
(5)版本查看与切换
1、查看提交信息,例如有两次提交
当有回退操作时,最新提交的commitId将会被覆盖
git log
2、简化信息显示
git log --pretty=oneline
3、回退到上一个版本,HEAD^^回到上上次
git reset --hard HEAD^
4、显示所有的操作次数,包括新提交的版本或回退等操作
git reflog
5、回到commitId对应的操作
git reset --hard cb72084
(6)删除仓库文件
1、删除a1.php
rm -rf a1.php
2、从git中删除文件
git rm test.php
3、提交文件
git commit -m ‘提交描述’
补充:git status
值 | 含义 |
No commits yet | 表明未对工作区进行任何操作 |
Untracked files | 未被追踪的文件,表明新创建的文件还没有add到暂存区 |
new file: a1.php | 表明将当前文件add到暂存区 |
modified: a1.php | 表明对文件进行了修改,之后可以add到暂存区 |
nothing commit | 表明将暂存区的文件commit到仓库,此时工作区回到初始状态 |
3、分支介绍

git reset --hard commitID //根据ID切换不同开发版本
HEAD:特殊表示,表示当前最新版本的commitID,也就是最新的指针指向
git reset --hard HEAD^ //回退到上一个版本,HEAD^^回到上上次
Master分支是主分支,也是git为你默认创建的分支
HEAD头指针指向的分支,而分支又指向的是最新提交的commitID
实际开发中不在master分支进行开发,而是从master分支中拉出多个分支来进行开发
4、分支详解
- (1)从主分支master上切出一个开发分支,比如叫“dev_xiao”
git checkout -b dev_xiao
运行完上面一句话之后,表示你现在所有的操作都在dev_xiao这个分支上进行
在dev_xiao分支上进行add和commit之后查看日志,主分支进行的操作也可以看到,如下:
(2)查看当前所有的分支情况,前面*号表示当前所在分支为dev_xiao
git branch
(3)切换回主分支
git checkout master
注意:当切换回主分支时,dev_xiao这个分支所做的操作都会被删除,反之亦然。也就是说在不同的分支上进行版本管理,只有在自己的分支上才会生效。
(4)删除分支
git branch -d dev_xiao
运行上面删除语句时,会遇到错误如下图所示,:
出现错误原因你现在所处的分支是dev_xiao,但你想要在dev_xiao分支上删除dev_xiao分支是不可能的,想要删除必须在其他分支上进行删除 :
但此时又会出现当前dev_xiao分支没有被合并的错误,这时想要删除只能进行强制删除:
git branch -D dev_xiao
(5)分支合并(将dev_xiao开发的版本与master分支合并之后才可进行上线发布)
git merge dev_xiao //需将分支切到主分支。
当合并完分支之后,可以使用 git branch -d dev_xiao 删除分支,就不会出现分支未合并错误
(6)分支冲突
当创建了两个分支后,比如dev_xiao和dev_zhang分支,两个分支均进行了一定操作最后commit提交,然后切到master分支对上述两个分支依次进行合并,此时会出现分支冲突问题,如下图:
解决合并冲突,手动删除内容,然后再进行add和commit:
5、git config 和 配置别名
(1)查看配置信息
git config -l
上面图片所有的信息实际上都是整合出来的,包括仓库级别、全局级别、系统级别
(2)仓库级别:
配置位置:
查看配置:
git config --local -l
增加配置、查看配置、编辑配置、删除配置同global 一样
(3)全局级别:
配置位置:
增加配置:
git config --global user.name ‘xiao-creat’
git config --global user.email ‘xxxxxxx@qq.com’
查看配置:
git config --global -l
编辑配置:
git config --global -e
删除配置:
git config --global --unset user.name
(4)系统级别配置位置:
配置位置:git安装目录/etc
查看配置
git config --system -l
增加配置、查看配置、编辑配置、删除配置同global 一样
(5)配置别名,简化命令
git config --global alias.st status 表示用st代替status
6、打标签和忽略文件
打标签:由于commitId不容易记住,就可以用一种独特的方式去记住每个版本,类似于百度的IP110.242.68.3和域名www.baidu.com的区别,这就是打标签的意思。
IP 110.242.68.3 ---> 域名www.baidu.com
commitID as2731aa ---> 标签v1
(1)将最新版本的commitId对应上v1
git tag v1
(2)查看当前仓库的标签列表
git tag
(3)给某一commitId打标签
git tag v1.1 e5356cbb
(4)在打标签时添加说明
git tag v1.2 -m "这是第三个标签"
(5)删除标签
git tag -d v1.2
忽略文件: 在工作区内有一类文件只允许程序员自己查看,不想被git管理,就可以选择忽略文件
(1)在工作区新建.gitignore文件
(2)找到官方网址,选择对应的忽略文件,例如我想忽略.class文件
GitHub - github/gitignore: A collection of useful .gitignore templates
(3)将忽略文件内容进行复制
(4)查看状态,发现出现了 .gitignore ,此时.class已被忽略,但是因为.gitignore文件并没有被忽略,此时可以将其进行add和commit即可。
7、本地仓库和远程仓库
使用远程仓库的目的:备份,实现代码共享集中化管理
将本地仓库同步到git远程仓库流程图:
1、将本地仓库上传到远程仓库
(1)在远程仓库github上创建一个对应的项目,比如test
(2)让本地仓库与远程仓库作关联:
首先需要在自己本地增加一个安全SSH-Key,如果已有,直接进行push即可:
ssh-keygen -t rsa -C "xxxxxxxxx@qq.com"
然后将生成的公钥复制到github上: 点击github头像,选择settings,点击SSH and GPG keys,选择SSH keys,点击New SSH key。
最后:
git remote add origin git@github.com:xiao-creat/test.git
(3)查看远程仓库信息
git remote -v
(4)将本地仓库代码推送到远程仓库
git push -u origin master
(5)查看本地仓库是否有远程仓库
git remote
(6)当远程仓库文件有所改变时,即远程仓库和本地仓库版本不一致时,就要进行代码合并pull,之后再进行push:
git pull