一、从Git回退未Add的文件
$ git checkout 文件名
当我们修改了文件但还未执行git add将其加入暂存区时,可以使用git checkout撤销修改。这将覆盖本地工作目录中的文件并还原为最近的提交状态。
需要注意,这个命令只能撤销未add的文件。如果已经执行了git add,需要使用其他的方法撤销修改。
二、Git add后回退命令
$ git reset HEAD 文件名
如果已经使用git add将文件加入到暂存区,但是又想要撤回这个操作,我们可以使用git reset HEAD命令将暂存区的文件移出。
需要注意,这个命令只是将暂存区的文件移出,本地工作目录中的文件不会被修改。如果需要撤销本地工作目录的修改,需要使用git checkout命令。
三、Git回退add的文件
$ git commit --amend
如果已经执行了git add,并且还未执行git commit,我们可以使用git commit --amend修改最近的提交。这将覆盖最近的提交并将当前添加到暂存区的文件包含在新的提交中。
需要注意,如果有多个文件被add,只能将它们全部包含在新的提交中,不支持选择性地撤销一部分文件。
四、Git add没有反应
有时我们执行了git add命令,但是发现没有任何反应。这通常是因为文件名包含了敏感字符,如中文、空格等。
解决方法有两种:
- 使用git add命令时用引号将文件名包裹起来。
- 将敏感字符替换为下划线或其他合法字符。
五、Git回退版本
$ git reset [--hard | --soft] 版本号
如果我们想将仓库中的所有文件都回退到某一个特定的版本号,可以使用git reset命令。
需要注意:
- 如果使用--hard参数,本地工作目录中的文件也会被修改为回退后的状态,未提交的修改也会被删除。
- 如果使用--soft参数,本地工作目录中的文件不会被修改,但是未提交的修改仍然存在。
六、Git add指定文件
$ git add 文件名
如果只想对某个文件执行git add操作,可以指定文件名。
需要注意,如果执行了git add文件夹名(或者“.”),则会将整个文件夹下的所有文件都加入暂存区。
七、GitLab回退版本
$ git revert 版本号
如果是在使用GitLab这样的代码托管服务中工作,可以使用git revert命令来回退版本。
与git reset不同,git revert会创建一个新的提交,将选定版本中修改的内容撤消,并将其作为一个新的提交提交到分支上。这样可以保留回退的记录,也可以方便地恢复到之前的状态。
八、Git add文件夹
$ git add 文件夹名
如果需要将整个文件夹加入暂存区,可以使用git add命令指定文件夹名。
需要注意,如果文件夹下的某些文件不需要加入暂存区,需要在执行该命令之前将这些文件加入.gitignore文件中,否则每次执行git add都会将这些文件也加入暂存区。
九、Git回退commit
$ git reset [--hard | --soft] HEAD~n
如果想要回退多个commit,可以使用git reset [--hard | --soft] HEAD~n命令,其中n表示要回退的提交数。
与回退版本的方法一样,--hard参数会将本地工作目录中的文件也修改为回退后的状态,未提交的修改也会被删除;--soft参数则不会修改本地工作目录中的文件,但是未提交的修改仍然存在。