git相关操作

从已有分支拉出新分支

1、切换到被copy的分支(master),从服务器拉取最新版本

$git checkout master

$git pull

2、从当前分支copy出新的开发分支,命名dev分支

$git checkout -b dev

3、把新建的分支push到远端

$git push --set-upstream origin dev

4、拉取验证

$git pull

 

查看当前分支基于哪个分支拉出的

git reflog --date=local | grep [branch_name]

 

checkout 远程分支到本地

1、查看远程分支

$git branch -a

2、checkout远程分支到本地

$git checkout -b xxx(本地分支名)  yyy(远程分支名)

3、检查分支是否创建成功

$git branch 

 

cherry-pick将某次提交合并到指定分支

场景:需要将user分支上的提交记录(假如commit_id是xxxxxx),合并到dev分支

1、首先切换到目标dev分支

$git checkout dev // 切换分支

$git pull --rebase // 拉取最新内容

2、将commit_id是xxxxxx的提交记录合并到dev分支上

$git cherry-pick xxxxxx

$git pull

$git push

cherry-pick 就是把user分支上的提交,复制到dev分支上再来一遍,然后pull,push。

 

使用IDE将指定commit cherry-pick到其他分支

1、建立一个新分支eg: bugfix_nick,并切换到该分支

2、选择项目右击Git -> Show History

3、在某个提交记录上 右击 -> Select in Git Log

4、 通过User筛选自己提交的代码

5、点击Branch -> Local -> 选择相应的含有某个提交的分支

6、勾选要提交的记录,右击 -> 选择 Cherry-Pick

7、检查要提交的文件

8、推送即可

 

Git新建本地分支与远程分支关联问题:git branch --set-upstream

 

  • 查看远程库信息,使用git remote -v

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程对应的分支,git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

 

git在本地新建分支, push到remote服务器上之后,再次pull下来的时候,或者为了减少项目大小, 将.git文件给删除了, 在执行git pull时就报错, 在执行git init后就出现了这个问题。如果不做处理会报以下提示:

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=<remote>/<branch> master

问题解析:

git本地新建一个分支后,必须要做远程分支关联。如果没有关联, git 会在下面的操作中提示你显示的添加关联。关联目的是如果在本地分支下操作: git pull, git push ,不需要指定在命令行指定远程的分支. 推送到远程分支后, 你只要没有显示指定, git pull 的时候,就会提示你。

解决方法:

 使用命令git branch --set-upstream ;实例如下,其中debug为创建的分支

git branch --set-upstream-to debug origin/master

命令的最终修改都是针对 config 文件。

使用--set-upstream-to 去跟踪远程分支 , 以上的方式没有解决标红的方式导致的问题。

我的解决方法是进入工程的.git文件夹下的config文件:

修改如下

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[remote "origin"]
	url = ssh://xxx@gerrit.xxx.com:29418/mobile_android/alliance
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
[branch "dev-2.15.0"]
	remote = origin
	merge = refs/heads/dev-2.15.0

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值