git问题多人协作是push master还是branch?

远程有个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

  1. 管理仓库下的文件
    git status 查看当前仓库下文件的变动情况
    A.文件没有被跟踪[untracked]
    git add --all

    git add 目标文件名
    B.文件被跟踪【也就是添加到索引区了】

        git commit -m "log"
    
    C.文件已被存储到本地仓库中,以提交点为id[40位字母与数字组成的唯一性字符串]
    
  2. 分支的操作
    git branch 查看所有的分支

git checkout branchName 切换到指定分支

git checkout -b branchName 创建并切换到指定分支

git branch -d branchName 删除指定分支

git merge brancheName 把指定分支合并到当前分支上[一般先切换到master后再执行]

  1. 如何撤消修改
    第一种情况:修改没有添加到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
...

  1. 分为两种情况 A. 先在远程平台上,创建一个PUBLIC的远程仓库,然后,通过在本地执行: git clone www.gitee.com/你的用户名/创建的仓库名.git 这样一来,就把远程仓库同步到本地了。

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命令迁到分支上