在ubuntu 14.04上安装
sudo apt-get install git
安装用到的依赖或工具
sudo apt-get install git-doc git-svn git-email git-gui gitk
第一次使用前的配置
git config --global user.name "Elvin"
git config --global user.email "jianlongliang@qq.com"
创建一个仓库(文件夹),并初始化仓库
mkdir -p /home/elvin/git_test
cd /home/elvin/git_test
git init
创建或修改一个文件
sudo touch test.txt
把文件加入暂存区
git add test.txt
提交文件到现在的分支中
git commit -m "a first test file"
查看当前分支的日志文件
git log
只显示各提交版本的commit id
git log --pretty=oneline
回退到上一个版本
git reset --hard HEAD^
git reset --hard 3628164
查询各版本号
git reflog
查询上一个已提交版本与当前文件间的差别
git diff HEAD -- readme.txt
撤销已修改的工作区文件到上一次暂存或者上一个版本
git checkout -- readme.txt
撤销已放入暂存区文件到工作区
git reset HEAD readme.txt
对于add入暂存区的文件,若误删除了,要恢复也可以
git checkout -- readme.txt
若是真正需要删除,删除后需要
git rm readme.txt
git commit -m "remove readme.txt"
创建SSH Key
ssh-keygen -t rsa -C "jianlongliang@qq.com"
在用户主目录的.ssh目录中,id_rsa为私匙,id_ras.pub为公匙
公匙内容贴到GitHub Account setting内的SSH Keys页面中,完成SSH Key的关联
关联本地库和远程库
git remote add origin git@github.com:elvinsys/git_test.git
把本地库内容推送到远程库(前提是远程库为空库,此为第一次本地推到远程)
git push -u origin master
以后的推送方式直接用
git push origin master
从远程库克隆镜像到本地
git clone git@github.com:elvinsys/git_test.git
(关于地址
https://github.com/elvinsys/git_test.git 为https协议
git@github.com:elvinsys/git_test.git 为ssh协议
(在win7-64bit的安装和使用)
安装包从https://git-for-windows.github.io 下载,下载后打开Git Bash进行操作
配置user.name和email,创建仓库目录,初始化仓库
生成ssh key,ssh-keygen -t rsa -C "email(并不是远程的email,而是本地的email"
在本地目录下生成了两个文件,为XXX和XXX.pub,
把他们扔到~/.ssh里,并改名为id_rsa和id_rsa.pub(重要)
把id_rsa.pub的内容贴到github上就可以准备克隆拉数据了!
显示分支
git branch
创建分支
git branch new-branch
删除分支
git branch -d new-branch
强制删除分支
git branch -D new-branch
切换分支
git checkout new-branch
创建并切换到刚创建的分支上(等同于 git branch new-branch 再 git checkout new-branch)
git branch -b new-branch
合并某分支到当前分支
git merge new-branch
对于产生的分支冲突(branch conflict)只能手动修改后才能正常合并
带可视化图形log命令
git log --graph --pretty=oneline --abbrev-commit
为了避免Fast Forward模式所造成的分支信息丢失的情况,可以通过禁用ff模式来合并分支
git merge --no-ff -m "merge with no-ff" new-branch
在非正式版master分支的工作分支上开发途中,通过保存现场,可临时切换到其他分支进行其他的工作
git stash
git checkout other-branch
当在其他分支工作完成后,可切回原先的分支,查看stash列表后,恢复现场,回复后要删除
git checkout now-branch
git stash list
git stash apply
git stash drop
(或者git stash pop,效果相等于先apply,然后自动drop)
(关于多人协作)
A君把master和dev两个分支push上github
git push origin master
git push origin dev
B君要把dev从服务器上拉下拉,先把现在的工作分支另起一分支,删掉原分支,再拉数据
git checkout -b dev_tmp
git branch -d dev
git fetch
git checkout -b dev origin/dev
修改后在push上github
对当前分支版本打新标签
git tag v1.0
查看所有的标签
git tag
对以往某个版本打新标签,要先查到那个版本的commit id
git tag v1.0 62e6714
打标签的同时,通过加入 -a -m 选项指定标签名和说明文字
git tag -a v1.0 -m "merge two files"
跳到某标签处,和查找commit id一样
git reset --hard v1.0
推送某个标签到远程
git push origin v1.0
推送所有标签到远程
git push origin --tag
删除本地标签
git tag -d v1.0
删除远程标签,要先删除本地的
git tag -d v1.0
git push origin :refs/tags/v1.0
让Git显示颜色
git config --global color.ui true
让Git忽略一些无需关注的文件,例如编译后生成的中间文件,如:*.o
在工作去创建特殊文件.gitignore,把需要忽略的文件格式填进去。
(配置文件可从https://github.com/github/gitignore下载)
添加被.gitignore忽略的文件
git add -f test.o
检查.gitignore中的规则
git check-ignore -v test.o
配置git status命令的别名为git st
git config --global alias.st status