我读过BasicBranchingandMergingGit社区手册的一部分。所以我按照它创建了一个分支:experimental。然后我:切换到实验分支(gitcheckoutexperimental)做一些改变提交(gitcommit-a)切换到主分支(gitcheckoutmaster)做一些改变并提交切换回实验(gitcheckoutexperimental)将主更改merge到实验(gitmergemaster)有一些冲突,但在我解决它们之后,我做了'gitaddmyfile'现在我卡住了,我不能回到master当我这样做的时候$gitcheckoutmastererror:
我fork了一个GitHub存储库。然后我对我的fork进行了一些更改。然后原始存储库merge了我的更改和其他一些更改。现在,我想merge我缺少的那些更改。我尝试了一个简单的pull然后推,但这会重复我的提交。最好的方法是什么? 最佳答案 您可能对每个存储库都有一个“远程”。您需要从一个Remotepull并推送到另一个Remote。如果您最初是从您的分支克隆的,那么该远程将被称为“源”。如果您还没有添加它,则需要将另一个存储库添加为另一个远程:gitremoteaddgit://github.com//repo.git完成所有
我有一个包含许多分支的Git存储库,其中一些已经merge,一些还没有。由于分支数量很多,如何确定哪些分支还没有被merge呢?我想避免必须进行“Octopus”merge和重新merge已经merge的分支。 最佳答案 试试这个:gitbranch--mergedmaster它按照锡盒上的说明进行操作(列出已merge到master中的分支)。您还可以使用以下方法进行反向操作:gitbranch--no-mergedmaster如果你不指定master,例如...gitbranch--merged然后它将向您显示已merge到当前
我运行了一个以冲突结束的gitpull。我解决了冲突,现在一切都很好(我也使用了mergetool)。当我使用gitcommitfile.php-m"message"提交解析的文件时,我得到了错误:fatal:cannotdoapartialcommitduringamerge.我之前遇到过同样的问题,在提交中使用-a效果很好。我认为这不是完美的方式,因为我不想提交所有更改。我想用单独的注释单独提交文件。我怎样才能做到这一点?为什么git不允许用户在merge后单独提交文件?我找不到这个问题的满意答案。 最佳答案 我发现在提交命令中
这是我在主分支上使用的命令gitbranchexperimentgitcheckoutexperiment然后我对我的文件做了一些更改,提交了更改,并将新分支推送到GitHub。gitcommit.-m'changedfiles'gitpush-uoriginexperiment后来我决定将我的experiment分支merge到master分支。gitcheckoutmastergitmergeexperiment最后我将更改推送到GitHub。gitpush-uoriginmaster一切顺利,直到我尝试使用删除我的实验分支gitbranch-dexperiment我收到错误信息:
我有两个分支:master和branch1。我刚刚将branch1merge回master并且我已经完成了那个分支。我应该删除它还是让它闲置?删除它会导致数据丢失吗? 最佳答案 merge后,删除分支是安全的:gitbranch-dbranch1此外,如果git认为您还没有完全merge它,它会警告您(并拒绝删除该分支)。如果你强行删除一个尚未完全merge的分支(使用gitbranch-D),你必须采取一些技巧来取回未merge的提交(见下文)。不过,保留分支机构是有一些原因的。例如,如果它是一个功能分支,您可能希望能够在该分支内
假设我是一个repo的维护者,我想从贡献者那里获取更改,有几个可能的工作流程:我cherry-pick从远程(按顺序)每次提交。在这种情况下,git将提交记录为与远程分支无关。我merge分支,pull入所有更改,并添加一个新的“冲突”提交(如果需要)。我merge分别(再次按顺序)从远程分支提交每个提交,允许为每个提交记录冲突,而不是将所有内容组合在一起。为了完整起见,您可以执行rebase(与cherry-pick选项相同?),但我的理解是这可能会给贡献者带来困惑。也许这消除了选项1。在情况2和情况3中,git记录了提交的分支历史,这与情况1不同。使用所描述的cherry-pick
我正在使用git,并进行了一次小提交,然后进行了一次大提交。我决定在推送它们之前使用gitrebase将两个提交压缩在一起。(我以前从未这样做过。)所以我做了:gitrebase-iHEAD~2这给了我我的编辑器,我在其中选择了较早的提交并压缩了较晚的提交。当我保存时,git说:error:cannotstat'filename':PermissiondeniedCouldnotapplysha1forlatercommit...initiallineoftextforthatcommit现在:当我执行gitlog时,没有提交出现。gitstatus告诉我“当前不在任何分支上”。一个文
我有以下工作树状态$gitstatusfoo/bar.txt#Onbranchmaster#Unmergedpaths:#(use"gitresetHEAD..."tounstage)#(use"gitadd/rm..."asappropriatetomarkresolution)##deletedbyus:foo/bar.txt#nochangesaddedtocommit(use"gitadd"and/or"gitcommit-a")文件foo/bar.txt在那里,我想让它再次进入“未更改状态”(类似于“svnrevert”):$gitcheckoutHEADfoo/bar.tx
在几次提交之前,我不小心将一个不需要的文件(filename.orig,同时解决merge)提交到我的存储库,直到现在我才注意到它。我想从存储库历史记录中完全删除该文件。是否可以重写更改历史,使filename.orig一开始就不会添加到存储库中? 最佳答案 如果您的情况与问题中描述的情况不同,请不要使用此食谱。此秘诀用于修复错误的merge,并将您的良好提交重播到已修复的merge中。尽管filter-branch会执行您想要的操作,但这是一个相当复杂的命令,我可能会选择使用gitrebase来执行此操作。这可能是个人喜好。fil