git 常用操作记录

首先需要了解分支的本质,分支可以理解为一个指向某个commit对象的指针,但是它是可变的,随着commit提交的变化,指针跟随移动,始终指向当前分支最新的那个提交。使用 git log --oneline 命令可以查看每个分支指向的提交信息。git中的分支信息都保存在.git目录下,具体位置参考git目录介绍

目录

1. 创建分支,并关联远程分支

2. 查看分支

查看分支的跟踪关系

3. 切换分支

4. 分支重命名 (不推荐)

5. 删除分支

6. 分支恢复

7. 分支合并

8. git 远端

9. 撤销提交


1. 创建分支,并关联远程分支

git branch new_branch

本地创建新分支,如果分支已经存在,代码会报错,  -f  强行创建,原来的同名分支会被新建分支覆盖,新建分支之后,并不能自动切换到新分支

git checkout -b new_branch

新建分支的同时切换分支如果分支已经存在,代码会报错 , -B 强行创建,原来的同名分支会被新建分支覆盖

注意:第一第二种方式是基于当前分支创建新分支,而且也没有建立与远程分支的关联关系(如何查看分支的跟踪关联关系可查看第二点)。

创建分支的同时建立关联关系:

git checkout -b branch-name origin/branch-name    

在创建分支的同时关联远程分支

git pull origin origin_branch:local_new_branch

拉取远程分支origin_branch上的最新代码到本地分支local_new_branch上,如果不存在local_new_branch则自动创建

注意:这两种方式都必须保证指定的远端分支是存在的

创建分支后手动关联远程分支:

git branch --set-upstream-to branch-name origin/branch-name

将本地分支branch-name关联远程分支branch-name,如远端不存在该分支,会提示错误

git branch --set-upstream-to=origin/branch-name

将当前本地分支追踪远程分支origin/branch-name,如远端不存在该分支,会提示错误

git branch -u origin/branch-name

设置当前分支跟踪远程分支origin/branch-name

ps:分支除了追踪远程分支,也可以追踪本地其他分支

git push -u origin <remote_branch> 或者 git push --set-upstream origin <remote_branch>

进行推送并将当前本地分支追踪远程分支origin/branch-name,如远端不存在该分支,则自动创建 ,注意如果本地代码不是最新的话,push会被拒绝,但是也有解决方案,在拉取代码时指定远程分支,git pull origin remote_branch 拉取远程指定分支的代码到本地当前分支上,两者之间无需建立跟踪关系

也可以基于指定提交创建分支:

git branch newBr commitId

基于某次提交创建新分支,其中commitId是该提交对象的id,可以是前几位缩写。前3种语法都可以适用该语法。

git stash branch newBr stashIndex

git基于指定stash储藏创建分支,stashIndex 为 stash对应序号

git stash branch newBr stash@{0} 或者 git stash branch newBr 0

表示基于序号为0的stash创建分支(参考git stash用法)

新创建的分支,如果未跟踪远程分支(没有和远程分支建立联系),那在git push和git pull时会提示上述错误。

关于git pull 和 git push 参考文章 git常用命令记录


2. 查看分支

git branch -l

查看所有本地分支,-l 为默认参数,可不写出

git branch -a

查看所有本地分支以及远程分支

git branch -v

展示分支当前提交的hash值和提交信息

查看分支的跟踪关系

git branch -vv

查看所有分支的跟踪关系

注意,即使跟踪的远程分支已经被删除了,跟踪关系也依然保留,那么显然这是无效的,网上有些花里胡哨的操作我不甚理解,个人认为直接删除该本地对应分支即可。


3. 切换分支

git checkout target_branch 

注意:切换分支并不会改变当前工作区和暂存区,所以需要提交所有修改


4. 分支重命名 (不推荐)

git branch -m oldName newName


5. 删除分支

git branch -d branchOne branchTwo 

删除本地分支

注意:不能在当前分支删除当前分支,同时 git branch -d只能删除那些已经被当前分支合并的分支,分支上如果还未合并,会提示无法删除,这时需要强制删除 git branch -D newBr

git push origin --delete branchOne branchTwo

删除远程分支


6. 分支恢复

每个分支就像一个指针指向某个commit对象,只要记住该对象对应的sha-1键值,使用该提交重新创建分支即可。

PS:如果不清楚该sha-1id,也可以通过reflog命令查看


7. 分支合并

git merge  dev

表示将dev分支上的内容合并到当前分支,此操作在未发生冲突时会自动生成提交对象并进行提交。

假若发生冲突,git 只做合并操作,并未进行提交。同时会生成冲突文件,通过 git status 命令可查看未合并的冲突文件提示

比如,a.txt 文本中内容分别为aaaa 和 bbbb,此时就需要我们手动解决冲突

修改好后,需要手动再次 add 该文件并再次 commit

如果想将dev上的代码合并到master,可参考以下简洁用法

    git checkout dev             # 检出dev
    git pull                     # 从远端拉取dev上的最新代码
    git checkout master #        # 检出master 
    git merge dev                # 合并dev到master
    git push -u origin master    # 推送到远端master

8. git 远端

git remote -v 查看远端地址

git remote show origin 查看远端详细信息


9. 撤销提交

git reset

具体细节用法参考 git常用命令记录 一文

git 常用命令记录_Mr_moving-CSDN博客


附:Git开发流程标准中的分支划分,参考文章http://www.softwhy.com/article-8651-1.html

一.分支种类:

当在实际应用开发中,特别是比较复杂的项目,Git不可能只存在一个分支。

比如主分支存放当前线上稳定版代码,还有正在进行测试的非稳定版本分支,或者还有正在开发新功能的分支。

开发建议Git有如下分支(不是影响固定,仅供参考):

(1).master。

(2).develop。

(3).hotfix。

(4).release。

(5).feature。

图示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/04/001249htotjm4kb8bacj4s.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

二.分支种类作用介绍:

1.master分支:

此分支通常用来存放项目的稳定版本,主要特点如下:

(1).内容来源主要是分支合并过来,不推荐开发者直接commit提交。

(2).由于master分支可以是稳定版本,可以随时上线,所以通常版本标签都是打在master分支各个提交之上。

关于标签的用法可以参阅Git tag标签用法详解一章节。

2.develop分支:

develop开发分支通常和feature特征分支配合使用,它是所有feature特征分支的基础。

当在feature分支中测试完新开发的功能后,可以将其合并到develop分支。

3.hotfix分支:

当出现紧急问题,比如master线上分支出现代码问题,可以在此分支中进行修补,修补之后然后再合并到master分支。

特别说明:在合并到master主分支的同事,还要合并一份到develop分支,否则之后将develop合并到master时候,可能会导致修复的问题复现。

4.release分支:

当develop分支开发到自认为足够稳定的状态,将此分支合并到release分支(在此分支进行上线前的最后测试)。

最后测试完成后,再合并到master分支和develop分支。

合并到master分支是非常好理解的,因为要上线运行。合并到develop是因为release分支后续可能还会发现问题,所以要将与develop分支同步,以防止以后develop再合并到release分支出现问题。

5.feature分支:

此分支作用其在介绍develop分支的时候已经涉及,在feature进行新功能的开发,开发完成后再合并到develop。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值