git使用技巧汇总

git 使用技巧总结
说明: 本地repo已经有啦,对应的远程repo 为tiger, 本地分支为master。


问题一:
当拉取代码的remote repo仓库为tiger, 而现在要将修改push到remote repo的 develop分支该如何?

思路:拉取新的remote_develop_repo_url, 将原有的代码合并到当前分支, 然后再提交到 remote_develop_repo_url。

  1. 首先将当前修改提交到本地当前master分支, git commit -m "this is comment"
  2. 然后使用git remote add remote_repo_name url ,来添加新的remote repo, git remote add new_repo url_from_igerrit
  3. 然后再用git fetch remote_repo_name 来拉取代码 和 git branch 及其配置到本地,git fetch new_repo
  4. 然后,git checkout -b xx local_url 切换到新分支, git checkout -b develop new_repo/develop
  5. 然后再将master分支的修改合并到当前分支上, merge命令自动commit了合并后的代码到新的分支, git merge master
  6. 然后再用git log 查看下更新的是否生成了 change-id, 否则需要拷贝commit-msg 到当前.git/hook目录下, git log (仅针对持续集成服务器需要根据change-id来分辨提交id的情况)
  7. 最后使用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 id任然可以查找到。
  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 id, 然后 数一下要退回的commit 次数,直接git reset --mixed HEAD~N , 让头部退回, 但是index 和 working dir 保持最新。再次直接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

git 的强大之处:时空倒流
git 的时空倒流法依赖以下三个命令:

  1. git reset : --soft --mixed --hard 三种策略
  2. git branch :
  3. git checkout :

git的强大之处在于

  1. 可以随处建立分支,使得不同功能的开发不会依赖,这样不同版本的代码可以完整地保留下来。
  2. 可以随时将代码版本倒流到某个正确无误的时刻,时光倒流。
  3. 可以利用reset 将本地的冗余提交的版本去掉。
  4. 可以使用stash 暂存一系列的零时操作。 空间倒流。
  5. 可以让用户在本地或者远程的不同分支上轻松切换,版本的管理非常灵活。(空间倒流)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,449评论 1 26
  • 天黑写作团今天很人性化的放假了,回来路上还是继续写写东西吧。 明天早上巴萨和大巴黎有欧冠比赛,上次看欧冠直播是什么...
    闻舒阅读 234评论 0 0
  • 时至今日提笔写信给你深觉冒昧,即使你我的命运轨迹曾有过短暂的交集,可在千帆过尽之后要求...
    陈小团阅读 1,220评论 3 9
  • 麦子熟了, 天天都很热。 等到明天一早, 我就去收割。 我的爱情也成熟了, 很热的是我的心, 但愿你,亲爱的, 就...
    先生五点半阅读 1,622评论 0 0