文章目录
git基础
弄清楚工作目录、index暂存区、repository提交历史
git配置
基本配置设置与查看
-
查看git全局配置:
git config --global -l
-
设置命令别名:
-
设置默认编辑器为vim或gedit:
git config --global core.editor vim git config --global core.editor gedit
代理设置
设置git clone代理:
如果发现你在用git clone
下载代码的时候奇慢无比,你可以尝试配置代理:
git config --global http.https://github.com.proxy socks5://127.0.0.1:1086
git config --global https.https://github.com.proxy socks5://127.0.0.1:1086
将后面的服务器地址和端口号换成你的代理服务器地址和端口号即可。
取消设置:
git config --global --unset http.proxy
git config --global --unset https.proxy
与远程分支相关
查询本地分支关联的远程分支
查看本地分支关联(跟踪)的远程分支之间的对应关系,本地分支对应哪个远程分支
git branch -vv
关联远程分支
git remote show
如果有关联的远程分支(一般为origin),则会输出:origin
,否则不会有任何输出;
或者直接执行:
git remote show origin
如果有关联的远程分支(一般为origin),则会输出远程分支的详细信息,包括远程分支地址,否则会输出错误提示。
2、本地仓库与远程仓库做关联:
如果本地分支没有与远程分支做关联,使用git push
需要指明远程分支名,如:
git push origin dev
如果事先使用:
git br --set-upstream dev origin/dev
就可以直接使用:
git push
或者在push
的同时使用set-upstream
,push
的同时进行关联:
git push --set-upstream origin zhanghaiming-dev
更新远程分支
场景:远程更新了新的分支,本地还没有:
git fetch
TODO:
git测试:
1、测试如何关联远程?
2、测试如何查看远程分支与本地分支关联情况?
3、测试推送本地分支时,如果没有事先进行关联,推送会成功吗,能推送到指定分支吗?能拉取指定分支进行合并吗?
项目开发分支合并操作流程
在需要将自己开发的分支(假设为dev)合并到主分支master之前,
首先切换到master分支,git pull拉取最新代码,
然后回到dev分支,在dev分支的基础上建立一个merge分支用于合并以及解决冲突用,
然后git merge master,此时在merge分支上产生合并并解决冲突,
此时merge分支为最新分支,
回到master上,git merge merge,即将master更新到merge分支状态,完成合并;
回到dev分支,git merge merge,即将dev也更新到merge分支状态,因为merge分支为合并最新状态,此时dev和合并后的master分支一致;
继续在dev分支上进行开发。
git merge vs git rebase:
https://segmentfault.com/a/1190000012897637?utm_source=sf-related
git工作流:
https://www.jianshu.com/p/b357df6794e3
分支合并常用命令:
git diff lidar_lane --stat
git diff lidar_lane -- perception_alg/lidar_lane/include/data_center.h
git diff详解:
git diff:
git reset详解:
https://www.4spaces.org/git-revert-reset/
https://www.pianshen.com/article/47481163923/
案例分析
1、如何实现在自己分支上开发,始终保持自己分支与远程分支原有的地方相同,远程分支有人更新的地方在我开发的分支上也更新,但保持我的分支新增加的内容仍然保留?
git co master
git pull
git co my_dev
git co -b my_dev_merge
git merge master ## 将我开发的分支与master同步,此时如果修改同样地方,应该会发生冲突,解决冲突,保留我新增的,确定哪些是远程更新的
git co -b my_dev_merge_lite ## 创建一个精简版分支删除掉不想推到远程的修改,保证在远程上体现最小修改
git co master
git merge my_dev_merge_lite
git push
2、头指针分离案例
在dev分支下正常开发,commit了一些历史记录,如果想退回到过去的某一次提交进行开发,但是不想丢掉已经提交的历史,就不能用git reset,可以用git checkout,但此时就会出现头指针分离;
此时可以正常在分离指针的情况下进行开发,commit,然后在切换回dev分支时,会提示:
警告:您正丢下 1 个提交,未和任何分支关联:
91d200a add new line
如果您想要通过创建新分支保存它,这可能是一个好时候。
如下操作:
git branch <新分支名> 91d200a
切换到分支 'test'
此时只需要按提示执行:
git branch new_branch 91d200a
就可以建立一个新的分支跟踪刚才的修改;
本案例需求正确步骤:
直接在指定commit_id的地方新建一个分支,然后切换过去即可
git branch new_branch <commit_id>
git checkout new_branch
3、合并冲突撤销
产生冲突后还没有进行提交,可以直接执行:
git merge --abort
恢复合并前状态;
或者直接使用git reset --hard <commit_id>
回退到指定位置;
远程分支
https://kuang.netlify.app/git/git%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93.html
-
切换到远程分支
本地没有任何远程分支,远程有dev分支,创建一个dev本地分支与远程dev分支关联:
git co dev 或 git checkout -b dev origin/dev
-
创建远程分支
将本地dev分支创建一个远程分支并推送:
git push --set-upstream origin dev 或 git push origin dev
-
如何删除远程分支
git push --delete origin branchName
-
删除本地dev分支与远程分支的关联
git co dev git branch --unset-upstream
-
如何回退远程分支
-
如何查看领先的提交与修改
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121213.html