GIt 基本使用

基本配置

个人信息

git config user.name
git config user.email

修改

git config  --global user.name "YuYan"
git config  --global user.email "yuyan@yy.com"

ssh 配置

# 1、确认 ssh key 是否存在
cat ~/.ssh/id_ras.pub
# 2、 不存在,使用以下命令进行创建
ssh-keygen -t rsa -C "邮箱"
# 会在用户目录下生成 .ssh 文件夹
# 文件夹下 id_rsa 为密钥文件  id_rsa.pub 为公钥文件
# 3、测试是否成功
ssh -T git@gitee.com   # 这里测试的是 码云
# 4、 在服务器中添加公钥
# 将本地生成的id_rsa.pub内容追加到git服务器git用户的~/.ssh/authorized_keys
创建版本库
git init	# 将当前目录作为 git 版本库
连接远程仓库

本地有仓库,服务器没有

mkdir git_demo  # 创建文件夹
cd git_demo
git init
git remote add origin 远程仓库地址   # 关联远程仓库
git push -u origin master  # 推送本地代码到远程仓库

本地没有仓库,远程有内容

git clone 远程仓库地址  [本地文件夹]
# 本地文件夹: 如果指定本地文件夹,则在当前目录下创建一个远程仓库
忽略特殊文件

1、 在项目中添加一个 .gitignore 文件
2、 在 .gitignore进行编写需要忽略的文件
3、 将 .gitignore提交到Git

撤销修改
  • 撤销本地修改
git checkout -- 文件
  • 撤销 add
git reset HEAD # 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 
git reset HEAD XXX/XXX.java  # 就是对某个文件进行撤销了
  • 撤销 commit,版本回退
git reset --soft HEAD^
    --mixed 不删除工作空间改动代码,撤销commit,并且撤销git add . 
    --soft  不删除工作空间改动代码,撤销commit,不撤销git add . 
    --hard    删除工作空间改动代码,撤销commit,撤销git add . 

    HEAD^   代表上一次
    HEAD~2  代表上两次
    commit_id  代表撤销到原来 commit_id 的版本

如果只是commit的注释写错了,可以使用: git commit --amend

冲突
git  stash
git  pull
git stash pop


<<<<<<<HEAD
本地修改
=============
远程修改
>>>>>>>>>>>>>commit_id
基本命令
# 查看某个文件的提交记录
git log --follow -p routes/admin/contract_operation.js
# 已提交分支形式查看提交记录
git log --graph
# 查看最新的commit
git show
# 查看指定commit id的所有修改
git show commitID
# 查看某次commit中具体某个文件的修改
git show commitID fileName
分支基本命令
# 在本地创建新分支
git branch  newbranch 
# 创建分支,并切换到dev 分支
git checkout -b dev 
# 在本地切换到新分支
git checkout newbranch  
# 将新分支推送到远端
git push origin newbranch  
# 在本地删除一个分支
git branch -d newbranch  
# 在远端删除一个分支
git push origin :newbranch  
# 在远端删除一个分支
git push origin --delete newbranch  
# 合并分支
# 合并分支,解决完冲突,执行add和commit操作,此时会产生一个额外的commit。
git merge --no-ff  
   默认: Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)不过这种情况如果删除分支,则会丢失merge分支信息。
   --no-ff  在提交的时候,会创建一个merge的commit信息,然后合并的和master分支
# 合并分支,解决完冲突,执行add和git rebase --continue,不会产生额外的commit。
# 这样master分支上不会有无意义的commit。
git rebase  
# 帮助
git branch -help
标签基本命令
git tag  标签  [commit_id]      # 打标签
git tag -a v0.1 -m "version 0.1 released" 1094adb
    -a  指定标签名
    -m  指定说明文字
git tag         # 查看标签
git show 标签   # 查看标签信息
团队协作流程

在这里插入图片描述

