Git使用总结

Git使用总结

开发策略

  • 在实际开发的时候一定要在分支上开发,修复问题,开发完成之后再合并到主分支(master)上,这样可以保证在不损坏主分支的情况下删除或者撤销内容

解决冲突

冲突产生

  • 假设现在有一个master分支,其中有一个提交之后的文件demo.txt,那么我们使用git checkout -b dev创建一个新的分支并且切换到这个dev分支

    • echo chenjiabing >> demo.txt:在文件的末尾追加一个文件
    • git add file.txt : 添加到暂存区
    • git commit -m "this is at dev:提交
    • git checkout master : 切换到主分支
    • echo 陈加兵 >>demo.txt : 切换到主分支,在主分支中在文件的末尾追加陈加兵(这里一定要在文件末尾,因为在dev分支中修改的位置就是文件末尾)
    • git add demo.txt : 添加到暂存区
    • git commit -m "this is at master" : 提交
    • git merge dev :快速合并分支dev到master分支上,那么现在将会出现版本冲突的问题,不能合并成功。此时的demo.txt的文件内容为:
    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    Git has a mutable index called stage.
    Git tracks changes of files.
    <<<<<<< HEAD
    陈加兵
    =======
    chenjiabing
    >>>>>>> dev
    

冲突解决

  • 此时在master分支中修改demo.txt中的内容,直到满意为止即可
    • git add demo.txt : 添加
    • git commit -m "this is finally" :提交

分支管理策略

  • 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
  • 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
  • git merge --no-ff -m "merge with no-ff" dev

Bug分支(git stash)

  • Bug分支
  • git stash 将当前的工作现场存储起来
  • git stash list : 列出所有的工作现场
  • git stash pop : 回复当前分支的工作现场,并且还删除了stash中的内容

添加公钥到Github中

  • 如果你没有在git中配置邮箱和用户名,那么需要先配置

    • git config --global user.name "CSDN id"
    • git config --global user.email "your email"
  • cd ~/.ssh: 进入主目录的ssh文件夹中,查看是否已经存在秘钥文件id_rusa.pub,如果不存在,那么需要生成秘钥

  • ssh-keygen -t rsa -C "your email" : 生成公钥

  • 此时在~/.ssh文件夹下就有了id_rusa.pub文件夹,那么将其中的内容全部复制到github中的SSH中

  • 注意: 添加远程仓库的时候一定要使用ssh形式,否则将会要求输入密码

    • git remote add git@github.com:chenjiabing666/LearnGit.git

远程仓库的使用

常用命令

  • git clone git@github.com:chenjiabing666/LearnGit.git :直接clone远程仓库到本地仓库,此时的本地仓库也有了push的权利,不过只能看到一个主分支master ,但是这个远程仓库还有dev分支和Bug分支
    • git checkout -b dev orgin/dev : 直接在本地创建一个分支dev并且和远程仓库的分支关联起来,那么就可以获取远程dev分支上的文件了
  • git remote : 查看远程仓库的名称,这个只显示名称,使用git clone的方法关联远程仓库,默认的名字为orgin
  • git remote -v : 显示远程仓库的名称和链接
  • git remote add shortName url : 添加一个新的远程仓库
    • git remote add learn git@github.com:chenjiabing666/LearnGit.git
  • git remote rename 旧名称 新名称 : 修改远程仓库的名称
    • git remote rename orgin demo
  • git remote remove 名称 : 删除远程仓库
    • git remote remvoe orgin
  • git push 仓库名称 [分支名称] : 将提交的文件推送到远程仓库
    • git push orgin : 将文件推送到远程仓库的主分支master
    • 假设我们新建了一个dev分支 使用命令git checkout -b dev ,那么我们需要将这个dev分支推送到远程仓库中的dev分支上,使用git push orgin dev需要注意的是必须在当前的本地仓库的dev分支才能推送,并且这个本地仓库的名称要和远程仓库一样
  • git pull : 从远程仓库中拉取本地仓库分支中没有的文件并且合并到当前分支
    • 假设小明在master分支上提交了一个file.txt文件,但是小李的本地仓库中并没有file.txt这个文件,此时小李就需要从远程仓库中把这个文件拉取到自己的本地仓库的master分支上
      • git checkout master : 切换到主分支
      • git pull : 拉取远程仓库的最新文件

远程分支

推送分支

  • git push 名称 分支名称 : 推送分支到远程仓库中
    • git push orgin Bug : 推送本地的分支Bug推送到远程仓库中,那么仓库中默认的分支名就是Bug
  • 对于一些需要合作完成的分支需要推送到远程仓库,并不是所有的分支都需要推送到远程仓库的

抓取分支

  • 在多人协作完成项目的时候,都需要向主分支masterdev分支上面推送各自的修改
  • 我们使用git clone一个远程仓库的时候,默认情况下只能看到master分支,我们可以使用git branch查看分支。此时我们需要在dev分支上面操作,那么就必须将远程仓库中的dev分支创建到本地,我们可以使用git checkout -b dev orgin/dev ,那么远程仓库的中的dev分支就创建到本地了,那么此时我们就可以在dev分支上面操作了
    • git push orgin dev : 修改完成之后推送到远程仓库中
  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
    • 如果远程仓库中有一个demo分支,本地也有一个demo分支,但是这个本地的demo分支并不是使用git checkout -b demo orgin/demo检出的,而是直接创建的,那么我们此时需要使用git pull拉取远程仓库中demo分支中的文件到本地的demo分支就会发现出现错误,因为没有与远程的demo分支关联,此时我们就需要使用git branch --set-upstream demo orgin/demo

总结

因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

标签的使用

创建标签

  • git tag v1.0 : 在当前分支上添加一个标签

  • git tag -a v1.0 -m "备注信息" : 添加一个标签并且备注信息

  • git tag : 列出当前分支上面的所有标签

操作标签

  • git tag -d v1.0 : 删除指定的标签
  • git push origin v1.0 : 推送标签到远程仓库,因为标签的创建不会自动推送到远程,必须手动推送
  • git push orgin --tags : 一次性推送全部的标签

删除远程标签

  1. 先删除本地标签 : git tag -d v1.0
  2. 使用push删除远程标签 : git push orgin :refs/tags/v1.0

添加所有文件

  • git add -A
  • 之后直接提交即可 : git commit -m ""
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 一:Git是什么? Git是目前世界上最先进的...
    axiaochao阅读 1,931评论 1 8
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,913评论 0 11
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,874评论 5 147
  • 如果一柄伞就是一个梦 这梦就是色彩斑斓的! 一万零一柄伞汇集成长廊 汇集成一道风景河 汇成河一样的伞廊 又该是怎样...
    知道了不用记阅读 281评论 1 3
  • 考试临近,晚风坐在自习室安静地写着英语题。突然间就想要听歌,拿出耳机,打开手机后,赫然在目的是那首《孤独患者》。静...
    程曦里阅读 854评论 2 5