欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GIt 基本使用

程序员文章站 2022-07-13 16:19:00
...
基本配置

个人信息

git config user.name
git config user.email

修改

git config  --global user.name "YuYan"
git config  --global user.email "aaa@qq.com"

ssh 配置

# 1、确认 ssh key 是否存在
cat ~/.ssh/id_ras.pub
# 2、 不存在,使用以下命令进行创建
ssh-****** -t rsa -C "邮箱"
# 会在用户目录下生成 .ssh 文件夹
# 文件夹下 id_rsa 为**文件  id_rsa.pub 为公钥文件
# 3、测试是否成功
ssh -T aaa@qq.com.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 标签   # 查看标签信息
团队协作流程

GIt 基本使用

分支解释:

  • 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

相关标签: git