相关疑难解决方法(0)

在不使用签出的情况下合并,更新和拉取Git分支

我在一个有两个分支A和B的项目上工作.我通常在分支A上工作,并从分支B合并东西.对于合并,我通常会这样做:

git merge origin/branchB
Run Code Online (Sandbox Code Playgroud)

但是,我还想保留分支B的本地副本,因为我可能偶尔会检查分支而不先与我的分支A合并.为此,我会这样做:

git checkout branchB
git pull
git checkout branchA
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个命令中执行上述操作,而无需来回切换分支?我应该用git update-ref它吗?怎么样?

git git-pull git-merge git-checkout

585
推荐指数
10
解决办法
14万
查看次数

切换git分支没有文件签出

是否可以在git切换到另一个分支而不检查所有文件?切换分支后,我需要删除所有文件,重新生成它们,提交并切换回来.因此,检出文件只是浪费时间(并且有大约14000个文件 - 这是一个很长的操作).

为了使一切清楚:

我需要所有这些来上传文档到github.

我有gh-pages分支的回购.当我在本地重建文档时,我将其复制到repo目录,提交并推送到github.但我并不高兴,因为我在本地有两份文件.我决定创建空分支并在提交后切换为空并删除文件.但转回来是一个漫长的操作 - 所以我问了这个问题.

我知道我可以离开gh-pages分支并删除文件,但我不喜欢脏工作树)

git branch git-checkout

90
推荐指数
6
解决办法
4万
查看次数

我可以在不修改我的工作副本的情况下重新绑定Git分支吗?

假设我检查了我的"主"分支.我已经对"master"进行了一些生产更改,现在我想将我的"实验"分支改为最新的master.但是,我想在不修改工作副本中的任何文件的情况下执行此操作.从本质上讲,我希望所有的魔法都发生在.git目录中,而不需要触及工作副本.

如果不是"不要修改我的工作副本"要求,这只是一个问题:

# current branch is master
git checkout experimental
git rebase master
git checkout master
Run Code Online (Sandbox Code Playgroud)

我真正的问题是,这会修改我的工作副本中的时间戳,即使我通过查看与我开始的完全相同的内容结束.一旦我运行"git checkout experimental",任何包含实验分支中的更改的文件都会将其mtime设置为当前时间 - 因此,自上次重新实验以来,在master中更改的所有文件也是如此.因为mtimes已经改变了,所以像构建工具这样的东西会让人觉得他们需要再做一些工作,即使在我完成时,文件的内容实际上并没有改变.(就我而言,如果项目文件的时间戳发生变化,Visual Studio认为需要花费大量时间来卸载和重新加载项目.)我想避免这种情况.

有没有办法一步完成上述所有操作,而无需修改工作副本中的任何内容 (假设在rebase期间没有冲突)

(如果冲突,我更倾向于将显示该错误,然后中止整个操作,而不用修改任何时间戳但是,这只是我的偏好,而不是硬性要求-我不知道什么是一切皆有可能.)

当然我可以编写一个脚本来捕获mtimes,运行git,然后重置mtimes; 但似乎Git已经有办法在没有打扰工作副本的情况下执行rebase这样的事情,因为rebase实际上是关于增量,而不是文件的实际内容.

git rebase

58
推荐指数
4
解决办法
1万
查看次数

合并分支没有结帐

有没有办法将分支合并到另一个分支而不检查任何分支?例如,我检查了分支'master',但我想将branch-a合并到branch-b,而不离开master.

git git-merge git-checkout

41
推荐指数
0
解决办法
8179
查看次数

合并分支而不检查分支

我有3个分支机构.

     master [ Live Server]
      \
       stage [ Stage Server Where we test changes; merge commits ]
        \ 
         Dev [ Local Machine ]
Run Code Online (Sandbox Code Playgroud)

我想下游的变化.这些分支中的每一个都设置为相互跟踪.

通常,对于下游的更改,我这样做:

git checkout stage && git merge master

然后我结帐开发,我也这样做

git checkout dev && git merge stage

然后全部推动它们: git push origin --all

有没有办法下游这些更改而不检查每个分支?

我可能使用了错误的术语.我不完全确定我是否正确使用上游/下游术语.

git merge

35
推荐指数
3
解决办法
8725
查看次数

合并而不更改工作目录

我有以下场景:

* ab82147 (HEAD, topic) changes
* 8993636 changes
* 82f4426 changes
* 18be5a3 (master) first
Run Code Online (Sandbox Code Playgroud)

我想(非快进)合并topicmaster.这需要我:

  • git checkout master
  • git merge --no-ff topic

但是检查master,然后将主题合并到它会导致git更改我的工作目录(虽然最终结果与检查master之前的结果相同),而我遇到的问题是由于我们项目的大小,构建它需要大约30分钟(使用IncrediBuild)虽然没有真正改变,但它简直无法忍受.

所以我想得到的是以下内容:

*   9075cf4 (HEAD, master) Merge branch 'topic'
|\  
| * ab82147 (topic) changes
| * 8993636 changes
| * 82f4426 changes
|/  
* 18be5a3 first
Run Code Online (Sandbox Code Playgroud)

没有真正触及工作目录(或至少以某种方式欺骗git).

git

16
推荐指数
1
解决办法
4886
查看次数

如何在不签出的情况下拉取 git 分支?

我在我经常使用的存储库(发布+开发)中有 2 个分支。然而,当在分支之间切换时,它会触发我的项目中的长时间构建(我说的是〜30分钟),所以我宁愿避免在它们之间切换。为了在这两个版本中工作,我创建了我的存储库的 2 个副本,并且效果很好。

但是,当我想要合并更改时,我需要使发布分支处于活动状态一段时间以拉取更改。然后我可以切换回开发,进行合并和提交。然而,正如我上面所写,这个开关将导致长时间的重建。是否有另一种方法可以在不首先激活分支的情况下拉动分支?

git

5
推荐指数
1
解决办法
4795
查看次数

git merge 在这张图中适合的位置

我正在学习 git/github/version control,我发现下面的图表非常有用(来源)。我的问题是哪里git merge适合这个图表?箭头会从哪里开始并指向哪里?

在此处输入图片说明

git version-control

5
推荐指数
1
解决办法
852
查看次数

git checkout并在一个命令中合并

有没有办法更简洁地说出来?

git checkout master
git merge branch
Run Code Online (Sandbox Code Playgroud)

我实际上想要做的很多时间是:

git rebase master branch
git checkout master
git merge branch
Run Code Online (Sandbox Code Playgroud)

回答/sf/answers/864060921/有点触及这个,但离开分支结帐.一个命令中的git merge也是一个类似但不同的问题.

git

4
推荐指数
2
解决办法
5386
查看次数