前几天安装Ubuntu捣鼓了一下linux,并学习了一些git语法,所以为了方便以后忘记了能够快速记起,写一篇简单的博客记录git的常用语法,相关细节就没有细说,具体请看下面的参考网站。
文章主要参考廖雪峰的个人网站,在此推荐一下:git教程-廖雪峰的官方网站
Ubuntu安装git的教程可以查看:如何在Ubuntu下使用git
Windows等的安装和操作方式网上也有,就不贴出了。
一、安装及链接git
git是分布式的版本管理系统,虽说是分布式的,但为了方便大家的代码管理,可以使用github网站,也可以自己创建一个git服务器(廖老师的个人网站最后一节有教程),在此以github为例。
首先在github中申请个人账号,建立个人的repository,如hello-linux。
Ubuntu下安装git十分方便,按Ctrl+Alt+T打开终端,在终端中输入
$ sudo apt-get install git
由于我已经安装了,所以显示已安装,未安装的按照提示输入y回车按照即可。
git需要使用ssh链接,可以用以下代码测试能否链接git:
$ ssh -T [email protected]
在ssh目录下生成ssh keys:
$ cd ~/.ssh $ ssh-keygen -t rsa -C "你自己的github对应的邮箱地址"
记得用自己的github邮箱代替对应上面的位置
发现.ssh目录下已经生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)
利用gedit命令打开id_rsa.pub(公钥),复制里面的内容,在github中点击自己头像,选择Settings》SSH and GPG keys》new SSH keys中粘贴,标题自己取,比如 公司 和 家庭,方便识别具体的用户或设备。
再使用
$ ssh -T [email protected]
就可以看到链接成功的提醒
接下来要配置git,让别人知道你谁
$ git config --global user.name "你的github用户名" $ git config --global user.email "你的github邮箱地址"
其实这个名字和邮箱不需要和github一样。
二、新建或克隆仓库
首先在github网站上新建repository,如hello-linux1、新建本地仓库
对github上新建的仓库,可以使用git init完成初始化
在Documents文件夹下新建hello-linux文件夹并初始化:
$ cd Documents $ mkdir hello-linux $ cd hello-linux $ git init
当远程仓库有文件或有文件改动时可以将远程文件pull到本地
$ git pull
2、克隆已有的仓库
对于已经存在github上的仓库,也可以使用git clone克隆到本地。
在自己仓库中找到ssh或者https链接,复制下来
此处我一样在Documents里操作,所以需要先删除原来新建的仓库
$ git clone <仓库ssh或https链接>
三、提交修改
1、提交改动的文件到缓暂存区
$ git add <filename> 如 git add readme.txt/
提交所在目录的所有文件可以使用:
$ git add . 或 $ git add -A 或 $ git add --all
2、将暂缓区中的文件提交到本地分支
$ git commit -m '提交的备注' 如 git commit -m '提交readme'
3、将本地分支推送到远程仓库
首先关联本地仓库和远程仓库
$ git remote add origin <git仓库地址>
其中origin是git默认的远程仓库别名,也可以用其他名称代替
若提示远程仓库名已存在可用以下代码移除关联
$ git remote rm origin
然后push到远程仓库的分支(master分支为例)
$ git push origin master
一系列操作举例为:
$ git remote add origin [email protected]:Z-HaiSome/hello-linux.git $ git push origin master
四、版本管理
上图中依次为: 工作区->版本库(暂存区->本地分支)
查看本地仓库当前状态
$ git status
查看文件修改差别
$ git diff <file path>
由近到远查看commit历史记录
$ git log
简洁版log视图
$ git log --pretty=oneline
图像型log视图
$ git log --graph 或 $ git log --graph --pretty=oneline --abbrev-commit
回退本地分支文件(恢复到上一个本地commit版本)
$ git reset --hard HEAD^
回退指定本地分支版本(根据commit id)
$ git reset --hard <commit id>
回退后找回之前的commit id / 查看命令历史
$ git reflog
回退暂存区文件(将暂存区文件撤销,放回工作区)
$ git reset HEAD file 如git reset HEAD readme.txt
回退工作区文件(用本地仓库里的文件版本替换工作区的版本)
$ git checkout -- <file name> 如git checkout -- readme.txt(记得加--,否则变为切换分支)
删除版本库文件(工作区里把文件删除了,但版本库里还有时使用)
以readme.txt为例 $ git rm readme.txt $ git commit -m '删除readme.txt'
五、分支管理
创建分支
$ git branch <分支名> 如:git branch dev
切换分支
$ git checkout <分支名> 如git checkout dev
创建并切换分支
$ git checkout -b <分支名> 如:git checkout -b dev 相当于上面两个过程合在一起
查看当前分支状态
$ git branch * dev master 所在分支会有*号
合并分支(使用Fast-forward)
$ git merge <分支名> 如在master分支下合并dev git merge dev 会使用Fast-forward模式进行快速合并,将dev的commit当做master的commit
合并分支(不使用Fast-forward,使用和不使用Fast-forward的区别可以看:Git merge 時使用 fast-forward 的差別)
$ git merge --no-ff -m "commit信息" <分支名> 如master下合并dev: git merge --no-ff -m "merge with no-ff" dev 这将区分dev和master分支
删除分支
$ git branch -d <分支名> 如删除dev分支:git branch -d dev
强制删除分支(分支未被合并时使用)
$ git branch -D <分支名>
分支储藏(储藏未完成的分支方便切换分支,Git 工具 - 储藏(Stashing))
$ git stash
查看储藏栈表
$ git stash list stash@{0}: WIP on dev: 6224937 add merge 上面的stash@{0}标记对应的stash栈结点
恢复储藏的分支工作(但不删除)
$ git stash apply
删除储藏的分支
$ git stash drop
恢复储藏分支并删除(相当于上面两个步骤组合)
$ git stash pop
恢复指定储藏
$ git stash apply stash@{0} stash@{0}是根据stash list修改的
六、标签管理
给上一个commit版本打标签(commit后再打)
$ git tag <name> 如:git tag v1.0
查看标签列表(标签都存储在本地)
$ git tag 附带说明可用: $ git tag -m "message"
给特定的commit id打标签
$ git tag <tag name> <commit id> 如$ git tag v0.9 6224937
查看标签信息
$ git show <tagname>
采用pgp签名标签
$ git tag -s <tag name> -m "message" <commit id> 如: git tag -s v0.2 -m "signed version 0.2 released" fec145a
删除本地标签
$ git tag -d <tag name>
推送指定标签到远程仓库
git push origin <tagname>
推送所有标签到远程仓库
$ git push origin --tags
删除远程仓库的标签
$ git push origin :refs/tags/<tagname>
七、关联其他git仓库(如码云)
关联仓库
$ git remote add <repository name> <git address> 如:$ git remote add githubtest [email protected]:Z-HaiSome/origintest.git关联rogintest仓库并把他别名未githubtest
查看远程仓库信息
$ git remote -v
删除远程仓库关联
$ git remote rm <repository name>
八、自定义git
利用.gitignore忽略工作区文件可查看github/gitignore
让git对不同字段显示不同颜色
$ git config --global color.ui true
配置别名
$ git config --global alias.<别名> "原名" global表示对当前用户有效,不加则表示对当前仓库有效 如 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" 就可以使用 git lg替代上面一连串的git log --color...
此外,搭建git服务器可以查看 搭建git服务器-廖雪峰的官方网站