设为首页 收藏本站
查看: 839|回复: 0

[经验分享] git 使用经验与技巧总结 (不断更新中)

[复制链接]

尚未签到

发表于 2018-1-15 13:34:05 | 显示全部楼层 |阅读模式

  • 首先将当前修改提交到本地当前master分支, git commit -m "this is comment"
  • 然后使用git remote add remote_repo_name url ,来添加新的remote repo, git remote add new_repo url_from_igerrit
  • 然后再用git fetch remote_repo_name 来拉取代码 和 git branch 及其配置到本地,git fetch new_repo
  • 然后,git checkout -b xx local_url 切换到新分支,  git checkout -b develop new_repo/develop
  • 然后再将master分支的修改合并到当前分支上, merge命令自动commit了合并后的代码到新的分支, git merge master
  • 然后再用git log 查看下更新的是否生成了 change-id, 否则需要拷贝commit-msg 到当前.git/hook目录下, git log  (仅针对持续集成服务器需要根据change-id来分辨提交id的情况)
  • 最后使用git push remote_repo_name  local_branch_name:/refs/for/remote_repo/branch_name 。 git push new_repo develop:refs/to/remote_develop_branch
  问题二:
有时为了保存多个工作状态,会使用多次commit (4次),将状态提交到本地仓库,但是在完成编码后,本想git push 最后的状态给时,本地的每次提交都会在远程仓库也有一个对应的提交(也有4次),造成服务器上出现不必要的版本, 如何处理此问题?使得本地4次,远程1次?思路: git似乎没有直接方法处理这个问题,不过可以考虑在本地建立多分支。 即: 1. 为本地的四次提交建立一个分支名,以保证其状态得以记录。2. 然后,git reset --soft commit-id 将远程Head指向到4次提交前的状态。3. 本地再次提交,此时由于Head指向四次前,而working Directory是四次修改提交之后的,此时git commit 就可以完成一次完成四次的提交。这样既保证了本地有个分支记录了四次历史,同时保证服务器上只更新了一次,且状态一致。 命令如下:1. git checkout -b branch_name ;  先命名新分支,保证当前分支的四次提交以后即使不记得commit>2. git reset --soft commit-id; 指定四次前的id,回退HEAD, 而index和working directory 都是最新的。此时可以进行commit。3. git diff ; 查看下状态4. git log; 确认git 提交历史5. git commit -m "4 in one"6. git push remote-name local_branch:/refs/for/remote_branch 以上错误。应该是这样:首先git log 查看最后一次的commit>  情形三: 提交时,出现代码冲突。如何解决?方法一: 临键分支, 然后会退到上一次commit, 再pull 最新代码, 然后再与当前分支 merge, 然后再提交。 情形四: 如果提交代码到review服务器后,未能及时通过review,而此时远程仓库已经出现了很多提交,导致当前提交无法merge, 怎么办?1. 使用git checkout -b newBranchName 复制当前分支,以保证自己之前的代码提交保持一个备份。2. git checkout master切换回原来的分支,并git reset --hard xxxxx,退回到上一次提交。3. 使用 git pull origin master 来拉取服务器上的最新代码。4. 使用git cherry-pick xxxxx_commit_idXXXXX  合并自己的代码到最新的状态上, 手动解决本地merge冲突。5. git push origin master:master 即可。  情形五: 软件有多个发行版, 其中一个发型版中更新了一个功能,想把这个功能提交到其它发行版的远程仓库中, 此时需要怎么办?1. cherry-pick 功能可以选择一个commit-id 来合并,但是只能在同一个仓库的不同分支。2. 如果通过添加 git remote add iauto repo_addr_url 的方式的话, 会与本地出现冲突。3.  通过git remote add  可以将不同远程仓库的分支放到同一个本地仓库的不同分支, 此时只要解决了本地冲突就可以解决了。git checkout -f 此-f选项可以强制删除本地冲突, 以远程为标准。--此时再用 git cherry-pick Done.    git 的强大之处:时空倒流git 的时空倒流法依赖以下三个命令:1. git reset : --soft --mixed  --hard 三种策略2. git branch :3. git checkout : git的强大之处在于1. 可以随处建立分支,使得不同功能的开发不会依赖,这样 不同版本的代码可以完整地保留下来。2. 可以随时将代码版本倒流到某个正确无误的时刻, 时光倒流。3. 可以利用reset 将本地的冗余提交的版本去掉。 4. 可以使用stash 暂存一系列的零时操作。 空间倒流。5. 可以让用户在本地或者远程的不同分支上轻松切换,版本的管理非常灵活。(空间倒流)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435334-1-1.html 上篇帖子: ssh-key 与 git账户配置以及多账户配置 下篇帖子: git 添加到环境变量
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表