git常见命令:
创建初始化仓库:

git 将文件提交到暂存区
git add 文件名
将文件提交到工作区
git commit -m "注释(例如这是发行的版本1)" 文件名
查看状态
如果暂存区没有文件被提交显示:
$ git status On branch master nothing to commit, working tree clean
如果暂存区有文件
$ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: Demo03.txt
git status
查看日志:
git log
出现的日志信息:

这个就是一时间为标准,由近到远的记录。
对于log他的展示方式和作用有很大的可操作性:
//历史记录过多是,会出现分屏的的效果 下一页:空格 上一页:b 最后一页会显示:end 退出:q
其他的日志展示方式:
-
git log
-
git log --pretty=oneline
-
git log --oneline
-
git log reflog

-
reset:前进或者是后退命令
git reset --hard ** **** 就是直接返回指定版本 这个是工作区,暂存区,本地代码仓库都会变。hard是最常用的

- 演示效果:

- 使用命令返回到aaa阶段:

-
mixed参数: 本地库的指针移动的同时,重置暂存区,但是工作区不动
soft参数:
本地库的指针移动的时候,暂存区,工作区都不动
删除文件:
使用命令rm:
直接演示删除的是test.txt文件:

之久就是将操作同步到暂存区和本地库:

将删除的文件开始恢复:

通过这个操作其实我们是可以发现我们的返回时返回的这个时间点,所以文件也是根据时间点截取的。
总结: git diff [文件名] ---》 将工作区中的文件和暂存区中文件进行比较
git diff --->比较工作区中和暂存区中 所有文件的差异
git diff 历史版本 ---》比较暂存区和本地库中内容
分支:
查看分支: git branch -v

创建分支:git branch branch1

切换分支:
git checkout branch1

合并分支并处理冲突:git merge chanch1

出现冲突,因为是在同一个文件的同一行出现的文件修改问题,解决的方法是公司内部沟通解决。
注意现在显示的是合并中,需要将解决之后的文件重新提交。


这个最终的提交是能带有文件的名字的

创建远程库:
使用的是gitHub 他创建远程库的时候,只是按着图形化界面就可以了。
https://github.com/Time-Passer-By-HDK/GitResp2.git这是你自己的远程库的地址。但是这个地址有点长,所以我们的git提供了起别名的方式,
别名:git remote add ++origin++ https://www.github/time-passer-by-HDK/GitResp2.git (origin他只是一个别名,这个随便)


fetch:根据这个地址获取数据
推送操作:
push:根据这个地址推送数据
推送:git push origin master (一个是远程库的别名,一个是推送的分支的选择)
克隆操作:
git clone +https://地址
就是将远程操作的数据拉取到本地
并且会为我们创建别名。
邀请加入团队:
如果不是团队中的人,是不可以直接提交代码的,需要项目负责人的拉取,现在拉取的方式还在查找。
如果我们修改之后我们的本地库的数据和远程代码仓库是不一样的,所以就要再次拉取数据.
拉取分为两步:
fetch操作:
git fetch origin master
fetch 这个是抓取的操作,他就只是将数据进行了读取,将文件下载到本地,可以直接合并。并没有直接将数据放置到咱们的工作区。
抓取之后可以去远程库去查看文件时候抓取成功:
git checkout origin/master
如果发现内容正确,就开始合并操作。
merge操作:


其实上面的两部合起来就是pull操作:
git pull origin master
如果是比较慎重的操作的话还是建议使用上面发步的操作,如果代码比较简单可以直接简单的使用pull操作
协同开发操作时的解决冲突的方式(这个是针对一个分支的不同的人的操作):
就是如果是两个人对同一位置进行操作的话,就会产生这个冲突,
如果是冲突的话就是先将远程的拉取下来,在进行修改和上传
还是拉取下来之后认为的选择,之后再上传,只要是解决重入的再commit提交时都是不带文件名的。
跨团队操作:
如果是B公司与A公司合作,首先是将A公司的数据放到自己的远程库中,如果是B的员工提交代码的话,休要A的项目负责人审核。
B公司员工做的事情:
-
进入到账号之后,将A公司的项目的地址输入,之后点击fork操作
-
之后就会出现这个项目,再将这个项目克隆到本地。
-
之后就可以开始自己的工作了
-
之后就是将代码提交到自己的远程库(B公司的)
-
之后就是直接再github操作创建一个新的请求,让A公司审批
-
A的项目负责人审核
现在我们每次的push操作因为再windows系统中因为是有这个凭据管理器,所以不需要每次都输入密码,但是如果是别的系统的话,每次的提交都是需要输入密码的,这个其实是很不方便的。
在实际开发中,我们使用的是SHH的方式:
这个需要我们自己的设置也解决这个问题,
1.首先是进入到用户的主目录中 其实就是~ 这个目录,指令时cd ~

2.之后是执行命令生成一个.shh目录
ssh-keygen -t rsa -C 2827571574@qq.com

输入命令之后进行三次的回车确认,这个其实就是让你去选择使用他的默认值。
之后就会出现这个文件夹

3.打开文件id_rsa.pub文件,将里面的内容直接复制。
4.打开GitHub,将内容放置到Settings里面。

5.生成密钥之后,开始正常的操作,就是正常的起别名,之后提交什么的
IDEA集成操作:
在使用这个提交时显示错误:
$ git push origin_SHH master ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
解决方案:
如果没有配置文件就自己写一个:
vim config
创建一个配置文件,之后换一个端口使用。
Host github.com User git Hostname ssh.github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa Port 443 Host gitlab.com Hostname altssh.gitlab.com User git Port 443 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa
保存退出之后检查是否成功:
这个问题就解决了。

IDEA整合GIT
将Git整合:

将本地库初始化:
点击VCS 之后开始选择创建的工具:

发现文件中已经有了git文件

在创建文件之后弹出窗口,询问时候添加到仓库中:

注意之后是将这个项目添加到暂存区,之后就是简单的提交

在控制台查看数据:

查看日志:

现在只是将代码提交到本地库,并没有提交到远程库,所以现在需要将代码提交到远程库,但是我们还是使用刚刚的远程库的话,就会出现一个问题,这两个库是相关的库,所以在拉取时,他的语法是:
git pull origin master --allow-unrelated-histories 哪个别名随便用,可以直接是地址
git push -u origin master -f 这是推送的命令,添加-f 就是直接覆盖
通过命令之后就可以发现现在的文件夹中出现了所有的文件。
现在信息就是同步的了。
一般在开发中都是先拉取,在进行push操作。
项目中的克隆操作:
在实际开发中我们都是先将项目经理的项目克隆到本地,之后再对于代码进行开发和编写
使用idea的话如何解决版本冲突:
如果出现冲突,会先让你合并,这个具体还是让人选择。这里会出现选项,让开发者选择是选择你的还是选择别人的,这个具体的选择的方式就是自己做主了。
但是如何避免冲突呢:
一般在开发中都是先拉取,在进行push操作。