文章目录
一、Git&GitHub
1、版本控制工具应该具备的功能
协同修改
多人并行不悖的修改服务器端的同一个文件。
数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空
间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文
件系统快照的方式。
权限控制
对团队中参与开发的人员进行权限控制。
对团队外开发者贡献的代码进行审核——Git 独有。
历史记录
查看修改人、修改时间、修改内容、日志信息。
将本地文件恢复到某一个历史状态。
分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
2、2Git 官网
官网地址:https://git-scm.com/
3、Git 的优势
大部分操作在本地完成,不需要联网
完整性保证
尽可能添加数据而不是删除或修改数据
分支操作非常快捷流畅
与 Linux 命令全面兼容
4、Git 安装
5、Git 结构
二、idea中GIT操作
一、idea配置git
二、拉取远程main分支
D:\gitRepository\gitlab-test2(工程跟目录)\.git\config以下代码保证不写死分支
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = http://zhangsan:[email protected]/zhangsan/gitlab-test2.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
三、将maser合并到远程main分支
合并两个个没有关系的分支
Could Not Merge master: refusing to merge unrelated histories
以上报错就是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。
我们要想办法将这两个仓库强制建立联系,
步骤1、配置本地的powershell.exe
步骤2、配置允许不相关分支合并
步骤3、合并分支
步骤4、push到远程仓库
四、创建分支
想在哪个分支上创建新的分支,右键相应分支,会在本地创建新分支,之后可以直接push到远程仓库,创建远程分支
1、创建分支
2、push
五、合并相关分支
步骤1、合并分支
步骤2、push
六、克隆代码到本地
七、回滚
步骤1、复制回滚目标版本的值
步骤2、回滚
步骤3、force push
八、回滚方式【soft,hard,mixed】
1.soft
–soft参数告诉Git重置HEAD到另外一个commit,但也到此为止。如果你指定–soft参数,Git将停止在那里而什么也不会根本变化。这意味着index,working copy都不会做任何变化,所有的在original HEAD和你重置到的那个commit之间的所有变更集都放在stage(index)区域中。
2.hard
–hard参数将会blow out everything.它将重置HEAD返回到另外一个commit(取决于~12的参数),重置index以便反映HEAD的变化,并且重置working copy也使得其完全匹配起来。这是一个比较危险的动作,具有破坏性,数据因此可能会丢失!如果真是发生了数据丢失又希望找回来,那么只有使用:git reflog命令了。makes everything match the commit you have reset to.你的所有本地修改将丢失。如果我们希望彻底丢掉本地修改但是又不希望更改branch所指向的commit,则执行git reset --hard = git reset --hard HEAD. i.e. don’t change the branch but get rid of all local changes.另外一个场景是简单地移动branch从一个到另一个commit而保持index/work区域同步。这将确实令你丢失你的工作,因为它将修改你的work tree!
3.mixed(default)
–mixed是reset的默认参数,也就是当你不指定任何参数时的参数。它将重置HEAD到另外一个commit,并且重置index以便和HEAD相匹配,但是也到此为止。working copy不会被更改。所有该branch上从original HEAD(commit)到你重置到的那个commit之间的所有变更将作为local modifications保存在working area中,(被标示为local modification or untracked via git status),但是并未staged的状态,你可以重新检视然后再做修改和commit
九、解决IDEA配置.gitignore不生效的问题
原因:
.gitignore只能忽略未被track的文件,而git本地缓存。如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法:
先把本地缓存删除(改变成未track状态),然后再提交。使用以下几个命令即可快速解决
注意:以下命令需要在你项目中右键点击 Git Bash Here进行命令窗口输入
git rm -r --cached .
git add .
git commit -m ‘update .gitignore’
然后重新回到IDEA提交,多余的文件就会消失啦~~~
问题总结:
README.md, 本地仓库和远程仓库进行关联
1、push代码遇到 Push to origin/master was rejected
Terminal中执行如下
1、打开terminal
2、git pull
3、git pull origin master
4、git pull origin master --allow-unrelated-histories
5、重新push,发现push成功
再重新push
2、合并分支遇到 Could Not Merge master: refusing to merge unrelated histories
Terminal中执行如下
git merge master --allow-unrelated-histories
然后重新合并
参考文章:https://blog.csdn.net/chao821/article/details/81033003