Mat*_*t W 5 git git-checkout git-commit
我创建了一个包含本地工作git结构中文件的文件夹。我使用git checkout -b创建了一个新分支,并使用了git add。和git commit -m“ ...”将这些文件添加到我的本地分支。但是,当我执行git checkout master时,我创建并提交的文件夹仍然存在。为什么?我以为git commit会将文件夹及其内容放入我的本地分支,当我结帐master时将其切换出来。
如果您将以前未跟踪的文件添加到新分支,然后检出当前未跟踪这些文件的另一个分支,则不会将它们从您的工作副本中删除。
这是一个例子——假设我目前在一个名为 的干净分支上old_branch,并且我签出了一个名为 的新分支new_branch:
git checkout -b new_branch
Run Code Online (Sandbox Code Playgroud)
然后,我test.txt在此分支中创建一个名为的新文件并将其添加到 repo:
touch test.txt # creates a new file named test.txt
git add test.txt
git commit -m "Added test.txt"
Run Code Online (Sandbox Code Playgroud)
该test.txt文件当前由new_branch分支跟踪。但是,当我将分支切换回时old_branch:
git checkout old_branch
Run Code Online (Sandbox Code Playgroud)
由于test.txt没有被 跟踪old_branch,它将它留在工作目录中并且不会覆盖它。这是预期的行为。如果此时执行git status此操作,您会注意到该test.txt文件当前未被跟踪。
为了完成起见,如果您需要清理所有未跟踪文件的工作副本,您可以先执行以下操作:
git clean -n
Run Code Online (Sandbox Code Playgroud)
这将列出将被删除的所有未跟踪文件。如果您对列表感到满意,您可以使用以下命令删除这些文件:
git clean -f -d
Run Code Online (Sandbox Code Playgroud)
这是一个破坏性命令,特别是因为它会删除当前分支未跟踪的文件。(它不会从跟踪这些文件的分支中删除它们。)
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |