一.绑定设置
-
设置你的名字和Email :
git config --global user.email "email@example.com"
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。 -
创建版本库
--创建文件夹(本本库)
cd learngit
--pwd命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/michael/learngit。
git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
--SSH测试连接远程git仓库的权限(免费版本,付费版bitbucket)
$ ssh -T git@github.com
二.把一个文件放到Git仓库
--把文件添加到仓库
$ git add readme.txt
--用命令git commit告诉Git,把文件提交到仓库
$ git commit -m "wrote a readme file"
--查看修改过的文件
$ git status
--具体修改了什么
$ git diff readme.txt
--查看日志(全部信息)
$ git log
--查看日志(简版只有commit_id 和日志)
$ git log --pretty=oneline
--回退一个版本
$ git reset --hard HEAD^
--查看文件内容
$ cat readme.txt
--跳转到指定的版本(commit_id前几位就行)
$ git reset --hard 1094a
--输出每次操作的记录id
$ git reflog
(每次修改后都需要add,如果不add就不会被提交上去)
--放弃缓存区里已经add但未commit的文件
$ git checkout -- readme.txt
--删除文件
$ rm test.txt
$ git rm test.txt
$ git commit -m "remove test.txt"
(rm文件后需要git rm 删除文件,在提交)
三.远程仓库
(在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步)
--创建SSH Key(邮箱要和github上的邮箱一样)
$ ssh-keygen -t rsa -C "youremail@example.com"
(把id_rsa.pub里的公钥复制到github上的ssh密钥里即可,之后的用户名密码什么的直接回车就行,其中有一个确认的过程 “y/n” 选yes )
--添加远程库
$ git remote add origin git@github.com:你的github账号/项目名.git
--把本地库的所有内容推送到远程库上(第一次需要-u,master是默认的分支也就是主分支)
$ git push -u origin master
--以后提交到远程库就不需要-u了
$ git push origin master
--从远程库克隆
$ git clone git@github.com:你的github账号/你的项目名.git
--输出查看本机的sshkey 如果没有使用 ssh-keygen生成在查看一下
$ cat ~/.ssh/id_rsa.pub
四.分支管理
--创建分支,并切换(最后面是分支名)
$ git checkout -b erajiezhang
--创建分支(最后面是分支名)
$ git branch erajiezhang
--切换分支(最后面是分支名)
$ git checkout erajiezhang
--查看当前分支
$ git branch
--删除分支(最后面是分支名)
$ git branch -d erajiezhang
--合并某分支到当前分支(最后面是分支名)
& git merge <name>
--禁用Fast forward合并分支(加上-m参数,把commit描述写进去)
$ git merge --no-ff -m "merge with no-ff" dev
--存储当前分支
$ git stash
--查看存储分支列表
$ git stash list
--恢复存储的分支
$ git stash apply
--删除存储的分支
$ git stash drop
--恢复的同时把stash内容也删了
$ git stash pop
--删除还没有合并的分支
$ git branch -D feature-vulcan
--查看远程分支
$ git remote
--查看远程分支的详细信息
$ git remote -v
--抓取远程的新提交
$ git pull
--在本地创建和远程分支对应的分支
$ git checkout -b branch-name origin/branch-name
--建立本地分支和远程分支的关联
$ git branch --set-upstream branch-name origin/branch-name
--把本地未push的分叉提交历史整理成直线
$ git rebase
五.标签管理
--创建标签
$ git tag v1.0
--查看所有标签
$ git tag
--对之前的提交创建tag
$ git tag v0.9 f52c633
--查看标签信息
$ git show <tagname>
--创建带有说明的标签,用-a指定标签名,-m指定说明文字
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
--删除标签
$ git tag -d v0.1
--推送标签到远程仓库
$ git push origin <tagname>
--一次性推送全部尚未推送到远程的本地标签
$ git push origin --tags
--删除远程仓库的标签(需要现在本地删除)
$ git push origin :refs/tags/v0.9
六.自定义Git
--让Git显示颜色
$ git config --global color.ui true
忽略某些文件时,需要编写.gitignore
--强制添加到Git
$ git add -f App.class
--检查gitignore文件
$ git check-ignore -v App.class
--配置别名
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'(把暂存区的修改撤销掉(unstage),重新放回工作区)
$ git config --global alias.last 'log -1'(让其显示最后一次提交信息)
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
--查看别名
$ cat .gitconfig
网友评论