以下内容大部分总结自廖雪峰的git教程,添加了部分自己总结的内容。
教程原址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
特别提示,在使用git命令时,有任何疑问的地方,可以加--help获得使用说明。特别地,如git push --help 会打开本地帮助文档,其中有详细用法
创建版本库
-
初始化一个Git仓库:cd到某个目录,使用
git init
命令,该目录就成了Git仓库。 -
添加文件到Git仓库,分两步:
-
第一步,使用命令
git add <file>
,注意,可反复多次使用,添加多个文件; -
第二步,使用命令
git commit -m 'comment what you commit'
,完成。
-
-
要随时掌握工作区的状态,使用
git status
命令。 -
如果
git status
告诉你有文件被修改过,用git diff <>
可以查看修改内容。
回到过去VS重返未来
-
Git允许我们在版本的历史之间穿梭,使用命令
git reset --hard commit_id
- 在Git中,
HEAD
表示当前版本,上一个版本就是HEAD∧
,上上一个版本就是HEAD∧∧
,当然往上100个版本写100个∧比较容易数不过来,所以写成HEAD~100
-
要回到过去,用
git log
可以查看提交历史和commit id, 以便确定要回退到哪个版本。 -
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
工作区与暂存区
工作区(working directory),就是你电脑上能看见的目录。工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库(repository)。Git版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
- 第一步,工作区文件发生了修改,此时git status, 会看到Changes not staged for commit
第二步,git add添加文件
,实际上是把文件修改添加到暂存区(stage);此时git status ,会看到 Changes to be commit:
- 第二步,
git commit
提交更改,实际上是把暂存区(stage)的所有内容一次性提交到当前分支(master)。
注意:每次修改,如果不add
到暂存区,那就不会加入到commit
中。
撤销修改
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD file
,就回到了场景1,第二步按场景1操作。 - 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,git reset --hard HEAD^,不过前提是没有推送到远程库。
- 命令
git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
远程仓库
- 第一步,注册github账号http://github.com
- 第二步,创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有
id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key: ssh-keygen -t rsa -C "youremail@example.com" -
第三步,登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴
id_rsa.pub
文件的内容 -
要关联一个远程库,使用命令:
git remote add origin git@github.com:huamingao/homework.git
(huamingao请替换为你自己的git username, homework请替换为你自己的git库名) -
关联后,第一次推送master分支的所有内容到远程仓库:使用命令:
git push -u origin master
-
此后,每次本地提交后,只要有必要就推送最新修改,可以使用命令:
git push origin master
- 从远程仓库下载内容到本地,使用git pull命令
特别注意:上面三行命令是使用ssh连接与github网站进行上传(push)与下载(pull)操作。如需使用http连接与github网站通信,可以使用如下命令,注意这种情况下,可能会弹出提示要求你输入github用户名和密码:
git push http://github.com/huamingao/homework.git/ git pull http://github.com/huamingao/homework.git/
设置代理
- 在用户主目录下找到 .gitconfig 文件,添加如下行,这样设置了http/https/ssh三种连接的代理
[user] name = username email = user mailbox [http] proxy = http://proxyserver:8080 [https] proxy = https://proxyserver:443 [ssh] proxy = ssh://proxyserver:22
- 也可以通过执行如下命令,配置.gitconfig文件,执行完成后文件内容就变成了上面那样:
git config --global user.name "username" git config --global user.email usermailbox git config --global http.proxy http://proxyserver:8080 git config --global https.proxy https://proxyserver:443 git config --global ssh.proxy ssh://proxyserver:22