从已有分支拉出新分支
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
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=/ 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://[email protected]: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