git bash操作命令集合及两种常见远端协作方式

常见操作:

# 初始化git仓库
git init
# 从远程分支拉去代码
git clone [url]
# 将文件添加到暂存库
git add .
# 提交并记录日志
git commit -m "commit log"
# 将代码提交到分支
git push origin [branch]
# 显示所有分支
git branch -a
# 显示所有远程分支
git branch -r
# 列出所有本地分支
git branch 
# 新建分支:使用这个命令新建分支必须要使用master提交一次
git branch [branch name]
# 切换到分支
git checkout [branch name]:
# 新建并切换到分支
git checkout -b [branch name]:
# 将当前url声明为origin
git remote add origin [url]
# 显示所有远程分支
git  remote -v 
# 显示日志
git log --pretty=oneline
# 回退到上一个版本
git reset --hard HEAD^
# 回退两个版本
git reset --hard HEAD^^
# 回退N个版本
git reset --hard HEAD~N
# 查看所有操作的日志
git reflog
# 跳转到指定版本
git reset --hard [7位版本号]
# 将文件回复为本地最新版
git checkout -- [filename]
# 将文件从暂存区域撤回
git reset [filename]
# 从工作区删除及提交撤销
rm [filename] / 提交 git add [filename] / git commit /撤销 git reset --hard HEAD[注意 一旦提交删除,将不能撤回文件]

git的两种协作方式:

一:从主干master fork到个人仓库,然后从个人master中clone到本地,直接在个人master上开发,提交代码到个人远程master或相关分支
然后pull request到远程分支,由特定人员进行merge操作
    这种方式相当于我们把master主干上的代码copy一份到个人的仓库中,然后在个人master的操作都不会影响到原master分支。使用比较简单
二:第二种方式比较复杂。
    这种方式是直接在远程master上建立分支,然后进行协同开发。重点介绍一下。
例如:现在有远程master, production, test分支及其他若干分支zhangsan_v1, lisi_v1, wangwu_v1
    我们开发会先从clone production分支到本地,然后建立自己的本地分支:
    git clone origin production
    git checkout -b self_v1
然后开发,并将修改的文件添加推送到远程
    git add .
    git commit -m "test" 
    git push origin remote_branch
然后此时注意:我们需要将合并分支的申请提交到test分支,而不是production分支:即在test分支提交pull request,将我们的远程分支合并
到test。
下面讨论冲突的情况:
假设提交到test分支时提示有冲突,那么该如何解决呢?
我们需要作如下的操作:
    1.将test分支拉取到本地的一个新的test_tmp_v1分支上,并切换到test_tmp_v1上
        注意:这里千万不能将test分支的代码合并到自己本地的self_v1上?【为什么?大家可以思考一下】 
    2.修改合并冲突
    3.将代码提交到远程的test_remote_tmp分支上,并向test分支提交pull request申请。

为什么是这种情况呢?
因为大多数情况下,我们都不能将自己的代码直接提交合并申请到生产环境,也就是production分支,而是先要在test分支进行测试,测试通过
之后,才可以合并到生产分支。
所以通常我们都是以production分支的代码为base来开发,而将代码提交到test分支。
而test分支的代码并不完整,所以一旦我们将test分支的代码合并到本地生产分支,并提交,可能会发生不可预知的错误。
所以通常这种情况下我们最少都需要两个本地分支:
一:生产环境的本地本质。local_production
二:测试环境的本地分支 local_test
三:可能有一个合并冲突的临时分支。local_tmp

第二种方式相对复杂很多,大家有疑问的地方可以在实际工作中多多使用。作者其实也是刚刚了解,之前一直在使用fork的方式开发,直到换了
公司之后才发现其中的区别。

其中谬误之处,请大家斧正。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值