1. 简介
Git是分布式版本控制系统,不同于SVN,SVN是集中式版本控制系统。
在git bush中输入git help command会打开command的帮助文档,command为任意git指令。用法非常全面。也可以打开下面的网址,自行搜索:
http://file:///D:/Git/mingw64/share/doc/git-doc
2. 几个概念
1)版本库(repository)
Git管理的目标,在本地是一个目录,Git会跟踪目录中文件内容的改动。包括.git目录和其他文件、目录。
2)暂存区(stage)
缓存要进行版本管理操作的文件、目录,在.git目录下。
3)工作区
版本库中除.git目录之外的文件、目录。
3. 远程版本库
1)SSH加密
Git与GitHub交互使用SSH加密或HTTPS。如果是SSH,则需要本地生成密钥。指令如下:
ssh-keygen -t rsa –C "email"
接下来的等待输入可以一直回车,默认会在当前用户目录下生成.ssh/id_rsa和.ssh/id_rsa.pub两个文件。
登录GitHub,依次点击
Settings - SSH and GPG keys - New SSH key,
然后把id_rsa.pub中的内容复制到Key下面的文本框中,点击Add SSH key完成。
2)关联并推送本地版本库和GitHub版本库
git remote add origin https://github.com/username/projectName.git
关联本地版本库和GitHub版本库,后面的URL是GitHub版本库的地址。
git pull --allow-unrelated-histories
更新GitHub版本库的内容。
git push origin master
上传。
---------------------------------------------------------------------------------------------
deprecated@zb.20170311
git push -u origin master
关联并推送本地版本库内容到GitHub版本库。-u选项会关联本地、GitHub两个版本库。
另一种关联方法:
git branch -u origin/master master
---------------------------------------------------------------------------------------------
3)从GitHub版本库创建本地版本库
git clone https://github.com/username/projectName.git
后面的URL是GitHub版本库的地址。
4)更新GitHub版本库到本地版本库
git pull
这个指令相当于执行了git fetch和git merge两条指令。
4. 基础指令
1)config
git config --global user.name "username"
git config --global user.email "email"
设置用户名、邮箱
2)init
git init
在当前目录创建版本库。
3)add
git add test.txt
把文件、目录添加到版本库。
4)commit
git commit -m "修改日志"
把暂存区中的文件提交到版本库中。
5)status
git status
查看当前工作区中的文件状态。是否修改、添加、删除过文件。
6)diff
git diff test.txt
查看文件修改的内容。
7)log
git log
git log --pretty=oneline
查看修改log,pretty参数指定了打印更简洁的log。回退的版本不会显示。
8)reflog
git reflog
打印修改log,包括回退log。
9)reset
git reset --hard HEAD^
git reset --hard HEAD~1
回退一个版本。
git reset --hard 版本号
回退到指定版本号。版本号可以从reflog的打印信息中获得。
10)checkout
git checkout -- test.txt
恢复文件。文件还未add到暂存区,或者add后又修改了,这个指令可以把文件恢复到与版本库一致,或者与暂存区一致。
5. 分支(branch)
1)checkout
git checkout -b newBranch
创建分支newBranch,并切换到此分支。
git checkout newBranch
切换到分支newBranch,分支必须存在。
2)branch
git branch newBranch
创建分支newBranch。
6. 忽略指定文件
在版本目录中新建.gitignore文件,输入要忽略的文件、目录,格式如下:
# 忽略obj、a文件
*.obj
*.a
# 忽略生成目录
Debug
Release
一定要在创建好版本库后就添加此文件,并且输入要忽略的文件、目录。一旦文件、目录已经添加到版本管理中,要想忽略就只能手动移除版本控制了!
7. 移除版本控制
如果文件已经添加到版本库中,想移除版本管理,而且保留本地的文件可以使用以下指令:
#
# 移除版本库中所有obj文件的版本管理
#
# 查看要移除版本管理的文件列表
git rm -r -n --cached \*.obj
# 真正执行移除版本管理操作
git rm -r --cached \*.obj
# -r 递归目录,从当前目录起,递归其所有子目录
# --cached 保留本地文件,只移除版本管理
# \*.obj git拥有自己的文件匹配方式,添加*前的反斜杠是为了防止shell展开
# 记得执行完操作后commit
8. push时需要输入username、password
https模式下,配置的SSH Key并不起作用。以下指令可以防止每次push时输入username、password:
git config --global credential.helper wincred
参考:
http://blog.jobbole.com/78960/
http://blog.sina.com.cn/s/blog_59fb90df0101980a.html
http://stackoverflow.com/questions/11693074/git-credential-cache-is-not-a-git-command