簡體   English   中英

為什么在git checkout上它會自動在我的新分支中添加更改的文件

[英]why on git checkout it automatically adds changed files in my new branch

我必須從項目的一個分支簽到另一個分支。 當我這樣做時,它還將所有添加的文件也添加到更改的分支中。 我不想從該分支提交那些文件。 我應該怎么做以及將來如何避免這種情況

A   ui/.gitignore
A   ui/README.md
A   ui/babel.config.js
A   ui/package-lock.json
A   ui/package.json
A   ui/public/favicon.ico
A   ui/public/index.html
A   ui/src/App.vue
A   ui/src/assets/logo.png
A   ui/src/components/HelloWorld.vue
A   ui/src/main.js
Already on 'added_more_notification_channels'

沒有。

相反,Git所做的更簡單:

  • 您已經修改了這些文件。
  • 您沒有提交這些文件。
  • 因此,這些更改僅存在於您的工作樹中

然后您問Git: 請從master端的提交切換到added_more_notification_channels端的added_more_notification_channels (我不得不猜測一個分支的名稱,但是在這里並沒有多大關系。)

在某些情況下,Git會說: 對不起,我不能這樣做:如果這樣做,我將通過用added_more_notification_channels尖端的提交副本替換更新的文件來銷毀您的更新文件。

在其他情況下,Git會說: 好的,我做到了……但是重要的提示:我沒有銷毀您的更新文件,我把它們留了下來。 現在,它們與added_more_notification_channels尖端的提交不匹配,就像它們之前與master尖端的提交不匹配一樣。 如果您打算將它們添加並提交給master ,那么現在可以再次git checkout master來回到原來的位置。 如果沒有,那么您的位置就很好,而修改后的文件仍會被修改。

如果您想知道為什么 Git有時會說: 好的,我已經切換了分支! (我隨身帶走了您修改過的文件!) ,有時會說, 哎呀,對不起,我不能這樣做! 那會破壞您的修改文件! 當當前分支上有未提交的更改時 ,請參閱簽出另一個分支

(實際上,您似乎向Git詢問: 請從added_more_notification_channels切換到added_more_notification_channels ,這根本沒有任何切換,因此始終有效!)

如果add/modify/delete某些文件,則可以在另一個分支獲取這些文件。 因此,如果要首先簽出另一個分支,則必須提交更改的文件。 然后,您可以簽出另一個分支。 而且,如果您不提交,則將那些文件發送到checkout分支。 因此,您應該按照以下步驟操作-

  • 將更改的文件添加到git
  • 提交此更改
  • 根據需要推送(可選)
  • 結帳另一個分支

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM