如何在git branch

时间:2018-05-18 12:45:18

标签: git git-branch

我现在使用git已经有好几个星期了。我正在一个功能分支工作,有时当我将代码推入我的分支时,它显示了很多与开发分支的冲突。所以这次我遵循了以下步骤,以避免在工作场所发生不必要的冲突和问题:(

  1. git branch abc

  2. git checkout abc

  3. 做了我的工作
  4. git stash
  5. git pull origin develop
  6. 有冲突
  7. 已解决的冲突以及git stash pop
  8. git commit-m'message'//不知道如何合并删除不属于冲突的行
  9. git push origin
  10. 现在这一步导致提交了2个文件,其中一个解决了冲突,另一个解决了我的工作。分别说File1和File2。

    现在我需要重新推送我的代码,但只需要文件2,即我在其中没有解决冲突的问题,以及所有问题。

    但是git status将不会显示任何内容,因为我已经完成了所有的提交和推送。 此外,在某些自动合并期间,必要的代码将从File1中删除。如何把它带回来?

    任何帮助都会受到赞赏吗?

    因为我还在学习GIT,所以任何解释都会对我和其他人有所帮助。

    我正在使用BITBUCKET。

    谢谢!

2 个答案:

答案 0 :(得分:1)

对于#1& #2:它们可以合并 - git checkout -b abc

对于#4:你为什么藏匿?我相信你应该在这里做出改变。

对于#6:冲突在哪里?在新创建的功能分支上?这应该是不可能的。

典型的工作流程如下:

  1. 确保主分支(主分支,或开发人员或其他)是最新的。我将在此示例中使用 master
    • git checkout master
    • git fetch
    • git rebase origin/master
  2. 创建并签出功能分支
    • git checkout -b featureBranch
  3. 进行更改
  4. 提交对 featureBranch 的更改(理想情况下,这将完成多次;不是一次大型提交)
    • git add .#这只是一个例子;有选择地添加,适当的
    • git commit
  5. 将本地 featureBranch 推送到遥控器,以供查看或其他任何内容
    • git push origin featureBranch
  6. 准备好后(例如审核并批准),将 featureBranch 合并到
    1. 针对最新的重新 featureBranch
      • git checkout featureBranch
      • git fetch
      • git rebase origin/master
    2. 确保是最新的
      • git checkout master
      • git rebase origin/master
    3. 合并
      • git merge --no-fast-forward featureBranch
  7. 此工作流程,在合并&之前通过重新定位 featureBranch 使用非快进合并,将导致 master 的线性但描述的历史记录。

    祝你好运!

答案 1 :(得分:1)

为了扩展之前的答案,我想补充一点:Git stash会将你的更改保存在" pocket"如果他们还没准备好提交。但是您的更改已准备就绪,因此没有必要。

关于您之前评论中的问题(我没有足够的声誉在评论中回答您):git pull更新您的本地存储库和您的工作目录以及远程存储库中的更改,是git fetch后跟的快捷方式git merge。但是,由于git merge对历史有一些缺点,因此使用git fetch + git rebase会很有用。

Git rebase在本地工作,所以它可以以同源的方式用于git merge,但不是git pull!。很多答案会比我更好地解释git rebase,我希望能有所帮助。