Git入门
简单为大家讲解下Git入门的一些知识。
安装Git
想要使用Git工具,第一步肯定是要安装Git。不同的操作系统有不同的安装方式:
在Linux上安装
如果用的是Debian或Ubuntu Linux,通过命令sudo apt-get install git
就可以直接完成Git的安装,非常简单。
如果是其他的linux版本,可以直接在Git官网上下载源码,然后通过tar解压,输入./configure prefix=xxx配置Git安裝路径,再通过make命令编译,最后在通过sudo make install进行安装。安装完成之后可以通过git --version查看版本号,如果能查到则表示安装成功。
在Mac OS X上安装
有两种安装方式:
第一种是使用图形化的 Git 安装工具,下载地址在:http://sourceforge.net/projects/git-osx-installer/
第二种是MacPorts (http://www.macports.org
) 安装,如果已经装好了 MacPorts,用下面的命令安装 Git:
$ sudo port install git-core +svn +doc +bash_completion +gitweb
在Windows上安装
直接在git官网https://git-scm.com/downloads上下载对应版本后按默认选项安装即可。(安装路径中最好不要使用中文)
安装完成之后,还需要进行一些设置,为仓库指定用户名和Email地址:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
ps: --global参数表示本机上所有仓库都使用这个配置。
创建版本库
1.在命令行中输入mkdir learngit创建文件夹,文件名不要使用中文,然后通过cd learngit进入文件夹
2.通过git init命令把该文件夹初始化git仓库,通过ls -al命令可以查看到目录下多了一个.git的目录,该目录用于跟踪管理版本库
3.在learngit目录下,通过命令echo "This is a file to learn git" > readme.txt,创建一个readme.txt文件
4.使用git add readme.txt将文件添加到缓存区
5.使用git commit将文件提交到仓库:git commit -m "wrote a readme file",-m参数后输入的是本次提交的说明信息。命令执行成功后,会显示:
$ git commit -m "wrote a readme file"
[master ae4c183] wrote a readme file
1 file changed, 1 insertions(+)
create mode 100644 readme.txt
commit可以一次提交多个文件。
6.提交成功之后可以通过git log命令查看提交记录。
Git的最基本操作就到这了,接下来列举下git的常用指令
Git的一些常用指令
- 查看暂存区与工作区的区别(修改内容)
git diff
如果要查看暂存区与版本库的区别就添加--cached参数;查看工作区与版本库的区别添加HEAD -- filename参数。
- 查看工作区状态
git status
- 查看提交的日志信息
git log
如果只是想查看简单的信息可以加上--oneline参数
- 回退版本/重返未來
git reset --hard HEAD^/commit id
要重返未來,可以通过查看命令历史
git reflog
查找要回到未来的commit id
- 撤销修改
1.文件修改后,没有add到暂存区:
git checkout -- <filename>
2.文件修改后,add到暂存区但未commit:
git reset HEAD <filename>
git checkout -- <filename>
3.文件修改后,add到暂存区且commit到本地版本库,但是未同步到远程版本库可通过回退版本撤销。
4.如果同步到远程版本库了,就等着被骂吧
- 删除文件
git rm <filename>
git commit -m <message>
如果删除后需要恢复,可以使用回退版本的方法。
- 创建分支
git branch <branchname>
- 切换分支
git checkout <branchname>
- 创建并切换分支
git checkout -b <branchname>
- 查看分支(当前分支前会标*)
git branch
- 合并指定分支到当前分支
git merge <branchname>
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后能看出来曾经做过合并,沒加參數就看不出來
- 删除分支
git branch -d <branchname>
如果要删除没有被合并过的分支,可以将-d参数改成-D强制删除
- 查看分支合并图
git log --graph
- 保留工作现场
git stash
- 恢复工作现场
git stash apply
- 删除保留的stash内容
git stash drop
- 恢复工作现场并删除stash内容
git stash pop
- 查看stash内容
git stash list
- 把未推送的分叉提交历史合并
git rebase
- 为当前版本打标签
git tag <tagname>
可以为标签加说明,用-a指定标签名,-m指定说明
- 为历史版本打标签
git tag <tagname> <commit id>
- 查看所有标签
git tag
- 查看标签信息
git show <tagname>
- 删除本地标签
git tag -d <tagname>
与远程仓库github相关:
如果本地Git仓库与远程仓库github之间的传输是通过SSH加密,需要进行设置:
1.创建SSH Key:进入用户主目录,进入.ssh目录,查看是否有id_rsa和id_rsa.pub两个文件,如果没有,就通过命令创建SSH Key
cd ~
cd .ssh
ls
ssh-keygen -t rsa
ps:如果要为SSH Key添加注释,可以用-C “<comment>”
创建时使用默认值即可,创建成功后目录中就会有id_rsa和id_rsa.pub两个文件
2.登陆Github,打开“Account settings”,“SSH Keys”页面,然后“Add SSH Key”,Title任意填写,在key文本框中粘贴id_rsa.pub文件的内容后再点击“Add Key”即可
相关指令如下:
- 关联远程库(git给远程库的默认名是origin,可以修改)
git remote add origin <远程仓库的地址>
- 把本地库分支的所有内容推送到远程库
git push -u origin <branchname>
第一次推送时需要添加-u参数,之后推送就不需要添加-u参数了
- 从远程库克隆本地库
git clone <远程仓库的地址>
- 查看远程库信息
git remote
如果要显示详细信息可以在后面添加-v参数
- 在本地库创建与远程库对应的分支
git checkout -b <branchname> origin/<branchname>
- 建立本地分支与远程分支的链接
git branch --set-upstream <branchname> origin/<branchname>
- 抓取远程库的最新提交
git pull
- 忽略特殊文件
在Git工作区的根目录下创建.gitignore文件,把需要忽略的文件名写入文件即可。若想添加被忽略的文件,可以用-f参数强制添加。
- 配置别名
git config --global alias.<别名> 原名
--global参数是全局参数,使本机所有Git仓库都可用
每个仓库的Git配置文件都放在.git/config文件中,而当前用户的Git配置文件放在用户主目录下的.gitconfig中。