一、基础
git init 初始化一个Git仓库
git add <file> 添加文件
git commit -m <message> 提交
git status 状态
git diff 查看工作区和暂存区的不同
git diff–cached 就是查看暂存区和版本库的不同
git log 查看提交历史
git log --pretty=oneline 只看一行历史
git reset --hard HEAD^ 版本退回,上一版本(HEAD^^:上上个版本、HEAD~100:上100个版本)
git reset --hard commit_id 版本退回,对应commit_id版本
git reflog 查看命令历史(重返未来)
git checkout <file> 丢弃工作区修改,用版本库里的版本替换工作区的版本,未提交缓存区删除了也可恢复
git reset HEAD <file> 丢弃缓存区修改,用版本库里的版本替换缓存区的版本,未提交版本库删除了也可恢复
git rm <file> 删除一个文件
二、远程仓库
ssh-keygen -t rsa -C "youremail@example.com" 创建SSH Key
git remote add origin git@github.com:michaelliao/learngit.git 建立远程连接
git remote rm origin 删除远程连接
git push -u origin master 把本地的master分支推送到远程origin,-u关联本地master分支和远程master分支
git push origin master 后续推送最新修改
git clone git@github.com:michaelliao/gitskills.git 从远程库克隆一个本地库
三、分支管理
1)创建与合并分支
git branch 查看分支
git branch <name> 创建分支
git checkout <name> 切换分支
git checkout -b <name> 创建+切换分支
git merge <name> 合并某分支到当前分支
git branch -d <name> 删除分支
2)解决冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
git log --graph --pretty=oneline --abbrev-commit 查看分支合并图
3)分支管理策略
git merge --no-ff -m “merge with no-ff” dev 合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
4)Bug分支
git stash 把当前工作现场“储藏”起来
git stash pop 恢复的同时把stash内容删除
git stash list 查看“储藏”的工作现场列表
git stash apply 恢复stash
git stash drop 删除stash
git stash apply stash@{0} 恢复指定的stash
5)Feature分支
开发一个新feature,最好新建一个分支;
git branch -D 强行删除丢弃一个没有被合并过的分支
4)多人协作
git remote 查看远程库的信息
git remote -v 查看远程库的详细信息
git push origin <branch-name> 推送指定分支
git checkout -b <branch-name> origin/<branch-name> 在本地创建和远程分支对应的分支
git branch --set-upstream-to=origin/<branch-name> <branch-name>
git branch --set-upstream <branch-name> origin/<branch-name>
建立本地分支和远程分支的关联
git pull 抓取远程的最新提交
5)Rebase
git rebase 可兼容后使用,把本地未push的分叉提交历史整理成直线,目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
四、标签管理
git tag <tagname> 用于新建一个标签,默认为HEAD
git tag <tagname> <commit_id> 也可以指定一个commit id
git tag -a <tagname> -m “blablabla…” 可以指定标签信息
git tag 可以查看所有标签
git show <tagname> 可以查看指定标签详细信息
git push origin <tagname> 推送一个本地标签
git push origin --tags 推送全部未推送过的本地标签
git tag -d <tagname> 可以删除一个本地标签
git push origin :refs/tags/<tagname> 可以删除一个远程标签
五、自定义Git
1)忽略特殊文件
git add -f <file_name> 强制添加到Git
git check-ignore -v <file_name> 检查.gitignore规则
2)配置别名
git config --global alias.co checkout
git config --global alias.unstage 'reset HEAD’
git config --global alias.<name> <command>
#其他
1)编辑模式如何退出:
2)图形界面:
gitlab
3)git add上传本地项目所有变化的命令三种有 git add -A、git add -u、git add .
git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git status
git add -A
git commit -a -m"first commit"
4)如何添加一个空目录到Git仓库
在空目录中创建“.gitignore”文件,内容如下:
# Ignore everything in this directory
*
# Except this file
!.gitignore