Git简介
Git 是一个免费的、开源的分布式版本控制系统。那么他有什么用处呢?举个例子:
比如我们在做课程设计的时候,总是害怕在原来的代码上进行修改会让整个系统跑不起来,于是我们会将源代码复制一份,在复制后的文件中进行下一个功能或者模块的开发,如果我们有许多的模块要开发,那么我们就要将同一个文件夹复制许多份,复制多了我们可能都不知道哪个文件夹里面具体包含了哪些功能,这个时候Git就派上了用场,我们只需要在开发好一个功能后在Git上提交一次(打一个版本),然后继续下一个功能的开发,如果下一个功能出错,我们想要重新进行开发,那么我们就可以使用Git回退到之前的版本,再次进行开发。Git的每一个提交叫做一个版本,因此他叫版本控制,这样就不用再复制很多次文件了,而且有了Git,我们也可以对文件不同提交的状态简要了解,这样就可以提高我们的开发效率。
当然,这只是Git中一个小小的作用,他还有很多用处以及优点。
Git安装
-
安装网址 : https://git-scm.com/downloads -
下载安装包后一路Next,中间只需要修改一下安装路径即可 -
安装好后在桌面或者文件夹里面右击,然后点击Git Bash Here,在弹出的命令窗口输入git --version,若输出版本信息证明安装成功
Git在本地的基本操作
1. 初始化本地仓库:(仓库其实就是使用git进行管理的文件夹) 对应命令:git init
在本地创建一个文件夹,进入文件夹,右击鼠标点击Git Bash Here打开Git的命令窗口,输入命令 git init 进行初始化,初始化成功后会在 当前目录生成一个.git 目录文件,不要删除及修改。
2. Git的存储流程:
代码工作区—>执行 git add —>暂存区(临时存储)—>执行 git commit—>本地库(历史版本)
-
工作区(也就是上面新建的文件夹)、暂存区和本地仓库,逻辑上就是本地计算机。 -
当我们新建一个文件时,文件位于工作区,处于已修改(modified)状态,表明文件已进行了修改,但还没有提交保存; -
通过命令 git add 将其添加到暂存区,文件是已暂存(staged)状态,表示把已修改的文件放到 下次提交时要保存的清单中; -
通过命令 git commit 将文件放入本地仓库,文件为已提交 (commited)状态,表示该文件已经被安全地保存在本地数据库中,到这一步可以说是成功生成了一个新的版本。
远程仓库用来将本地仓库上传到网络,实现备份、共享和合作。
3. Git的基本命令
git add 文件名
git add . (将当前目录下的文件全部添加到暂存区)
git commit -m “提交注释”
git status
- 查看文件修改对比差异:将工作区中的文件和暂存区进行比较
git diff 文件名
git reflog
最上面的是最近一次操作,每一行最前面的7位数字/字母为版本号
git reset --hard 版本号
rm 文件名
将文件添加到缓存区中,然后提交,就是彻底删除
对于删除文件也可使用 reset 命令恢复,因为之前的版本中它可能还存在
- 在版本回退那里,已经知道每次提交,git 都会把他们串成一条时间线,这条时间线就
? 是一个分支。截止到目前,只有一条时间线,在 git 里,这个分支叫主分支,即 master。
-
切换分支即可以理解为切换时间线。 -
在版本控制过程中,使用多条线同时推进多个任务。每条线成为一个分支。
创建分支:git branch [分支名]
查看分支:git branch –v
切换分支:git checkout [分支名]
合并分支( merge/rebase ):
git checkout [接受合并的分支名]
git merge [待合并的分支名]
**删除分支命令:**git branch –d [分支名]
Git在远程的基本操作
1. 克隆远程仓库到本地:
git clone 仓库地址
此处是将整个仓库克隆到本地,不需要我们在本地进行git init
2. 将本地仓库所有内容上传到远程仓库
git push [远程仓库地址] [远程仓库分支]
3. 拉取远程库内容
git pull 远程仓库地址
4. 冲突问题解决
造成冲突的原因是:比如,两个人在合作开发,目前远程仓库的版本以及两人本地的版本都是A,此时一个人写了一些代码后进行提交,使得远程仓库的版本变成了B,而另一个人提交时,由于他是在A版本的基础上做出的修改,而此时远程仓库的版本不是A,这是git就不会让他提交。
如果提交失败,解决的总体思路就是:
- git pull
- 修改
- git add .
- git commit
- git push
我觉得主要有下面几种情况:
- 其他人在远程仓库删除了某个文件,但是本地还有:
直接:
- git pull
- git add .
- git commit
- git push
- 其他人在远程仓库增加了某个文件:
直接:
- git pull
- git add .
- git commit
- git push
- 其他人在远程仓库修改了某个文件内容,本地也修改了这个文件
比如:
本地仓库中该文件内容为:“本地仓库的内容”
远程仓库中为:“远程仓库的内容”
则git pull之后就变成了:
此时,手动选择文件中的你想要的内容,然后 add commit push 即可
在IDEA中使用Git
文件名字为红色代表未被git工具进行管理
? 绿色代表使用git进行了管理,但是没有打过版本(本地仓库没有没有它)
? 蓝色代表进行了修改,但是没有提交仓库
? 白色代表一切正常
1. 使用IDEA提交代码
-
创建本地仓库: -
将项目添加到缓存: -
提交项目: -
推送到远程仓库:
如果未添加远程仓库,则要添加远程仓库:
可能会出现上传不成功的现象,需要执行以下命令:
-
git pull origin master --allow-unrelated-histories 把远程仓库中的内容 pull 到本地工作目录 -
git push -u origin master -f 在 pull 下来的项目中做完修改后,通过以上命令push到远程仓库了
2. 在IDEA中用git获取新项目代码 -
选择从git导入项目 -
克隆远程仓库:
3. 解决冲突问题
-
现在远程模拟另一个人进行修改: -
然后本地进行修改: -
push时会弹出以下窗口:
cancle是取消,merge是进行合并,rebase恢复到原来
我们点击合并按钮
弹出的窗口中会显示发生冲突的文件
选择一个文件,再次点击右边的Merge
左边是本地修改后的状态,右边是远程的状态,中间是他俩修改之前相同的状态
如下图,可以点击箭头选择想要的文件状态
这里是把两边都合并了进去
最后再次add,commit,push就OK了
|