git 常用命令

生成SSH公钥

cd ~/.ssh
ssh-keygen -t rsa -C "your_email@youremail.com"
cat ~/.ssh/id_rsa.pub  显示公钥

配置全局用户名

git config --global user.name "username"
git config --global user.email "xxxx@email.com" 
git config -l  查看所有配置参数

克隆仓库

git clone git://github.com/jquery/jquery.git

项目初始化

mkdir project_dir 创建项目目录
git init  初始化项目
touch README 生成readme 的空文件
> README 【或】生成readme 的空文件

git add -A  添加当前文件夹所有文件    
git commit -m '[comment]'    进行提交
git commit -a  提交所有修改的文件(不包括新建的文件)
git commit -am '[comment]'  全部提交
git status  查看git状态

建立git仓库

mkdir project.git
cd project.git
git --bare init 

删除文件

git rm [file_name] 移除文件(包括路径)
git rm -r -f [dir_name]  遍历移除文件夹的所有内容

工作目录中添加一个叫”.gitignore”的文件,用来忽略某些文件。

日志

git log 查看git日志
git log -p 查看详细日志
git log --pretty=oneline 查看日志显示在一行

远程操作

git remote -v 查看远程仓库
git remote add origin git@github.com:xxxx.git 添加远程仓库
git remote rm origin 移动远程仓库
git remote set-url --push origin [new_url] 修改远程仓库
git remote show origin 显示远程库origin的资源 
git push origin master
git pull origin master

分支操作

git branch 查看本地所有分支
git branch -a 查看所有分支[包括远程]
git branch -r 查看远程所有分支 

git branch feature1 master 从主分支master创建分支feature1
git branch -m old_branch_name new_branch_new 分支改名

git checkout [branch] 切换到分支
git checkout -b [branch] 创建并切换到分支
git checkout -t origin/dev 切换到远程分支

删除分支
git branch -d [branch_name] 删除一个分支
git branch -D [branch_name] 强制删除未合并的分支
git push origin :branch_remote_name 删除远程分支
git branch -r -d branch_remote_name 删除远程分支

分支合并(将dev分支合并到master)    
git checkout master
git pull origin master
git merge dev  执行合并
git push origin master    

标签

git tag 列出所有标签
git tag [tag_name] 打标签
git tag [tag_name] -a "comment" 打标签并加注释
git tag -d [tag_name] 删除本地的标签

git pull origin --tags 获取远程的所有标签
git push origin --tags 推送本地的标签到远程
git push origin [tag_name] 将标签推送到远程
git push origin :refs/tags/tag_name 删除远程标签

比较
git diff 查看尚末缓存的更新
git diff [commit_version] [commit_version] 显示两次提交的区别
git diff master dev 显示两个分支的差异
git diff master 显示工作目录与master分支的差异
git diff –cached 显示当前索引与上次提交的差异

版本管理

git reset --hard HEAD 撤消一个合并
git revert [commit_version] 还原某个版本的修改
git reset [commit_version] 将工作目录还原到某个版本
git checkout [branch_name] [commit_version] 签出某个提交版本的分支
git reabse 重新定义分支的版本状态

git rebase

子模块

git submodule add  url path  添加子模块

gitignore

顶层工作目录中添加一个叫”.gitignore”的文件,用来忽略某些文件。

例子:

# 以'#' 开始的行,被视为注释.
# 忽略掉所有文件名是 foo.txt 的文件.
foo.txt
# 忽略所有生成的 html 文件,
*.html
# foo.html是手工维护的,所以例外.
!foo.html
# 忽略所有.o 和 .a文件.
*.[oa]

参考资料