当我在使用控制系统git的项目上工作时,每次我想要提交然后将我当然需要的修饰符推送到git pull
之前。但是我遇到的问题是,很多时候git禁止我退出,因为在提交本地更改之前我应该这样做。我曾经做过的事情是,我有另一个干净的git repo,在这里我不直接修改它,但是当我需要时,我可以将其用于git pull
,然后使用meld从另一个仓库中将其合并到其中我工作。但是我认为这种方法不是最好的,而且会浪费很多时间,是时候对其进行优化。我想做的是,我创建了另一个本地分支“ work_branch”,并将我的修改提交到本地,然后将提交从“ work_branch”合并到“ master”,然后在拉动后推送master。所以场景应该是这样的:
git branch work_branch
git checkout work_branch
#modify in branch work_branch
git commit
git add <files list>
git commit -m "fixes branch work" #local commit
gitk ==> get the id of "fixes branch work" commit (example: 5b099287c229e16c24bfcdbfd6fba384cfe165e6)
git checkout master
git pull
git cherry-pick 5b099287c229e16c24bfcdbfd6fba384cfe165e6 #merge "fixes branch work" commit from work_branch to master branch
git push
我遇到的问题是第三步(分支work_branch中的#modify)之后,master分支查看了分支work_branch中的每个modif,但是我想要的是master分支只能从work_branch中看到合并的提交在git cherry-pick
命令之后。
有没有办法改善我的解决方案。还是有另一种优化git工作的好方法。
答案 0 :(得分:1)
在需要进行更改的地方创建了一个功能分支,工作在master分支上(例如,错误修复),并且准备好将功能分支添加到master中(即,您准备将功能添加到自己的功能中)主代码库)您git merge <feature branch>
有点混乱。尝试遵循常规方法,在该方法中提交代码中所需的所有更改,最后将其与主版本合并。
另一个建议,使用git rebase
。 (谷歌它,有很多视觉上的解释)。同样,先用Google git fetch
然后用git merge origin/master
的master方法将master的更改反映到您的工作仓库中。 使用rebase
,以便在您的仓库中仅查看一次提交(不是提交+合并提交)
基本上,请阅读git教程。它很容易,您将在不到10分钟的时间内了解基本知识。