我们有一个拥有超过400个提交的Git存储库,其中前几个是很多试错.我们希望通过将许多提交压缩到单个提交来清理这些提交.当然,git-rebase似乎还有很长的路要走.我的问题是它最终会出现合并冲突,而这些冲突并不容易解决.我不明白为什么会有任何冲突,因为我只是压缩提交(不删除或重新排列).很可能,这表明我并不完全理解git-rebase是如何做它的南瓜的.
这是我正在使用的脚本的修改版本:
repo_squash.sh(这是实际运行的脚本):
rm -rf repo_squash
git clone repo repo_squash
cd repo_squash/
GIT_EDITOR=../repo_squash_helper.sh git rebase --strategy theirs -i bd6a09a484b8230d0810e6689cf08a24f26f287a
Run Code Online (Sandbox Code Playgroud)
repo_squash_helper.sh(此脚本仅由repo_squash.sh使用):
if grep -q "pick " $1
then
# cp $1 ../repo_squash_history.txt
# emacs -nw $1
sed -f ../repo_squash_list.txt < $1 > $1.tmp
mv $1.tmp $1
else
if grep -q "initial import" $1
then
cp ../repo_squash_new_message1.txt $1
elif grep -q "fixing bad import" $1
then
cp ../repo_squash_new_message2.txt $1
else
emacs -nw $1
fi
fi
Run Code Online (Sandbox Code Playgroud)
repo_squash_list.txt :(此文件仅由repo_squash_helper.sh使用)
# Initial import
s/pick \(251a190\)/squash …Run Code Online (Sandbox Code Playgroud) 如果我分叉一个托管在github上的项目.我分叉所有分支吗?我怎么知道我的fork基于哪个分支?换句话说哪个分支将被下载到我的PC?
如何将Git遥控器的HEAD引用设置为指向除"master"之外的其他内容?
我的项目有一个不使用"主"分支的策略(所有分支都有有意义的名称).此外,规范主存储库只能通过ssh://访问,没有shell访问权限(如GitHub或Unfuddle).
我的问题是远程存储库仍然有一个HEAD引用refs/heads/master,但我需要它指向一个不同的分支.这导致两个问题:
克隆回购时,有这个,
警告:远程HEAD是指不存在的ref,无法结帐.
这令人困惑和不方便.
基于Web的代码浏览器依赖于HEAD作为浏览树的基础.我需要HEAD指向一个有效的分支,然后.
我有一个Git存储库,它具有已经过时的分支(本地和远程).我想把这个分支与主分支联系起来,但我不知道该怎么做.也可能存在许多合并冲突.
如何将这个过时的分支带到或更新到与主分支相同的状态?
有没有办法在本地重命名Git分支并将其推送到远程分支,即使已经有很多提交推送到远程分支?
或者,是否有必要创建新的本地分支,删除旧的本地分支,然后在远程存储库上重复该操作?
我有以下遥控器设置:
$ git remote
korg
rorg
Run Code Online (Sandbox Code Playgroud)
以下分支机构:
$ git branch -a
* (no branch)
remotes/korg/gingerbread
remotes/korg/gingerbread-release
remotes/korg/honeycomb
remotes/korg/honeycomb-mr1-release
remotes/korg/master
remotes/m/android-2.3.3_r1 -> refs/tags/android-2.3.3_r1a
remotes/m/gingerbread -> korg/gingerbread
Run Code Online (Sandbox Code Playgroud)
现在我希望将所有远程分支推korg送到rorg远程.我怎么做?
优选地,如果可以避免,则不为每个第一分支建立本地分支.
当您git pull在master分支上运行时,它通常会从中拉出origin/master.我是在一个叫不同的分支newbranch,但我需要运行,做了一个命令,git pull从origin/master进master,但我不能运行git checkout更改所选分支,直到后拉完成.有没有办法做到这一点?
为了给出一些背景知识,存储库存储一个网站.我newbranch通过切换网站对其进行了一些更改并进行了部署newbranch.现在这些更改已合并到上游master分支,我也试图将网站切换回master分支.在这一点上,newbranch并且origin/master是相同的,但是master落后origin/master并且需要更新.问题是,如果我采用传统方式:
$ git checkout master
# Uh oh, production website has now reverted back to old version in master
$ git pull
# Website is now up to date again
Run Code Online (Sandbox Code Playgroud)
我需要实现与上面的相同(git checkout master && git pull),但是在此过程中不需要将工作目录更改为早期版本.
从手册页:
Run Code Online (Sandbox Code Playgroud)Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".
所以我删除了一堆分支
git push origin :staleStuff
Run Code Online (Sandbox Code Playgroud)
然后跑了
git remote prune origin
Run Code Online (Sandbox Code Playgroud)
但是,只修剪了一个本地分支.其中一些分支是由我创建的,一些是由同事创建的.这是否表明我首先没有正确跟踪这些分支?
我在我们的一个存储库中创建了许多分支.这些分支在被提取给主人之前进行测试.现在我在列表中看到很多它们,我们永远不会再使用它.如何将这些分支直接删除到Bitbucket?
我在GitHub仓库中有一个公共PHP项目,它只包含一个分支(主).
我想要一个独立的分支/分支对我来说是私有的(我已经支付了私人GitHub回购).我希望能够将私有分支/分支的更改合并到公共仓库,反之亦然.
考虑到这一点,这是我的问题:
git-branch ×10
git ×8
branch ×3
git-remote ×3
github ×2
bitbucket ×1
fork ×1
git-checkout ×1
git-fork ×1
git-merge ×1
git-push ×1
git-rebase ×1