赞
踩
Git 是一个 分布式的版本控制工具,其应用场景如下:
结构如下:
首先下载Git并安装,安装完后,右击鼠标会有:
创建git仓库:进入想要的文件夹打开 cmd 或 Git Bash Here,用以下命令将文件夹改造为git仓库
-- 当前文件夹变为git空间
git init
- 可以创建无数个git仓库,一般一个工程项目对应以一个git仓库。
在git仓库中,查看用户名和邮箱
-- 参数l是list的缩写
git config -l
修改用户名和邮箱
git config --global user.name 用户名
git config --global user.email 邮箱
第一次创建git仓库后,该仓库内的所有文件都是未被跟踪的。仓库内的文件 只有被提交到缓冲区,该文件才会被 跟踪,只有被跟踪,文件发生变化时才能被检查到。
-- 文件放入缓冲区
git add 文件名或目录 // 放入当个文件
git add . // 放入当前目录下的所有文件
-- 删除跟踪
git rm 文件名或目录名
设置不跟踪哪些文件:
在仓库所在目录创建.gitignore
文件
在.gitignore
文件中写不跟踪的文件名(可以用正则匹配)
修改后的文件,使用add
命令提交到 缓冲区
-- 放入缓冲区
git add 文件名 // 添加当个文件
git add 文件名1 文件名2 文件名3 // 添加多个文件
git add . // 放入当前目录下的所有文件
-- 取消缓冲区的文件
git reset head 缓冲区的文件或目录名
再使用commit
命令将 缓冲区数据 提交到 本地仓库
-- 提交
git commit -m 此次提交顺带的评论 // 可以用单引号,也可以不用单引号
git tag commitID别名 // 提交之后可以为刚刚提交生成的commitID取别名
-- 回退到之前或之后的某个版本
git reset --hard 上次提交生成的commitID // 通过 git log 命令查看
注意:
- 第一次提交不能取消,第二、三…次都可以取消。
- 可以使用
tag
命令为生成的commitID取别名,因为commitID是一组hash值,不太方便直观展示其意义。
- 每次commit生成新版本时,当前分支都会随着新版本移动。
将本地仓库代码提交到远程仓库
git status
git reflog
去查看记录,得到之前的版本IDgit log
查看所有版本信息,复制要比较的版本IDgit diff 版本ID1 版本ID2
git log
查看所有版本信息,复制要进入的版本IDgit reset --hard 版本ID
查看所有分支
git branch // 只显示本地仓库的分支
git branch -a // 显示本地仓库的分支、以及远程仓库的分支
git branch -a -v // 显示本地仓库的分支、以及远程仓库的分支;以及对应的commitID、commit评论
git branch -a -vv // 显示本地仓库的分支、以及远程仓库的分支;以及对应的commitID、本地分支与远程的哪个分支绑定、commit评论
- 这个命令只是用来查看有哪些分支,对于哪些分支分别提交了几次,还是要使用上面的
git log --all --pretty=onelone --abbrev-commit --graph
在 Git 中 HEAD 表示 当前分支
创建分支
-- 1. 创建git仓库时,会自动创建一个名为 master 的分支
-- 2. 若在master 分支的基础上还想创建新分支,使用 branch 命令
git branch 分支名
删除分支
git branch -d 分支名
git branch -D 分支名 // 大D是强制删除分支。比如:一个分支发生了修改,但是还未合并到其它分支,此时使用小d删除该分支会失败。
切换分支
git checkout 分支名 // 若分支名不存在,则切换失败
git checkout -b 分支名 // 若分支名不存在,则创建该分支,并切换到该分支
分支合并
// 将分支2合并到分支1上
-- 1. 首先切换到一个被合并的分支1上
git branch 分支1
-- 2. 再将分支2合并到分支1上
git merge 分支2
// 将分支2合并到分支1上
-- 1. 首先切换到一个被合并的分支1上
git branch 分支1
-- 2. 再将分支2合并到分支1上
git rebase 分支2
- 两者对比:
- 应用场景对比:
- 当新功能要合并到master,但是后续可能会修改,此时用 merge
- 当新功能要合并到master,且以成熟后续不会再更改,此时用 rebase
分支合并时引发冲突:因为分支之间是独立的,所以可能两个分支同时修改了某一行,此时将两者合并时,git就不知道该行该设置为什么值。解决方法如下
=====
定位到发生冲突的行git add file01.txt
git commit -m 'new'
本地电脑生成密钥
ssh-keygen -t rsa
然后一路回车
复制密钥
cat ~/.ssh/id_rsa.pub
然后复制密钥
将密钥粘贴在GitHub、Git、等远程仓库的ssh配置中
clone
命令拉取项目通过以下命令拉取:
从远程仓库复制URL地址
与远程仓库建立连接
查看远程仓库是否连接成功
把本地仓库项目推给远程仓库
直接提交此次项目:
-f
表示强制覆盖,当本地仓库和远程仓库都修改了同一行时就会冲突。(一般情况下是不会冲突,所以可以不使用该参数)--set-upstream
表示将该命令中的本地分支名和远端分支名自动绑定。这样后续再推送时,就很方便。
- 例子:
因为已经绑定了,所以直接push,不用再指定一些参数
- 查看已经绑定的分支:
git branch -vv
- 1
git push origin master:master
// 可以简写为:
git push origin master
用此次项目替代上一次的项目,即commitID还是上次的,但是项目是此次的:
解决方法:就和之前解决分支冲突的方法一样。(远程拉取的分支也是分支,所以解决方法一样)
git branch
查看分支,没有一个分支,连master分支都没有。解决方法:fetch
数据// 1. 查看状态
git status
// 2. 添加文件
git add 文件1 文件2 文件3
// 3. 从远程仓库拉取数据
git pull
// 4. 提交到本地仓库
git commit -m "icafe编号 需求标题"
// 5. 提交到远程仓库
git push origin HEAD:refs/for/master
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。