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)
然后——好吧,现在怎么办?我只需要再推一次吗?或者我需要明确地推送新分支吗?(抱歉,如果这是非常基本的,我以前从未使用过它)。
在创建新分支之前我还需要做什么吗?我的理解是,推送后,本地和远程的状态是一样的,对吗?
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分支后add,commit然后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)