我有一个初学者问题。
如果我有 2 个分支,master 和 testbranch,我切换到 testbranch,然后通过 FTP 上传一个新文件,这会影响 master 和 testbranch 吗?
我尝试这样做,当我运行“git st”时,更改都会出现在 master 和 testbranch 中。
有什么方法可以隐藏 master 的更改,或者这就是 git 的工作方式?
提前致谢
听起来当您说“切换”时,您的意思是您正在使用该git checkout
命令。此命令在存储库中已提交的版本之间切换。如果您“FTP 上传”一个新文件(我假设您的意思是将文件添加到沙箱,或覆盖现有文件),除非您提交它,否则它不会影响提交的版本。您是否打算通过 FTP 上传来提交您放入沙箱的文件(我想)?因为这是它影响分支的唯一方式。
通常,您master
在处理testbranch
. 除非您提交,否则提交将完全保持提交状态rebase
,或者以其他方式修改存储库本身。
当您添加未跟踪的文件时,您仍然可以签出其他分支,该文件将保留。想象一下相反的情况,如果 Git 在切换分支时将其删除,则该文件将丢失,因为它已提交!
但是git status
仍然会说该文件未跟踪,但这并不意味着您的分支受到影响。只是 Git 告诉您分支记录和工作副本之间的状态不同。
然后你有两个选择:
master
时会被移除,切换回时会重新出现testbranch
master
: git stash --include-untracked
#file is saved in a temporary place, and removed
git checkout master
#do stuff...
git checkout testbranch
# git stash pop
#file is restored
如果您知道 ftp 上传的日期,您可以使用它git whatchanged
来检索修改文件列表。
你的命令看起来像这样:
git whatchanged --since 'dd/mm/yyyy' --until 'dd/mm/yyyy' --oneline --name-only --pretty=format: | sort | uniq