合并冲突
在修改公共文件的时候可能会产生冲突,比如大家都可以在dev操作,你修改了git.py 文件,另外一个同事也修改了git.py 文件,就会出现冲突的情况。
比如: 开发人员A在dev修改了git.py 先切换到 dev 分支
git branch dev
1、添加 add2 方法
def add():
print('git大法好')
def add1():
print('打狗棒法')
def add2():
print('打狗棒法真的好耶')
2、添加到暂存区
git add git.py
3、提交到仓库区
git commit -m '添加add2方法'
4、同步到服务器
git push origin dev
开发人员B也在dev分支修改了 git.py
1、先克隆 项目
git clone git@gitee.com:huangguifeng/django_blog.git
2、进入到项目目录
cd cd django_blog/
3、创建dev分支
git branch dev
4、跟踪服务器上的dev分支
git branch --set-upstream-to=origin/dev
5、同步服务器上的代码
git pull
6、修改git.py
def add():
print('git大法好')
def add1():
print('打狗棒法')
def add2():
print('打狗棒法真的好耶')
def add3():
print('少林功夫好')
7、添加到暂存区
git add git.py
8、提交到仓库区
git commit -m '添加add2方法'
9、同步到服务器
git push origin dev
这里可能都不会产生冲突,但是如果A发现刚才改的方法好像有点问题,回去从新修改下,再提交就会提示: 更新拒绝,原因是有人修改过了,需要先同步。提示我们使用 git pull
同步服务器dev分支:
git pull
同步之后就会提示我们那个文件有冲突。我们需要找到有冲突的文件手动修改冲突。
打开文件git.py
def add():
print('git大法好')
def add1():
print('打狗棒法')
def add2():
<<<<<<< HEAD
print('打狗棒法真的好耶,真的')
=======
print('打狗棒法真的好耶')
def add3():
print('少林功夫')
>>>>>>> 8f81b29cf10eb8aa11e68b5c9810e58470a4ee20
<<<<<<< HEAD表示当前版本的内容,=======后面,表示>>>>>>> ae79e1fd93d0d9e7f8ca36481c611a2b4a38a9db版本的内容,发现两句代码并不冲突,都需要保留,但add2方法有两句print,如果不是自己写的,不能确定是否保留,可以与编写该语句的人员沟通,当前代码更改后如下
def add():
print('git大法好')
def add1():
print('打狗棒法')
def add2():
print('打狗棒法真的好耶,真的')
print('打狗棒法真的好耶')
def add3():
print('少林功夫')
冲突解决完成再次提交推送服务器,就不会出错了。
git add ./
git commit -m '修改add2方法,解决突出'
git push origin dev
历史版本
查看历史版本记录
git reflog
HEAD表示当前版本,也就是最新的提交的版本,上一个版本就是HEAD^,再上一个版本就是HEAD^^,也可以使用 HEAD~2,接数字表示第几个版本。
对比工作区和仓库区中某版本某文件的不同:
git diff HEAD -- 文件名
例:
git diff HEAD^ -- git.py # 对比上一个版本,与当前工作区的内容的区别
+ 表示当前工作区,比仓库区对比版本多的内容
- 表示当前工作区,比仓库区对比版本少的内容。
版本回退
git reset HEAD^或版本号
例:
git reset HEAD^
或者
git reset 15a237e
git reset 不是直接回退到工作区,而是先回退到暂存区。可以使用 git status 查看暂存区内容。
暂存区的内容恢复到工作区
git checkout -- git.py
恢复之后查看git.py的内容就是前一个版本的内容。
def add():
print('git大法好')
def add1():
print('打狗棒法')
def add2():
print('打狗棒法真的好耶,真的')
~