场景:备份、代码还原、协同开发、追溯代码与时间
SVN: 集中式
Git:分布式
以下是实际操作:
无论是添加还是修改,文件会首先在暂存区,只有经过commit之后,才会进入仓库。
在电脑的C:\Users\wy目录下创建.bashrc文件,并在文件中输入以下内容:
#用于输出git提交日志
alias git-log="git log --pretty=oneline --all --graph --abbrev-commit"
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
直接使用上面的别名:
git log
git-log
通过场景.gitignore文件,选择不会提交的文件
合并分支:
删除分支:
git branch -d b1
git branch -D b1
创建独立分支
切换分支:
然后在master分支同样修改r1.txt文件,并提交。
将dev分支合并到master分支,出现版本冲突:
修改合并文件,最终再次提交:
常用的托管服务:github、gitee、gitlab
设置远程仓库的SSH访问密钥:按照git官网获取
这里需要在gitee的SSH密钥中配置上述获取的连接密钥,连接才能成功。
(1)查看远程仓库
git remote
(2)推送到远程仓库
git push [-f][--set-upstream]
[-f]:强制覆盖
[--set-upstream]:推送到远端的同时并建立起和远端分支的关联
git push origin master
(3)克隆
git clone 远程仓库地址
(4)从远程仓库拉取和抓取
git fetch:仅仅只抓取到本地,不会进行合并
git pull:抓取到本地并且合并
(5)合并冲突以及解决
开启的第一个窗口(用户):
开启的第二个窗口(用户):
然后和上述一样,推送到远程仓库
冲突解决:
先根据冲突提升,找到file02.txt文件
最后需要在另一个窗口拉取最新的修改的文件,这样这两个窗口的内容就能保持一致。
一般如果电脑中装有git可执行文件,那么idea的setting配置中的git利用会自动获取其地址
同时,需要将Idea与远程仓库绑定
绑定本地仓库:
提交的时候会提示定义远程仓库地址:
# Compiled class file
*.class
# Eclipse
.project
.classpath
.settings/
# Intellij
*.ipr
*.iml
*.iws
.idea/
# Maven
target/
# Gradle
build
.gradle
# Log file
*.log
log/
# out
**/out/
# Mac
.DS_Store
# others
*.jar
*.war
*.zip
*.tar
*.tar.gz
*.pid
*.orig
temp/
屏蔽掉那些不需要上传到远程仓库的文件
提交的过程中,可以先提交到本地仓库,然后在push到远程仓库
当两个开发者同时对一份代码中的类进行修改时,就会出现提交冲突。
这个时候,一般的操作应该是,先拉取远程仓库的代码,然后看是否有冲突,如果有冲突,就解决冲突,如果没有冲突,就直接push即可。
关键:先拉取分支中的最新代码,然后在push自己的代码到远程仓库