分支解释:

  • master分支: 主分支,对项目进行tag或发布版本等操作
  • develop分支:开发分支,从master分支上检出。团队成员不能直接更改此分支,而是从此分支检出自己的feature分支,开发完成后将feature分支上的改动merge回develop分支。
  • release分支:发布分支,从develop分支上检出,该分支用于发布前的测试,可以进行简单的bug修复。如果bug比较复杂,可merge回develop分支后,由其他分支进行修复。release分支测试完毕后,需要同时merge到master和develop分支上
  • feature分支:功能分支,从develop分支上检出,团队成员每个人都维护一个自己的feature分支,并进行开发工作,开发完成后将此分支merge回develop分支。此分支一般用来开发新功能或进行项目维护等
  • fix 分支 : 补丁分支,从develop分支上检出,用作bug修复,bug修复完成需要merge回develop分支,并将其删除,所以该分支为临时分支
  • hotfix 分支:热补丁分支,从master分支上检出,进行线上版本的bug修复,修复完成后merge回master分支,并merge回develop分支,merge后也可以将其删除,也属于临时分支

实例:

  • develop分支
# 创建develop分支,并推送到远端
git branch develop master    # 从master分支上新建develop分支
git checkout develop    # 检出develop分支
# 此处可进行功能开发,并add和commit到develop分支
git push origin develop    # 推送develop分支到远端的origin/develop

# develop分支上的功能开发完成了,需要进行测试和提交。这里用到了release分支。

git checkout develop    # 切换回develop分支
git checkout -b release01 develop    # 新建release分支,并切换到该分支

# 做一些测试、bug修复等工作
git add .
git commit -m ''
# 做一些测试、bug修复等工作

# 与 develop 进行合并
git checkout develop    # 切换回develop分支
git merge --no-ff release01  # 合并release01分支到develop分支(无冲突)
git push origin develop    # 推送develop分支到远端

# 与master 进行合并
git checkout master    # 切换回master分支
git merge --no-ff release01   # 合并release01分支到master分支(无冲突)
git tag v0.3    # 新建tag v0.3
git push origin master    # 推送master分支代码到远端
git push origin --tags    # 推送tag到远端
  • hotfix
# 修复紧急bug

git checkout master    # 切换回master分支
git checkout -b hotfix master    # 新建hotfix分支,并切换到该分支
# 做一些bug修复工作
git add .
git commit -m '注释'
# 做一些bug修复工作
git checkout master    # 切换回master分支
git merge --no-ff hotfix    # 合并hotfix分支,此时bug已被修复(无冲突)
git tag v0.2    # 新建tag v0.2
git push origin master    # 推送master分支代码到远端
git push origin --tags    # 推送tag到远端

如果团队成员增加,多人需要开发不同的功能,这里就会用到feature分支。团队中的每个人都从Github克隆一个项目,然后新建自己的feature分支。

git clone xxxx.git
git checkout develop
git checkout -b feature-xx develop    # 从develop分支新建并检出feature分支

# 此时“xianhu”做如下操作,并首先第一个提交到了Github远端:

git checkout -b feature-wang develop    # 从develop分支新建并检出feature分支
# 这里可以进行一些功能开发,并不断的add和commit
git checkout develop    # 切换回develop分支
git pull origin develop    # 更新远端代码,看develop分支是否有更新(无更新)
git checkout feature-hu    # 切换回feature分支
git rebase develop    # 合并develop分支到feature分支,并解决冲突(无冲突)
git checkout develop    # 切换回develop分支
git merge --no-ff feature-hu    # 合并feature分支到develop分支
git push origin develop   # 推送develop分支到远端

对于团队其他成员,比如zz,操作如下,并打算在“xianhu”提交后进行push操作:

git checkout -b feature-zz develop    # 从develop分支新建并检出feature分支
# 这里可以进行一些功能开发,并不断的add和commit
git checkout develop    # 切换回develop分支
git pull origin develop    # 更新远端代码,看develop分支是否有更新(有更新)
git checkout feature-hu    # 切换回feature分支
git rebase develop    # 合并develop分支到feature分支,并解决冲突(有冲突)
# 这里需要进行冲突解决
git add .    # 解决完冲突之后执行add操作
git rebase --continue    # 继续刚才的rebase操作
git checkout develop    # 切换回develop分支
git merge --no-ff feature-zz    # 合并feature分支到develop分支(无冲突)
git push origin develop   # 推送develop分支到远端

摘自:https://zhuanlan.zhihu.com/p/23478654

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值