git命令行使用

一、什么是git

  • 文件管理系统–>对文件进行管理,多人可以对同一文件进行编辑修改,加快工作效率
  • Git是目前世界上最先进的分布式版本控制系统

二、为什么要用git,为什么要用命令

git–>分布式管理系统
svn–>非分布式版本控制工具
问题来了-------->什么是分布式
简而言之,svn是串行的,git是并行的。git可以多个分支进行开发,最后再将代码进行合并。也可以是修改bug的分支与正在开发的分支并行,最后进行合并。
现在有很多GUI工具,小乌龟,idea也集成了git,为什么我们要使用命令,GUI工具为了简化操作,有很多组合操作,在不知道原理的情况下,一旦出了问题,很难解决。

三、git常用命令

  • 克隆
    克隆一份代码到本地
git clone url
  • 查看状态
    红色为修改过的文件
    绿色为加入缓存区的文件
git status
  • 添加到缓存区
    将需要提交的代码放入缓存区,准备进行提交
git add fileName
git add dir 
git add *.java
  • 提交
    将更新提交到本地
git commit -m "this is commit message"
  • 拉取
    同步远端代码
git pull //默认同步当前远端分支
git pull origin branch //同步指定分支
  • 推送
    用当前分支覆盖远程分支,前提条件是已经同步了远程分支
git push//默认同步当前远端分支
git push origin branch //同步指定分支
  • 合并
    将一个分支合并到当前分支
git merge branch
git merge master//将master合并到当前分支
  • 查看分支
git branch//查看本地分支
git branch -r//查看远端分支
  • 查看日志
git log
  • 查看提交前的差异
git diff
  • 查看提交后的差异
git show
  • 切换分支
git checkout branch
  • 将文件恢复到当前版本
git checkout fileName
  • 软回滚
    回滚后,自己进行修改的文件差异还存在
git reset --soft logId//logId 提交的版本号
  • 硬回滚(危险)
    回滚后,直接回退到提交后的状态
git reset --hard logId//logId 提交的版本号

四、简单使用

简单例子:
使用公司dep分支进行开发工作

//拉取代码
git clone url 
//切换到dep分支
git checkout dep
//完成开发
//查看状态
git status
//选在需要提交的文件放入缓存区域
git add *.java
git add *.xml
//提交
git commit -m "message"
//同步代码
git pull
//此时没有冲突,直接推送到远端
git push

dep分支受保护不能push的情况

//拉取代码
git clone url 
//切换到dep分支
git checkout dep
//创建自己的分支
git checkout -b myBranch
//完成开发
//查看状态
git status
//选在需要提交的文件放入缓存区域
git add *.java
git add *.xml
//提交
git commit -m "message"
//切换到公共分支
git checkout dep
//更新--更新成功后,公共分支已经是最新代码
git pull
//切换到自己分支
git checkout myBranch
//将最新更新的代码合并到自己分支
git merge dep
//此时没有冲突,就可以在github上发送合并请求,将自己的分支合并到dep,等待上级批准

五、冲突解决

什么情况是出现冲突?
修改到同一个文件&&改到了同一个位置
修改同一个文件没有修改到同一个位置,git会自动进行解决
冲突出现的操作

git pull //更新
git merge //合并

首先 git pull = git fetch + git merge
当存在冲突的时候git pull 只执行了 git fetch,不能自动进行合并,这个时候,我们使用

git status

会查看到冲突文件,还会查看到很多自己没有修改的文件已经放到了缓存区域
使用 git add 将冲突文件放入缓存区域,解决冲突
因为有冲突,merge失败,这个时候需要把拉取下来的代码(这些自己没有修改过的,但是又是绿色的文件)commit一下,所以这个时候commit不是自己修改的代码是正常的。完成提交后就可以进行push了,同样merge过来的代码也是相同的操作

六、踩过的坑

  • 克隆的代码不一样?
    可能没有切换分支
  • git push 会覆盖别人代码吗?
    在没有进行同步的时候,push会失败,只有同步了或者是解决了冲突才能成功,所以没有更新直接push不会覆盖,会push失败
  • git checkout
    在所有的文件都commit的情况下,git checkout 不会出现问题,commit后每个分支都是并行存在的,对于没有commit,切换过去会将修改内容一起带过去,这个时候可能会发生冲突,建议git checkout 之前,讲差异进行commit
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值