远程有个maste,dev, feature1,feature2....分支。
我们是团队开发,请问假如远程git repo的feature1是我的分支,我本地有2个分支,master和b1,我需要把我的代码push到远程的feature1上。
我是(1)
#git checkout master
#git merge b1
#git push master: origin/feature1
还是(2)
#git checkout b1
#git merge master
#git push b1: origin/feature1
还是(3)
#git checkout b1
#git push b1: origin/feature1
哪一种是对的呢?谢谢!
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
git基本操作
1. 初始化本地仓库
git init
管理仓库下的文件
git status 查看当前仓库下文件的变动情况
A.文件没有被跟踪[untracked]
git add --all
或
git add 目标文件名
B.文件被跟踪【也就是添加到索引区了】
git commit -m "log"
C.文件已被存储到本地仓库中,以提交点为id[40位字母与数字组成的唯一性字符串]
分支的操作
git branch 查看所有的分支
git checkout branchName 切换到指定分支
git checkout -b branchName 创建并切换到指定分支
git branch -d branchName 删除指定分支
git merge brancheName 把指定分支合并到当前分支上[一般先切换到master后再执行]
如何撤消修改
第一种情况:修改没有添加到stage区[索引区]
git checkout -- 文件名
第二种情况:修改已经添加到stage区[索引区]
首先要把它从stage区撤出
git reset HEAD 文件名
其次,再执行第一种情况的命令即可
git checkout -- 文件名
5.如何解决冲突?conflicted
首先,打开有冲突的文件,把冲突解决掉
其次,再执行:
git add --all
最后,执行:
git commit -m "log"
如何把本地仓库同步到远程
1. 首先,你要确定一个远程仓库,供应商有:
www.github.com
www.gitee.com
www.coding.net
...
B. 我事先已经在本地创建好了项目,但是远程没有,要按如下步骤进行
1. 先在远程平台上,创建一个远程仓库
2. 要把本地项目与远程建立联接
基于SSH
git remote add origin git@gitee.com:yejf/jquerytech.git // 把本地库与远程库关联
基于HTTPS
git remote add origin https://github.com/yejf/jQueryTeach.git
git push -u origin master //第一次推送,使用-u选项,会让用输入用户名
和密码
git push origin master // 第一次推送后,直接使用该命令即可推送修改
拉取:
git pull
第一种方案比较方便可靠
应该是git pull
更新代码,git checkout feature1
切换到feature1分支,直接修改你的代码,git add
增加你修改的文件到本地feature1分支,git commit -m"" [修改的代码]
提交你的修改到本地feature1分支,git push origin feature1"" [修改的代码]
push你本地分支上的代码到feature1分支,再由管理员合并到master分支。
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
你本地的分支b1,master
注:master分支一般是不做任何修改的
假设你在b1分支上做了修改并且是基于远程feature1做的修改
你现在处于master分支:
git fetch origin featuer1
git checkout origin/featuer1
git checkout -b featuer1
git co b1
git rebase featuer1 //注意:是否会出现冲突,如果出现,先解决
git co featuer1
git merge b1
git push origin featuer1
当然,如果master上也有修改建议将master上修改的节点通过cherry-pick命令迁到分支上