git使用教程
git 项目首次管理
在需要git管理的地方 创建一个文件夹
git init; //初始化目录中创建GIT文件,来管理目录下的所有文件
需要配置:
$ git config --global user.email "xxx@139.com"
$ git config --global user.name "xtest"
git 忽略指定格式文件
首先在根目录中创建.gitignore
#精准指定
test.class
#git支持正则表示
*.class #所有class不再追踪
#指定某个文件除外
!test.class
#忽略子目录下test.txt文件
/*/test.txt # 这个只有第一个一级子目录中的(如果有多级子目录还是会被识别)
/**/test.txt # 这个所有子目录中的都将被忽略
src/ 忽略SRC下的所有文件
src/**/test.txt 忽略SRC下的所有test.txt文件
git 初次下载远程仓库代码
$ git clone https://gitee.com/mwlift/test.git
输入gtiee码云帐启和密码
请输入密码
表示下载成功
git 基本使用
修改了当前文件后
1、git add test.txt 指定某一个进行提交
git add .(后面有一个点,意思是将你本地所有修改了的文件添加到暂存区)
2、git commit -m""(引号里面是你的介绍,就是你的这次的提交是什么内容,便于你以后查看,这个是将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中)
git 版本切换:
git log 查看当前版本
git reset --hard HEAD^ 切换到前一个版本 HEAD^^ 切换到前两个版本
git reflog 查看所有的提交记录
git reset --hard 453a7a2 从提交的记录commitID中复制,恢复到指定位置
git 查看日志:
git log 查看当前日志
git log --author="alex" 只查看指定某个开发人员提交记录
Git log --pretty=oneline 每个版本只显示一行
git reflog 查看所有,包括历史记录
git 查看提交commitId内容:
git show commitId;
git代码回滚
1、修改未 git add
git checkout -- test.txt #回滚指定的文件
git checkout -- file_name #指定回滚对应的文件夹下所有文件 (如果文件夹都被误删了,就是恢复整个文件夹和里面所有文件)
git checkout . 丢弃所有修改
2、修改已 git add 未git commit;
回退先git reset HEAD test.txt
再 git checkout -- test.txt
3、已add 并且已commit,未push到远程
就像下面创建了一个c文件:
git reset --soft HEAD^ 回退并保留自己新增的内容
(
--soft 是只回滚已commit文件 回到刚修改的状态,需重新add
--herd 强制一致。其中有些git add了,有些git commit了,通通不管,可以一个命令全恢复,都需要重新add
-- mixed 默认, 就是切换到指定commit节点
)
git分支切换
git branch -a 查看所有的分支 *代表当前分支(包括远程分支)
git checkout -b dev_alex 创建分支
切换到主分支上
git checkout master
git checkout dev_alex
删除分支 -- 先要切换到其它分支上才能删除当前分支以外的分支
Git branch -d dev_alex
如果出现
需要 用 -D 大D来删
git rebase 合并commitId和修改commit message
#最新提交的前两个
git rebase -i HEAD~2
会跳出两次窗口
--修改commit message
1、第一次弹出是需要我们告诉git,你需要操作哪些commitId把pick改为reword
2、第二次弹出是个重情编辑对应的commit message
-- 合并commit id
1、第一次弹出是需要我们告诉git,你需要操作哪些commitId把pick改为Squash
2、第二次弹出是个重新编辑对应的commit message(因为是合并,这里会有多条,一般只用保存一条就可以了)
git配置
查看配置
git config -l 查看全局所有配置
git config --local -l 查看仓库级配置
git config --global -l
git config --system -l 系统级别配置
git config --local -e 编辑配置
git config --global --add user.test alex 增加一个配置
git config --global unset user.test 删除一个配置
自定义快捷命令
git config --global alias.st status
git 打标签
git 远程仓库
git remote 查看当前有哪些远程仓库
git remote -v 查看远程仓库对应的地址
git remote add origin https://gitee.com/mwlift/test.git #新增远程仓库关联关系
git remote remove origin #删除远程仓库关联关系
git push -u origin master 首次推代码报错
ssh-keygen -t rsa -C "alexMagicDesign" 本地生成公钥 地址:C:\Users\我\.ssh
一路回车就可以了
打开 id_rsa.pub文件并复制
在代码仓库加入这个公钥
再次推送,我的电脑会提示安装.NETFramework版本是v.4.7.2
我弄了半天,没有安装成功,电脑不支持,索性点【取消】还是可以继续的,
由于我测试时绑定的是码云,所以这里请输入码云的帐户和密码
这样就推送成功了,可以去码去上看一下,代码和现在本地已经一致了
git clone
新建一个文件夹管理
找到需要下载的对应下载连接
注意是ssh
复制地址
git clone git@gitee.com:mwlift/test.git
这样就把代码克隆下来了
#下载master代码
git clone git@gitee.com:mwlift/test.git
#下载指定分支代码
git clone -b dev_alex git@gitee.com:mwlift/test.git
pull 拉取最新代码过来
首先在其它地方把代码修改,内容提交了
提交成功后,线上代码已和clone文件夹代码不一致了
这时只需要用git pull 拉取一下最新代码就OK
模拟git项目开发过程
1、创建分支dev_alex
2、拉取代码(主分支和其它分支的ssh路径是一样的)
git clone git@gitee.com:mwlift/test.git
3、切 dev_alex分支代码
git checkout dev_alex
4、模拟dev_alex分支本地修改
5、上传alex_dev代码到远程仓库
git remote add dev_alex_req https://gitee.com/mwlift/test.git
git push -u dev_alex_req dev_alex
远程仓库已可以看到最新加的内容
6、模拟master主分支已被其它开发合并了修改,目前master与dev_alex不一致
7、模拟代码合并(解决冲突)
(1) git checkout master 切换到主分支
(2) git pull 拉取主分支最新代码
(3) git checkout dev_alex 切换回开发分支
(4) git merge master dev_alex分支合并master
(5) 手动解决冲突,再提交
8、冲突解决后并提交到远程仓库后,就可以 对远程仓库 的版本进行合并操作,就不会再有冲突了
常见开发流程
#########平时拉取代码############
#拉取最新代码
git pull
2、看是否成功
成功就直接开始开发
发生冲突就git stash==>继续git pull==>pull完成后git stash pop查看冲突地方,并解决冲突