Git学习整理(常用指令&部分开发策略)

Git学习整理

纯手打的有点累,,

需要注意的是,git只能跟踪纯文本方式编写的文件,不要使用记事本编辑任何文件

常用命令

新建仓库篇

  • 创建版本仓库:git init
  • 将一个文件添加到git仓库:git add 文件名
  • 将所有文件加到git仓库:git add -a
  • 执行提交:git commit -m "当前版本更新信息"

版本控制篇

  • 查看提交历史记录:git log
  • 退回到上个版本:git reset --hard HEAD^
  • 退回到指定版本:git reset --hard 指定版本号
  • 查看命令历史:git reflog
  • 查看工作区状态:git status
  • 放弃工作区的修改:git checkout -- 文件名(未git add到暂存区)
  • 将暂存区的修改撤销掉(已git add到暂存区):
    • git reset HEAD <File>
    • git checkout -- <File>
  • 从版本库删除文件
    • git rm file
    • 后悔药 git checkout -- file

远程仓库篇

  • 关联远程仓库:git remote add 远程库的名字 远程库地址 远程库名字默认为origin
  • 将当前分支的git commit内容推送到远程仓库:git push 远程仓库名 提交分支名
  • 从远程仓库克隆:git clone 远程仓库地址

分支管理篇

  • 创建分支并切换:git checkout -b 分支名称

  • 创建分支:git branch 分支名称

  • 切换分支:git checkout 分支名称

  • 查看当前分支:git branch

  • 将指定分支合并到当前分支:git merge 分支名称

  • 删除指定分支:git branch -d 分支名称

    git鼓励在某个分支完成某个任务,合并后再删除掉分支,效果相同,但是过程更加安全

  • 新版本git提供switch命令来切换分支:

    • 新建分支并切换git switch -c 新建分支
    • 切换到已有分支git switch 已有分支
解决合并分支冲突
  1. 使用git status查看冲突的文件
  2. 通过手动解决冲突内容
  3. 再次进行提交

默认情况下,git会使用Fast forward模式,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "commit 信息" 分支名字

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

Bug分支
  1. 保存工作现场并不提交:git stash 我曾因为切换分支前没有保存工作现场又没commit导致一晚上的工作成果白费

  2. 从需要修复Bug的分支上创建新的bug分支

    1. git checkout master
    2. git checkout -b bug分支
  3. 再bug分支修复完bug后切换到原分支,然后合并,最后删除bug分支

    1. git switch master
    2. git merge --no-ff -m "bug修复信息" bug分支
    3. git branch -d bug分支
  4. 继续回到dev分支干活

    1. 查看保存的工作现场git stash list
    2. 恢复 git stash apply,删除stash内容git stash drop
    3. 恢复并删除git stash pop
  5. 发现之前master分支的bug在dev分支上存在同样的bug,需要做同样的修改

    • 复制一个特定的提交到当前分支git cherry-pick 提交代码

    如果要强行删除一个未合并过的分支,使用git branch -D 分支名称

多人协作
  • 查看远程库的信息git remote
  • 将本地库推送到远程库,推送时要指定本地分支:git push origin 分支名称
  • 抓取远程仓库的分支
    • clone远程库后, 就必须创建远程的分支到本地 git checkout -b 分支 远程仓库/分支
    • 推送时有冲突:先将最新的提交pull下来,在本地合并,再推送
      • git pull也失败了, 原因是没有指定本地分支与远程分支的链接 ,就设置本地分支和远程分支的连接git branch --set-upstream-to=origin/dev dev
      • 再进行pull,手动解决冲突后,再push
    • git rabase命令可以将本地的提交记录整理成一条直线
标签
  • 命令git tag用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • 命令git tag -a -m "blablabla..."可以指定标签信息;
  • 命令git tag可以查看所有标签。
  • 操作标签
    • 命令git push origin可以推送一个本地标签;
    • 命令git push origin --tags可以推送全部未推送过的本地标签;
    • 命令git tag -d可以删除一个本地标签;
    • 命令git push origin :refs/tags/可以删除一个远程标签。

自定义Git

忽略特殊文件

再git工作区根目录下的.gitignore中,把要忽略的文件名填进去

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值