Git基础(3):撤消操作和远程仓库的使用

撤销操作

commit –amend

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。这是我们可以运行带有--amend选项的commit命令尝试重新提交:

1
2
3
4
5
// 修改最近一次提交的提交信息
$ git commit --amend -m "XXX"
// 向最近一次提交添加漏掉的几个文件
$ git add forgotten_file
$ git commit --amend

取消暂存的文件

如果想取消暂存区域的某个文件,可使用以下命令来取消暂存:

1
2
3
$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M CONTRIBUTING.md

在调用reset命令时,如果加上--hard选项,如$ git reset --hard HEAD~~,会导致分支向前移动,导致文件丢失。

使用rebase -i修改提交

如果要修改第一次提交,需使用以下命令:

1
$ git rebase -i --root

如果要修改最近n次提交,需使用以下命令:

1
$ git rebase -i HEAD~n

撤销对文件的修改

如果你对某个文件做了修改,但还没保存至暂存区域,这时,你想撤销修改,将它还原成提交时的样子,该怎么做呢?可使用以下命令进行执行:

1
$ git checkout -- CONTRIBUTING.md

注:你需要知道 git checkout -- [file] 是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。 除非你确实清楚不想要那个文件了,否则不要使用这个命令。

远程仓库的使用

远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。

查看远程仓库

通过运行git remote命令,查看已经配置的远程仓库服务器,它会列出指定的每一个远程服务器的简写。

1
2
$ git remote
origin

注:远程仓库服务器的默认名称为 origin

可以通过指定选项 -v,显示需要读写远程仓库使用的Git保存的简写与其对应的URL。

1
2
3
$ git remote -v
origin https://github.com/GongchuangSu/GitInAction.git (fetch)
origin https://github.com/GongchuangSu/GitInAction.git (push)

添加远程仓库

通过运行 git remote add <shortname> <url> 指令,添加一个新的远程Git仓库,同时可以指定一个能够轻松引用的简写。

1
2
3
4
5
6
$ git remote add gs https://github.com/GrantSu/GitInAction
$ git remote -v
gs https://github.com/GrantSu/GitInAction (fetch)
gs https://github.com/GrantSu/GitInAction (push)
origin https://github.com/GongchuangSu/GitInAction.git (fetch)
origin https://github.com/GongchuangSu/GitInAction.git (push)

远程仓库的移除与重命名

通过运行 git remote rename 命令,可以修改一个远程仓库的简写名。如将gs重命名为grant,可以进行如下操作:

1
2
3
4
$ git remote rename gs grant
$ git remote
grant
origin

通过运行 git remote rm 命令,可以移除某个远程仓库:

1
2
3
$ git remote rm grant
$ git remote
origin

从远程仓库中抓取与拉取

通过运行 git fetch [remote-name] 访问远程仓库,从中拉取所有你还没有的数据。执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

1
2
3
$ git fetch gs
From https://github.com/GrantSu/GitInAction
* [new branch] master -> gs/master

推送到远程仓库

通过运行 git push [remote-name] [branch-name] 命令,将要分享的项目推送到上游。如想要将 master 分支推送到 origin 服务器时,可使用以下指令:

1
$ git push origin master

注:只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。

查看远程仓库

通过运行 git remote show [remote-name] 命令,查看某一个远程仓库的更多信息。

1
2
3
4
5
6
7
8
9
10
11
$ git remote show origin
* remote origin
Fetch URL: https://github.com/GongchuangSu/GitInAction.git
Push URL: https://github.com/GongchuangSu/GitInAction.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)

参考资料

https://git-scm.com/book/zh