• Git学习笔记3


    Git分支管理

    先来考虑一个问题: 开发者A开发软件的某一个功能模块, 还没有开发完成,但害怕进度丢失就提交。假设另一位开发者B并不知道A没有完成, 而直接使用了A开发的文件,这造成了问题。

    解决方法: 开发者A创建一个属于自己的分支,这个分支只属于A,不会影响其他人。开发完成后,合并到项目主分支即可。

    分支可以看做是平行空间:

    查看分支:

    默认只有一个分支,前面*代表为当前分支。

    查看分支:

    创建分支:

    1. [root@git-server GitTest]# git branch dev
    2. [root@git-server GitTest]#
    3. [root@git-server GitTest]# git branch
    4. dev
    5. * master

    切换分支:

    使用 git checkout 分支名 来切换分支。

    1. [root@git-server GitTest]# git checkout dev
    2. Switched to branch 'dev'
    3. [root@git-server GitTest]#
    4. [root@git-server GitTest]# git branch
    5. * dev
    6. master

    合并分支:

    1)在dev分支上新开发了一个代码文件,添加并提交。

    1. [root@git-server GitTest]# echo "New feature" >> 5.py
    2. [root@git-server GitTest]#
    3. [root@git-server GitTest]# git add 5.py
    4. [root@git-server GitTest]#
    5. [root@git-server GitTest]# git commit -m "New feature 5.py"
    6. [dev 51b959c] New feature 5.py
    7. 1 file changed, 1 insertion(+)
    8. create mode 100644 5.py
    9. [root@git-server GitTest]#
    10. [root@git-server GitTest]# git checkout master
    11. Switched to branch 'master'
    12. [root@git-server GitTest]#
    13. [root@git-server GitTest]# cat 5.py
    14. cat: 5.py: No such file or directory

    切换到master分支,没有找到5.py。

    2)合并分支,再查看,就能在master分支上查看到了。

    1. [root@git-server GitTest]# git merge dev
    2. Updating 8153d25..51b959c
    3. Fast-forward
    4. 5.py | 1 +
    5. 1 file changed, 1 insertion(+)
    6. create mode 100644 5.py
    7. [root@git-server GitTest]# cat 5.py
    8. New feature

    分支冲突:

    有些复杂的情况会造成冲突,这个时候git就不能帮我们自动的合并分支。我们就要手动处理冲突。

    1)在dev上修改文件:

    1. [root@git-server GitTest]# git checkout dev
    2. Switched to branch 'dev'
    3. [root@git-server GitTest]# echo "冲突测试" >> 5.py
    4. [root@git-server GitTest]#
    5. [root@git-server GitTest]# cat 5.py
    6. New feature
    7. 冲突测试

    2)提交分支上的修改:

    1. [root@git-server GitTest]# git add 5.py
    2. [root@git-server GitTest]# git commit -m "冲突测试"
    3. [dev 844bd61] 冲突测试
    4. 1 file changed, 1 insertion(+)

     

    3)切换master分支,也修改相同的文件:

    1. [root@git-server GitTest]# git checkout master
    2. Switched to branch 'master'
    3. [root@git-server GitTest]#
    4. [root@git-server GitTest]# echo "哈哈" >> 5.py
    5. [root@git-server GitTest]#
    6. [root@git-server GitTest]# cat 5.py
    7. New feature
    8. 哈哈

    4)然后提交master分支上的修改:

    1. [root@git-server GitTest]# git add 5.py
    2. [root@git-server GitTest]# git commit -m "冲突测试"
    3. [master 4721701] 冲突测试
    4. 1 file changed, 1 insertion(+)

    5)合并dev分支到master,就会出现冲突了。

    1. [root@git-server GitTest]# git merge dev
    2. Auto-merging 5.py
    3. CONFLICT (content): Merge conflict in 5.py
    4. Automatic merge failed; fix conflicts and then commit the result.

    6)手工解决冲突:

    git使用<<<<<<<<<,=========,>>>>>>>>符号分割冲突的内容,手动删除这些符号,并修改成你想要的内容。

    1. [root@git-server GitTest]# cat 5.py
    2. New feature
    3. <<<<<<< HEAD
    4. 哈哈
    5. =======
    6. 冲突测试
    7. >>>>>>> dev
    8. [root@git-server GitTest]# vim 5.py
    9. [root@git-server GitTest]#
    10. [root@git-server GitTest]# cat 5.py
    11. New feature
    12. 冲突测试

    7)解决冲突后添加并提交,最后再合并。

    1. [root@git-server GitTest]# git add 5.py
    2. [root@git-server GitTest]# git commit -m "冲突解决"
    3. [master b956e9d] 冲突解决
    4. [root@git-server GitTest]#
    5. [root@git-server GitTest]# git merge dev
    6. Already up-to-date.

    删除分支:

    使用git branch -d 分支名来删除分支。==注意:== 不能删除当前使用的分支.

    1. [root@git-server GitTest]# git branch
    2. dev
    3. * master
    4. [root@git-server GitTest]#
    5. [root@git-server GitTest]# git branch -d dev
    6. Deleted branch dev (was 844bd61).
    7. [root@git-server GitTest]#
    8. [root@git-server GitTest]# git branch
    9. * master

    感觉这样学下来,思路还是很清楚的。

    之前自己看书操作,总感觉有点乱。这样整理了,思路也是很明确的。

  • 相关阅读:
    Redis第二章_实战篇_短信登录+缓存策略+秒杀+分布式锁>>
    DNS1(Bind软件)
    sop流程图怎么做?sop流程图可以用什么做好?
    低代码+知识管理,打造智能化供应链管理系统
    【Web开发】Python实现Web表格功能(D-Tale, Pandas, Flask)
    SpringCloud-01
    【附源码】计算机毕业设计SSM三味书屋图书借阅与售卖系统
    CVE-2022-39227jwt伪造
    vue3 - pinia 中的 storeToRefs
    JavaScript基础大总结
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/133020948