git checkout-如何不丢失工作目录中的更改?

时间:2019-10-23 07:32:59

标签: git

我创建了一个新分支并进行了结帐。但是当时我的工作目录不干净(尚未提交工作目录中的更改),所以我得到了输出:

D       src/abstracts/media/tea-background.png
M       src/actions/actionTypes.js
M       src/actions/customerActions.js
M       src/actions/deliveryActions.js

我不确定如何从这里开始...我不想放弃对这些文件所做的更改。我有点害怕运行git commit或再次结帐母版。

我如何返回主服务器并提交这些更改?

3 个答案:

答案 0 :(得分:1)

假设您在master分支上,并且进行了那些(未提交的)更改,然后就运行了

git branch new-branch # create branch
git checkout new-branch

在这种情况下,您仍与master完全相同的提交。 masternew-branch都指向同一提交。您可以安全运行

git checkout master

提交更改。

除非您使用git--hard或类似选项,否则大多数--force命令都会确保您不会丢失文件/更改。

如果您想查看自己在git历史记录中的位置,我建议您使用以下命令:

git log --all --graph --oneline --decorate

答案 1 :(得分:1)

上面public function action_binAllocation() { $list_of_items = [80, 20, 30, 40, 50, 60, 70, 80, 10, 70]; $sum = 80; $evenlySortedArray = $this->findPairsInArrayWhereSum($sum, $list_of_items); print_r($evenlySortedArray); } public function findPairsInArrayWhereSum($sum, $arr = []) { $s = []; $evenlyDistributedArrays = []; for ($i = 0; $i < count($arr); $i++) { $temp = $sum - $arr[$i]; $s[] = $arr[$i]; if (in_array($temp, $s)) { $evenlyDistributedArray[] = [$arr[$i], $temp]; } } return $evenlyDistributedArray; } 的输出是git在工作目录的当前状态和git status之间进行比较的结果。

由于您已更改HEAD指向HEAD的位置,因此列表的确可能有所不同。但是您的更改仍然在这里,并且进行git来尽可能地避免数据丢失。如果结帐会抹去工作目录中的某些更改,则它会抱怨并没有继续进行操作,以便您手动处理此情况。

您只需再次git checkout,就会发现自己处于初始状态,并且保留了所做的更改。

答案 2 :(得分:0)

对于我来说,当创建具有本地更改的新分支时,我将使用git stash save 'some message',然后使用git branch new-branch # create branch,最后但并非最不重要的是,使用git stash apply 'some message'或{{1 }}应用本地更改,然后使用noraml过程git pop提交更改的文件。

相关问题