小编Ada*_*ruk的帖子

如何轻松地将本地Git分支推送到具有不同名称的远程?

我一直想知道是否有一种简单的方法来推送和拉出具有不同名称的远程分支的本地分支,而不必始终指定这两个名称.

例如:

$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)

现在如果有人更新remote_branch_name,我可以:

$ git pull
Run Code Online (Sandbox Code Playgroud)

一切都是合并/快进的.但是,如果我在当地的"newb"中进行更改,我不能:

$ git push
Run Code Online (Sandbox Code Playgroud)

相反,我必须:

% git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)

看起来有点傻.如果git-pull用于git-config branch.newb.merge确定从何处拉出,为什么不能git-push有类似的配置选项?有没有一个很好的捷径,或者我应该继续漫长的路?

git version-control git-push git-remote

167
推荐指数
5
解决办法
7万
查看次数

Git:如何重新定义特定的提交?

我想重新定义一个特定的提交,而不是另一个分支的HEAD:

A --- B --- C          master
 \
  \-- D                topic
Run Code Online (Sandbox Code Playgroud)

A --- B --- C          master
       \
        \-- D          topic
Run Code Online (Sandbox Code Playgroud)

代替

A --- B --- C          master
             \
              \-- D    topic
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

git version-control rebase git-rebase

131
推荐指数
8
解决办法
16万
查看次数

重新分配包括其所有孩子在内的分支

我有以下Git存储库拓扑:

A-B-F (master)
   \   D (feature-a)
    \ /
     C (feature)
      \
       E (feature-b)
Run Code Online (Sandbox Code Playgroud)

通过重新feature分支我希望改变整个子树(包括子分支):

$ git rebase feature master

A-B-F (master)
     \   D (feature-a)
      \ /
       C (feature)
        \
         E (feature-b)
Run Code Online (Sandbox Code Playgroud)

但是,这是实际结果:

      C' (feature)
     /
A-B-F (master)
   \   D (feature-a)
    \ /
     C
      \
       E (feature-b)
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过执行以下方法手动修复它:

$ git rebase --onto feature C feature-a
$ git rebase --onto feature C feature-b
Run Code Online (Sandbox Code Playgroud)

但有没有办法自动重组分支,包括其所有子/后代?

git version-control branch rebase git-rebase

88
推荐指数
3
解决办法
1万
查看次数

如何将我的git'master'分支重命名为'release'?

我们希望为我们的项目强制执行一个新策略,现在主分支称为发布分支,以确保更清楚如何使用分支.当然,我们也将开发和发布候选分支.

我知道我可以通过简单地使用以下命令在本地重命名master分支:

git branch -m master release
Run Code Online (Sandbox Code Playgroud)

但是,这只是本地的.即使我把它推到遥控器上,HEAD仍然指向远程主分支.我想完全摆脱master分支,并在初始克隆时创建默认的本地分支,然后释放.

我怎样才能做到这一点?

编辑:似乎由于原点是在一个有名的服务器上,我得到错误删除主分支.我现在试图看看是否可以更改它,以便默认分支是'release'.

git version-control branch git-branch

83
推荐指数
3
解决办法
6万
查看次数

如何将只读git克隆从github转换为分叉

我不时会遇到这个问题.

假设我已经按照以下方式阅读了rails的源代码,因为我遇到了一些问题.

git clone git://github.com/rails/rails.git
Run Code Online (Sandbox Code Playgroud)

在研究期间,我测试了一些东西,现在我有一个修复,我希望rails核心团队来看看.如何将我的更改推送到分叉版本的rails.

记得当我克隆时,我没有克隆分叉版本而是只读版本.

并不是说我反对分叉.只是有时我认为我只是要浏览然后我想添加一些东西.

git github git-push git-remote

80
推荐指数
2
解决办法
8194
查看次数

挂在"POST git-receive-pack(chunked)"

老实说,我对git的内部知之甚少.

我已经上演并提交了一个40mb的目录,但当我来推...

$ git push --verbose --progress
Pushing to https://acron0@bitbucket.org/acron0/project.git
Password for 'https://acron0@bitbucket.org':
POST git-receive-pack (chunked)
Run Code Online (Sandbox Code Playgroud)

这是20分钟.我假设它挂了但是......我能做些什么来找出原因?

git version-control

58
推荐指数
3
解决办法
5万
查看次数

离开Github,如何改变Git回购的起源?

我正在Github上主持一个项目,但现在我购买了一个包含shell访问和Git的Dreamhost计划.

      Github [Origin]
       /         \
  pull/           \pull
     /push     push\
    /               \  
Laptop           Dreamhost
(cloned)          (cloned)
Run Code Online (Sandbox Code Playgroud)

我想从Github删除我的回购,并开始直接推送到DH.

如何更改笔记本电脑中的原点,是否应删除Dreamhost中的原点?

git version-control github dreamhost

55
推荐指数
4
解决办法
3万
查看次数

删除/修改冲突后,Git rebase不会继续

我正处于我的主人对舞台分支的重新考虑之中

git checkout stage
git rebase master
Run Code Online (Sandbox Code Playgroud)

有时我删除了两个文件,然后根据GIT修改了两个文件.

warning: too many files, skipping inexact rename detection
CONFLICT (delete/modify): test-recommendation-result.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix test recommender of test-recommendation-result.php left in tree.
CONFLICT (delete/modify): test-recommendation.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix test recommender of test-recommendation.php left in tree.
Failed to merge in the changes.
Patch failed at 0015.
Run Code Online (Sandbox Code Playgroud)

我想说"是的git,继续并删除那些文件"所以....

git rm test-recommendation-result.php
git rm test-recommendation.php
git …
Run Code Online (Sandbox Code Playgroud)

git version-control rebase git-rebase

52
推荐指数
1
解决办法
3万
查看次数

警告:您将离开1个提交,而不是连接到任何分支

EGit再次罢工.我犯了一个错误,试图切换到EGit中的一个不同的分支,它以某种方式混乱并检查没有分支.然后我提交了这个非分支,然后当我意识到我没有跟踪正确的分支时,我运行了以下内容:

$ git checkout issue2
Warning: you are leaving 1 commit behind, not connected to any of your branches:

    bada553d My commit message

If you want to keep them by creating a new branch, this may be a good time to do so with:

    git branch new_branch_name ....

Branch issue2 set up to track remote branch issue2 from origin.
Switched to a new branch issue2. 
Run Code Online (Sandbox Code Playgroud)

现在我已经搞砸了,如何将该提交与我当前的分支相关联?我对创建一个全新的分支并不感兴趣,我只想将该提交提取到我的分支中issue2.

git version-control branching-and-merging

49
推荐指数
2
解决办法
3万
查看次数

git推送到远程分支

伙计们,

我克隆了一个回购.我通过发出以下命令创建了一个分支来处理功能:

git branch fix78

然后我在那个分支上工作

git checkout fix78

我继续对这个当地分公司做出承诺.现在我想将其推送到repo,因此我发出了以下命令:

git push origin master:fix78

我从Web浏览器查看了repo,发现在repo上创建了一个名为fix78的新分支.但它没有我做过的任何提交.

我在这做错了什么?这就是我想要实现的目标:

有一个repo(master(SVN术语中的trunk)),现在当我正在创建一个功能时我想创建它的本地分支然后我也想检查这个分支到repo(以便其他团队)成员可以看到我在做什么),然后我希望我的本地分支与我创建的这个远程分支同步.

任何帮助/反馈都会非常棒.

谢谢.

git version-control git-push git-remote git-branch

48
推荐指数
2
解决办法
7万
查看次数