一.Git常用命令
1.安装
a).在Linux上安装Git
sudo apt-get install git
b).在Mac OS X 上安装Git
通过Homebrew安装git
brew install git
c).在Windows上安装Git
使用msysgit
2.设置用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
这里注意git config 的 –global参数,这是全局配置参数,这样设置后,这台机器的所有git仓库都会用这个配置,我们也可以对不同的仓库指定不同的用户名和邮箱。
3.创建版本库
git init
该命令可以让一个目录初始化为一个git仓库,之后我们可以看到该目录下会有个.git目录,该目录就是用来跟踪版本库的。
4.远程仓库
创建SSH
$ ssh-keygen -t rsa -C "youremail@example.com"
创建成功后会在用户目录下找到.ssh目录,里面有id_rsa和id_rsa.pub两个秘钥文件.pub是公钥。将公钥添加到Git服务器就可以进行远程仓库的使用了。
clone
https协议和ssh协议,https协议还没试过 试过再写下。下面是用的ssh协议clone的
git clone ssh_url
//关联远程仓库,origin是关联后的远程库的名字,默认为origin,也可以关联的时候改成别的
git remote add origin git@server-name:path/repo-name.git
git remote //查看远程库的信息
git remote -v //显示更详细信息,可以fetch和push的地址,没有push权限看不到push的信息
git remote show <remote_name> //查看远程仓库的详细信息
//推送到远程库,-u参数是关联远程分支,以后push的时候简化操作,推送到origin库的master分支上
git push -u origin master
git add <file> //将工作区的内容添加到暂存区
git commit -m "" //将暂存区的内容提交到分支上
git status //查看仓库当前的状态
git diff //查看修改的内容
//版本回退
git reset --hard commit_id
git reset HEAD file //把暂存区文件的修改撤销,退回到工作区
git log //查看提交历史,以便确定回退到哪个版本
git reflog //查看命令历史,以便确定回到未来哪个版本
git checkout -- file //丢弃工作区的修改
git checkout //其实是用版本库里的版本替换工作区的版本
git checkout -b dev //创建并切换到dev分支
git branch dev //这两条命令等于上面加-b参数的命令效果
git checkout dev
//在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
//从版本库中删除文件,然后commit提交,先在工作区将文件删除再用git rm删除,或者add到暂存区,然后再commit
git rm
git branch //查看分支,列出所有分支,当前分支前加 *
git branch -d dev //删除分支
git branch -D dev //删除没有被合并过的分支
git branch -a //查看分支,(包括远程分支)远程分支会用红色显示出来
//设置本地分支与远程分支的链接
git branch --set-upstream dev origin/<branch>
//查看各个分支最后一个提交对象的信息
git branch -v
git branch merged //查看已经被合并到当前分支的分支
git branch --no-merged //查看尚未合并的工作分支
//合并分支,指定分支(dev)合并到当前分支
git merge dev
//快进模式,将当前分支直接指向要合并的分支的当前提交
Fast-forward
//修改最后一次提交
$ git commit --amend
git log --graph //可以查看分支合并图
解决冲突
!!!
git stash //存储当前分支工作区
git stash list //查看stash列表
git stash apply stash@{0} //恢复到指定stash,并不删除
git stash drop //删除指定的stash
git stash pop //恢复的同时也把stash内容删除了
//创建标签,默认标签打在最新的commit上
git tag <name>
//若要给之前的commit打tag,需要找到该commit的id
git tag <name> commit_id
//查看tag列表,标签不是按时间顺序列出的,是按字母排序的
git tag
//查看tag标签信息
git show <tagname>
//创建带有标签信息的tag(id可指定,不指定则默认当前分支commit)
git tag -a <name> -m <message> commit_id
//删除标签
git tag -d <tagname>
(标签的推送这里先不记录,个人也没用过推送标签到远程)
!!!rebase