将 git commit 移动到新分支

Tho*_*mas 4 git version-control github

通过 git,我进行了一些更改,现在希望将它们放在一个新分支中。如何实现这一点在几个地方都有解释,例如这里

我的困惑更多地与此任务的本地/远程方面有关。

我首先将 github 上的存储库分叉到 myForkOnGitHubRepo。然后我将该存储库克隆到我的本地 PC:

local: git clone myForkOnGitHubRepo
Run Code Online (Sandbox Code Playgroud)

然后我更改了源,提交并推送:

local: git add .
local: git commit
local: git push # (actually I used the minGW Gui for that one since the command line push issued a warning)
Run Code Online (Sandbox Code Playgroud)

现在我的本地更改在 myForkOnGitHubRepo 中可见。美好的。现在我注意到我更愿意使用一个新分支(并且也在 myForkOnGitHubRepo 的新分支中进行更改)

我可以按照我在开头发布的链接中的说明进行操作吗?

local: git branch newbranch
local: git reset --hard HEAD~1 # only one commit was done
Run Code Online (Sandbox Code Playgroud)

然后——好吧,现在怎么办?我只需要再推一次吗?或者我需要明确地推送新分支吗?(抱歉,如果这是非常基本的,我以前从未使用过它)。

在创建新分支之前我还需要做什么吗?我的理解是,推送后,本地和远程的状态是一样的,对吗?

Saj*_*han 5

local: git Branch newbranch
local: git reset --hard HEAD~1 # 只完成了一次提交

remote/master现在,当 git 历史记录发生更改时,执行强制(-f) 推送。

$ git push -f origin master
Run Code Online (Sandbox Code Playgroud)

结帐newbranch并推送newbranch也。

$ git checkout newbranch
$ git push origin newbranch
Run Code Online (Sandbox Code Playgroud)
  • 常见的情况是master分支应该继续工作或没有损坏。因此,当需要开发新功能时,请feature从 . 创建一个新分支(例如, )master

    $ git checkout master
    $ git checkout -b feature 
    
    Run Code Online (Sandbox Code Playgroud)
  • 在分支机构工作feature。完成feature分支后addcommit然后push进行远程操作。

    $ git add.
    $ git commit -m 'message'
    $ git push origin feature
    
    Run Code Online (Sandbox Code Playgroud)
  • 现在,如果分支的所有测试都正常feature,则创建 Pull 请求或与 master 合并

    $ git checkout master
    $ git pull origin feature   # pull = fetch + merge 
    $ git push origin master    # update remote/master
    
    Run Code Online (Sandbox Code Playgroud)

我的理解是,推送后,本地和远程的状态是一样的,对吗?

是的,当您推送到远程时,您的本地和远程是同步的(相同的数据)

现在,如果您需要另一个分支(例如,)中的分支feature(假设feature尚未合并)的更改/提交,则只需从中创建一个分支()并将分支拉入masterdevdevmasterfeaturedev

$ git checkout master
$ git checkout -b dev

$ git pull origin feature     # pull 'feature' into 'dev'

# do changes here

$ git commit -am 'Added new feature'     # add & commit
$ git push origin dev
Run Code Online (Sandbox Code Playgroud)