git回滚
如果你愿意一层一层一层的拨开我的心
你会发现 你会讶异
你是我最压抑 最深处的秘密
2025-2-22
可以通过 git commit -am
命令提交所有文件的修改(当你觉得所有工作都做完以后)。但是如果有新文件,需要先 git add
新文件名,再 git commit
提交修改。因为 git commit -am
命令适用于已经跟踪的文件。
如果觉得命令太长了,可以使用alias命令来定义成一个别名,比如:
1 |
|
2025-2-26
回滚
文件回滚
情况一:如果没有add,即没有暂存只在本地修改的话:
-
git restore <file>
可以将修改的文件恢复到最近一次提交的状态 -
git checkout <commit-hash> <file>
可以将修改的文件恢复到提交的状态
情况二:如果已经add了的话: git restore --staged <file>
取消暂存
-
再利用
情况一
恢复文件,这种操作比较安全 -
或使用
git checkout HEAD <file>
,直接恢复到HEAD提交,这个命令会丢失本地的修改
情况三:如果已经commit(未push)了的话:
-
可以使用
git reset --soft HEAD~1
,撤销最近的一次提交,保留修改(软回滚,仅仅回退commit,回到add之后的状态。这样git log
不会再包含这次提交,但你的修改仍然存在,并处于已暂存的状态) -
或者使用
git reset HEAD~1
,git log
同样不包含这次提交,但你的修改仍然存在,并处于未暂存的状态 -
或者使用
git reset --hard HEAD~1
,你的修改无法保存,完全恢复到上次提交的状态。
情况四:如果已经push了的话:
总结:
分支回滚
2025-2-23
关于git stash
当你在开发一个分支时,突然发现自己需要切换到另一个分支,但是这个分支还没有提交,但是你又不想提交,因为你还有一些工作没有做完,这时候可以使用git stash
命令来保存当前的工作状态,然后切换到另一个分支,等你做完了以后,再切换回来,使用git stash pop
命令来恢复之前的工作状态。
1 |
|
关于git pull
1 |
|
git pull 是 git fetch 和 git merge 的缩写。git fetch 用于从远程仓库获取最新的代码,而 git merge 则用于将获取到的代码合并到本地分支。但是如果多人共同开发一个分支时,可能会出现冲突。
比如同事A修改了文件A,同事B也修改了文件A,但是同事A先一步提交了,同事B后一步提交,那同事B就会被拒绝提交,因为git merge 会将本地分支和远程分支进行合并,如果有冲突,就会拒绝合并。
所以如果多人共同开发一个分支时,最好使用 git pull --rebase
命令,这样有冲突的话,会把你本地的提交放一边,先把远程分支的提交拉下来,然后再把你的提交放回去,这样不仅解决了冲突还保持了分支的线性。
来源于技术爬爬虾
2025-2-27
关于分支合并
关于合并(merge)
merge会将两个分支的提交合并成一个新的提交。分支各自的提交记录都会保留,保留整个过程完整的提交记录,可以看到每个成员的贡献。
关于变基(rebase)
来源于GeekHour
1 |
|
关于压缩(squash)
它将多个提交合并成一个提交,从而简化提交历史。虽然会保留所有代码变更的最终结果,但会丢失每个提交的细节信息,从而无法追溯每个中间开发步骤
关于git rm
情况一:如果已经暂存了,就不能直接git rm
bash会报错,会导致暂存区的更改丢失。
1 |
|
当你误提交了一个有用的文件时,可以使用git rm --cached <file>
来删除,但是会保留在本地
当你决定弃用一个文件的话,可以使用git rm -f <file>
来强制删除
情况二:如果没有暂存,就可以直接git rm
,会同时删除工作区和暂存区的文件
2025-2-24
文件的常见操作
关于这些系统命令是否需要加
git
前缀,需要根据这个文件(目录)是否被纳入管理即有没有被add
1 |
|