文章目录
使用gitbash命令行操作
设定账户邮箱和签名
邮箱和签名和github没有任何关系,生成后会在C盘用户目录下形成一个git
config文件;签名的作用是区分不同的操作者;
初始化本地库
注意git对目录的操作是和linux一样的;
随便建一个文件目录,使用gitbash here
git init 初始化形成一个-git文件,一般是隐藏的,需要设置文件隐藏文件可见
git status
vim写一个文件后,再查看状态:
untracted file 未被追踪的文件,使用git add取追踪,添加到暂存区;
添加到暂存区
git add +文件名
git status
红色变成绿色 已被追踪
可以提示使用git rm --cached删除.
只是删除了缓存区的文件,工作区不影响,所以又回到最开始的状态了;
提交本地库
使用:git commit -m “备注信息” 文件名
查看版本信息: git reflog
查看完整日志:gitlog
修改文件
提示修改了
继续向上面一样添加缓存区以及提交文件
提示一个文件被修改:一个新增,一个删除,就相当于更新;
再重复以上操作,观察reflog
不论是新增文件还是修改文件,变化后都能再相应文件夹查到最新信息;
在工作区创建一个god文件
#那所谓的工作区、缓存区、提交区对应哪些文件夹呢?
版本穿梭
git reset --hard 版本
多次穿梭
hello.txt文件也不断发生变化,此时再添加god.txt看看有什么变化?
commit:forth 是什么意思,直接形成了一个新的版本?
再切换到第一个版本,god.txt直接没了;
分支操作
引入分支的好处:
主线可用,
分支随时可删;
问题在于合并,多条分支如果修改了同一个地方,该咋办
查看分支
git branch -v
创建分支
git branch ( 分支名)
查看分支多出一条分支,并且是再master版本的基础上;
合并分支
随便修改一下,合并到主分支;注意合并到哪个分支下就切换到哪个份报纸下使用:
git merge +要合并的分支名
合并后,分支依然是存在的,并且只影响使用merge命令的那条分支
合并冲突
增量不冲突
修改同一个地方会冲突
什么时候会合并冲突
最简单的情形一个分支中某值为1,再同样的地方改为2,这就会冲突,系统不知道如何处理,此时就需要手动打开文件处理;
案例:
会显示master |MERGING
冲突后会显示冲突的地方,然后删除掉指示符号,进行修改并提交;
打开hello.txt进行修改,
直接删除这些等号和小于符号,根据自己的需求进行修改,修改后添加缓存和提交:
此时提示,fatal: cannot do a partial commit during a merge.
就是不要使用文件名了,直接去掉文件名进行提交:
至此,合并成功;
总结
master,hot-fix这两个分支是指向具体版本记录的指针,而head指针是指向master、hot-fix的指针,head指向谁就代表在哪个分支;
比如以上的log显示head目前指向hot-fix的指针,而hot-fix指向2d5c…这个版本
git团队协作机制
令狐冲clone到本地库后,再push,有可能各个分支都被修改了,甚至增删了,那么push上去会再次合并,这种合并不单单是两个分支之间的合并,可能是整体的合并吧???
跨团队的协作
创建远程库
创建github账号
创建仓库
别名指的是仓库地址别名,自定义的;
3再gitbash命令中输入:
准备推送,注意每次只能推送一条分支!
弹出密码框输入密码:
选择账号密码浏览器登录;
使用token登录
上传成功后,可以修改文件,
在hub上在线修改master
再拉取到本地,如果不同会自动添加缓存并提交,同步到本地库;
git pull 别名 分支
看看结果:
git clone 别名(或则地址)
注意克隆是不需要github账户密码的;
并且克隆会帮你做三件事:1.拉取代码
2.初始化本地库
3.创建别名(默认origin)
生成SSH
什么是SSH?SSH和Http有什么区别?
cmd进入windows
git的方式
$ ssh-keygen -t rsa -C 2810325944@qq.com
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/28103/.ssh/id_rsa):
Created directory '/c/Users/28103/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/28103/.ssh/id_rsa
Your public key has been saved in /c/Users/28103/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:16bzfE5zqd6jEpDjnjt/bIKypDbHTfKZUEPT+pjwLuI 2810325944@qq.com
The key's randomart image is:
+---[RSA 3072]----+
| . |
| o . |
| . + |
| . B . |
| S O o |
| o B = .|
| ..O B o o..|
| +o= @ * =++ |
| oE+.+.+.O*o..|
+----[SHA256]-----+
注意生成后可能看不见公钥,可能是因为没有显示扩展名或或者隐藏的项目
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDL1ZwO53c0arrx0Z64bKddjMQ2vgDnlmKHo1WuQEz+W5uvOphiwZAf7w3X9MNN7WhcQT5Si1WvdeXD5W1uHEnrbbRdyLsKiiVNEl4kDmIJmVuh61X59Py4ULVLf9kMS6g0r5Zjya772TVsFceLPaddBCIzda4tlmLIR9vWxUHCh/JPJ0a0O//OJjF6G2+k9xZDSYiQObUiVcREwu1WVIv7NZSWJWz2zmOswiNRvJGbzOVmuBNYqJ8M6KLt/OwAAmlUs74yoIzOKfTVWycK3+HAvwt7M2TCikHtGK3mHFVH2bK88/l2Obg7di4KsaWhvn5n4ECk279k1/TNcp/0J3la73JdVj+IZceIFjFi97AQG3HdwtWL588WgtQEH+YGc+WcKHgmXTs6fFGH3p60cUzzwSgVx2ys32ehzHTxLpE2YN2W7Ubg1HZhL67IIBpF7SQzZTovnFu3gMfOHeR9Z+Vjm751S+uAzi3k/BjSeTO2HTB5EVOWP+F+UMyqlLoKa5E= 2810325944@qq.com
在githuab上进行设置
idea 集成git
忽略文件
为什么要忽略?
与项目功能无关,不参与项目运行,同时屏蔽开发工具差异,只需要src和pom
怎么做?
创建xx.ignore忽略规则文件,放在windows的home目录下
再在gitconfig文件中引用此文件:
反斜线替换成斜线
配置安装目录
VCS(verison control settinig)
创建本地库
VCS create选定模块,如果要取消,重新file setting
pom变红,使用git添加
此时还没有提交到本地库
github登录
最好用口令登录,账号很难登录
上hub设定
上传GitHup
分支要一个个传上去,不能所有一起传,假设传上去后,本地某分支又分出好几分支咋办?如何上传
push注意事项
push时要先拉取pull,
pull
clone
使用idea从远程仓库克隆下来时,模块标记消失:
可以看到,本地仓库 .git已经存在:
重新导入子模块
为啥是这个样子呢???
尝试使用git命令行的方式进行clone:
加载项目。。。。如下
在测试文件下导入子模块:
正常!!!!!!!
再来测试,新建一个项目,将idea 克隆的项目导入看是否正常?
不行,导入了也不显示!