Git 教程(2):Git 的基本操作
创建新仓库
“版本库”也叫做“仓库”,英文名repository,可以理解成一个目录,放在这个目录下的所有文件都可以用 Git 进行管理。
首先要创建一个目录,把需要管理的文件放进去,然后在此目录下打开 Git Bash。对目录进行初始化,把它变成一个仓库:
$ git init
Initialized empty Git repository in D:/test/.git/
这样,一个新的仓库就建好了。目录下会出现一个 .git
文件夹,是 Git 的管理文件,不要随意修改里面的文件。
添加和提交文件
先说本地仓库的结构,分为 3 部分:工作区,暂存区和 HEAD。简单画了个图示意下:
示意图工作区:即我们的工作目录,存放我们的工作文件;
暂存区:缓存区域,临时保存我们的的改动,暂时存放需要提交的文件;
HEAD:指向我们最近一次提交的结果;
添加指定文件到暂存区;
$ git add <filename>
添加工作区所有文件到暂存区;
$ git add .
提交文件:
$ git commit -m "test"
[master (root-commit) 950f834] test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test.txt
$ git commit -m "xxx"
:该命令将暂存区所有文件一次性提交到分支,“xxx”部分可以写上对本次提交的说明。
每修改一次文件,我们都可以把修改后的文件添加到暂存区,然后提交到仓库中,记录下我们的每次修改。
撤销修改
如果修改错了文件,想要把文件恢复到本次修改前提交过的某个版本,可以使用 git reset --hard commit_id
命令,恢复到提交过的指定 id 的历史版本;
如果我们已经把修改过的错误文件添加到了暂存区,可以用 git reset HEAD file
命令把暂存区的修改撤销掉;
如果想让工作区文件恢复到最近一次 add
或者 commit
的状态(即丢弃工作区的修改),可以使用 git checkout -- <filename>
。
远程仓库
1.创建密匙
安装完 Git 后,我们可以在 C:\Users\user
目录下发现 .ssh
文件夹(要打开显示“隐藏的项目”选项),里面有 SSH Key 的秘钥。id_rsa
是私钥,id_rsa.pub
是公钥。
如果没有,也可以手动创建。
打开 Git Bash,输入
$ ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车即可,创建 SSH 密匙。生成位置在 C:\Users\user
目录下。
2.连接 GitHub
登陆 GitHub ,进入 Settings 页面,选择左边栏的 SSH and GPG keys 项,点击 New SSH key,添加密匙:
添加密匙Title 随便取个名字,Key 中粘贴上 id_rsa.pub
中的内容,点击 Add SSH key 即可添加。
添加成功后就如 Title 框上面的 SSH 信息所示。
推送
关联远程仓库
首先要添加关联远程仓库,登陆 GitHub,新建一个仓库,点击右上角的 “+”,选择 “New repository”,在 “Repository name”中填入仓库名字,这里以 “test” 为例,然后点击“Create repository”,就成功地创建了一个新的仓库。
接下来,在本地仓库中运行,
$ git remote add origin git@github.com:username/learngit.git
把上面的 username
改成自己的 GitHub 账户名,就可关联远程仓库了。
添加后,远程库的默认名字是 origin,也可以自己更改为其他名字。
推送到远程库
然后就可以把本地仓库推送到 GitHub 刚刚新建的远程库了。
$ git push -u origin master
第一次推送,如果远程库是空的,需要加上 -u
。以后的推送可以省去。
标签
给指定 id 的版本创建标签 v1.0,
$ git tag v1.0 commit_id
查看所有标签,
$ git tag
显示标签信息,
$ git show <tagname>
删除本地标签,
$ git tag -d <tagname>
推送某个标签到远程库,
$ git push origin <tagname>
删除远程库标签,
$ git push origin :refs/tags/<tagname>
简化命令
有没有觉得每次都要敲一段长长的命令很烦人,我们可以通过简单的设置来起“别名”简化命令!
比如,用 git st
来表示 git status
,运行如下命令就能办到:
$ git config --global alias.st status
以上命令告诉 Git,使用 st
代替 status
。
我们可以设置,使用 co
表示 checkout
,ci
表示 commit
,
$ git config --global alias.co checkout
$ git config --global alias.ci commit
其他的可以根据自己的习惯进行设置。加上 --global
是针对当前用户起作用;不加,只针对当前的仓库起作用。
如果想要删除或更改某个别名,对于当前仓库起作用的:打开 .git/config
文件,删除或修改 [alias]
后的相应语句即可。
对于当前用户起作用的:配置文件在 C:\Users\user\.gitconfig
。