Sun*_*day 1 git version-control git-checkout git-branch
在对分支进行一些更改后,master我决定从一个新的分支工作.我做git checkout -b new_branch_name了,创建了一个新的分支并检查出来.git status显示了我所做的改变master.
我很好奇,如果我的更改现在在两个分支(master和new_branch_name)或只是new_branch_name.所以我检查了一下master,注意到我的变化也在那里.所以我用这些改变了git checkout -- fileThatChanged.这些变化确实已经消失了master.
不幸的是,检查new_branch_name和运行git status显示我的更改也从该分支还原.
我想了解发生了什么,以后如何避免这种情况.
一种解决方案是在开始工作之前创建/签出新分支.
您从未将更改提交到任一分支.也就是说,如果你这样做:
$ git status
Run Code Online (Sandbox Code Playgroud)
并看到这样的事情:
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myfile.txt
#
Run Code Online (Sandbox Code Playgroud)
对"myfile.txt"的更改在任何分支上都不"存在" - 它们仅在您的本地工作副本中.在将它们安装到存储库之前,它们不会最终出现在分支上.
如果此时我输入:
$ git checkout myfile.txt
Run Code Online (Sandbox Code Playgroud)
这将删除我的更改(并将文件返回到我当前分支的最后一次提交中的任何内容).
如果我想在新分支上提交这些更改,我可能会这样做:
$ git checkout -b new_branch_name
$ git add myfile.txt
$ git commit -m "made some changes"
Run Code Online (Sandbox Code Playgroud)