【问题标题】:git: better way in commit/pushgit:提交/推送的更好方式
【发布时间】:2018-08-01 10:54:10
【问题描述】:

当我从事使用控制系统 git 的项目时,每次我想提交然后将我的修改推送到 git pull 之前。但是我遇到的问题是,在很多时候 git 禁止我拉,因为我应该在提交本地更改之前。我以前做的是我有另一个干净的 git 存储库,我不直接修改它,但是当我需要时,我将它用于 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

我遇到的问题是在第三步之后(#modify in branch work_branch),分支work_branch中的每个modif都是master分支查看的,但是我想要的是master分支只能从work_branch看到合并的commit在git cherry-pick 命令之后。 有没有办法改进我的解决方案。或者有没有其他好方法来优化使用 git。

【问题讨论】:

标签: git github gitlab meld


【解决方案1】:

Git 是一个 VCS(版本控制系统)。
git的一般使用方式

在您需要进行更改的地方创建一个功能分支,而在主分支上进行工作(例如错误修复)以及当功能分支准备好添加到主分支时(即您已准备好将功能添加到您的主代码库)你git merge &lt;feature branch&gt;

你是如何使用它的

有点乱。尝试按照常规方法提交代码中所需的所有更改,最后将其与主代码合并。

另一个建议,使用git rebase。 (谷歌一下,有很多直观的解释)。也 google git fetch 然后 git merge origin/master master 方法将 master 的更改反映到您的工作存储库中。 使用rebase,以便在您的 repo 上只看到一个提交(不是提交 + 合并提交)

基本上,通过 git 教程。它很简单,您将在 10 分钟内了解基础知识。

【讨论】:

  • 我使用cherry pick-而不是merge,因为我不想将work_branch的所有提交合并到master
  • @KallelOmar 但你的问题是你看到了你挑选的那些提交的过去历史。那是问题吗?你确实明白,你不需要一个额外的分支来进行更改,然后最终提交到master。你可以提交master
猜你喜欢
  • 2013-12-17
  • 2014-07-13
  • 2010-12-19
  • 2014-05-06
  • 2020-01-20
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2013-06-09
相关资源
最近更新 更多