git 远程分支创建与推送

原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a9b830bb08a329fe850cd5b.html

本地分支的创建

本地分支的来源为执行git checkout -b <branch name> 的那个分支

例如现在有两个分支,master和b1

master 分支下有一个commit:

commit1: add test1.c

b1分支下有两个commit:

commit2: add test2.c

commit1: add test1.c

如果在master分支下checkout,即:

git checkout master //进入master分支

git checkout -b frommaster //以master为源创建分支frommaster

git log后发现frommaster中有一个提交:

commit1: add test1.c

这说明他是从master分支为源头创建的

如果在b1分支下checkout,即:

git checkout b1 //进入master分支

git checkout -b fromb1 //以b1为源创建分支fromb1

git log后发现fromb1中已经有两个提交:

commit2: add test2.c

commit1: add test1.c

这说明他是从b1分支为源头创建的

远程分支的创建

从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程
分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服
务器的哪个分支推送数据。反过来,在这些分支里运行git pull 会获取所有远程索引,并

把它们的数据都合并到本地分支中来.

$ git push ssh://git@dev.lemote.com/rt4ls.git master // 把本地仓库提交到远程仓库的master分支中

$ git remote add origin ssh://git@dev.lemote.com/rt4ls.git
$ git push origin master


这两个操作是等价的,第二个操作的第一行的意思是添加一个标记,让origin指向ssh://git@dev.lemote.com /rt4ls.git,也就是说你操 作origin的时候,实际上就是在操作ssh://git@dev.lemote.com/rt4ls.git。origin在这里完全可以理解为后者 的别名。

    需要说明的是,默认情况下这条语句等价于提交本地的master仓库到远程仓库,并作为远程的master分支。

我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。

    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

$ git push origin test:master         // 提交本地test分支作为远程的master分支
$ git push origin test:test              // 提交本地test分支作为远程的test分支

如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

$ git push origin :test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

### 将本地文件推送到指定的Git远程分支解决方案 在Git中,将本地文件推送到指定的远程分支需要经过几个关键步骤。以下是一个完整的流程,确保本地分支远程分支同步并成功推送。 首先,确保本地文件已经被正确地添加到暂存区,并提交到本地仓库[^4]。这可以通过以下命令完成: ```bash git add . git commit -m "Add local files to the repository" ``` 接下来,如果本地分支尚未远程分支关联,则需要明确指定本地分支远程分支的关系。可以使用以下命令将本地分支推送远程分支,并建立追踪关系[^3]: ```bash git push -u origin <远程分支名> ``` 其中,`<远程分支名>`是目标远程分支的名称。例如,如果目标分支为`main`,则命令为: ```bash git push -u origin main ``` 如果远程分支尚不存在,上述命令会自动创建远程分支[^2]。同时,`-u`参数会设置上游分支,以便后续可以直接使用`git push`而无需额外指定分支名称。 当遇到“refusing to merge unrelated histories”的错误时,可能是因为本地分支远程分支的历史记录完全不同步[^1]。此时,可以通过强制合并历史记录来解决该问题。在执行`git pull`时添加`--allow-unrelated-histories`选项: ```bash git pull origin <远程分支名> --allow-unrelated-histories ``` 完成上述操作后,再次尝试推送代码至远程分支即可。 此外,如果需要推送特定文件或目录而非整个项目文件,可以在`git add`阶段指定文件路径。例如: ```bash git add path/to/file ``` 最后,确保本地分支远程分支始终保持同步。定期拉取远程更新以避免冲突: ```bash git pull origin <远程分支名> ``` 通过以上步骤,可以顺利完成本地文件向指定Git远程分支推送。 ### 示例代码 以下是一个完整的示例流程: ```bash # 初始化本地仓库(如果尚未初始化) git init # 添加所有文件到暂存区 git add . # 提交更改到本地仓库 git commit -m "Initial commit with local files" # 推送本地分支远程分支,并设置上游分支 git push -u origin <远程分支名> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值