目录
一、git 安装&配置
(略)
二、 git 创建仓库
1、初始化成git可管理的仓库
git init
git init 目录名 //指定目录
2、添加文件到暂存区
git add readme.txt
git add *.c
3、添加说明
git commit -m "说明内容"
git commit -a //不用add,直接提交
git commit -am '说明内容' //直接提交,并添加说明
三、本地版本管理
1、查看提交日志
git log
git log --pretty=oneline
git log --oneline //用 --oneline 选项来查看历史记录的简洁的版本
git log --oneline --graph //查看拓扑图
git log --reverse --oneline //逆向显示所有日志
git log --author=Linus --oneline -5 //查看指定用户的提交
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges //查看指定日期
2、查看状态
git status
git status -s //展示简短信息
modified:改动、untracked 未添加
3、查看变更比对
git diff //查看未缓存的改动
git diff --cached //查看已缓存的改动
git diff HEAD -- 文件名 //查看指定文件已缓存的改动
git diff HEAD //查看已缓存的与未缓存的所有改动
git diff --stat //显示摘要
4、丢弃变更
1、丢弃工作区变更
git checkout -- readme.txt
git checkout . //放弃所有变更
2、丢弃暂存区变更,放回工作区
git reset HEAD 文件名
(1)修改了工作区文件,丢弃变更:git checkout – readme.txt
(2)修改了工作区文件并已暂存,丢弃变更:
git reset HEAD readme.txt
git checkout – readme.txt
5、回退到指定版本
git reset --hard HEAD^^
git reset --hard HEAD~2 //回退到上上个版本
git reset --hard 1094a //用commit id设置,前几位即可
HEAD为当前版本,HEAD^ 用^表示上几个版本,也可写成HEAD~3
6、回退到删除了的记录
git log //查看当前提交历史
git reflog //查看历史命令,找到对应commit id
git reset --hard 1094a //用commit id设置,前几位即可
7、删除文件
rm test.txt //删除工作区文件
git rm test.txt //删除仓库中该文件
git rm -f 文件名 //如已暂存,需强制删除
git rm --cached <file> //删除暂存区中文件,不删除本地文件
git rm –r * //递归删除文件夹
四、远程仓库管理
1、本地关联到远程仓库关联
git remote add origin 仓库地址
2、推送仓库所有内容
git push -u origin master
一般
3、推送变更
git push origin master
关联仓库后,使用命令git push -u origin master第一次推送master分支的所有内容;
4、克隆远程仓库到本地
git clone <仓库地址>
git clone <仓库地址> <指定目录> //克隆到指定目录
五、分支管理
1、分支管理
> 分支创建:
git checkout -b 分支名 //创建+切换
git branch 分支名
> 查看当前分支:
git branch
> 切换分支:
git checkout 分支名
> 分支删除:
git branch -d 分支名
git branch -D 分支名 //强制删除,丢弃没有被合并过的分支
> 查看远程仓库信息
git remote
git remote -v //查看origin地址
> 设置本地分支关联远程分支
git branch --set-upstream-to=origin/远程分支名字 本地分支名字
2、分支合并
> 查看分支合并图
git log --graph
> 分支合并: //合并指定分支到当前分支
git merge 分支名
> 禁用Fast forward
git merge --no-ff -m "合并信息" 合并分支名
-
git merge 分支名,有冲突时,会提示,手动打开冲突文件进行修改,也可用git status 查看冲突文件
-
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
< 为当前分支的修改 >为合并分支的修改 -
Fast forward模式(快速合并):这种模式下,删除分支后,会丢掉分支信息,采用git merge --no-ff -m “合并信息” 合并分支名可以强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
3、储存工作现场
> 储存工作现场
git stash //把当前工作现场“储藏”起来,等以后恢复现场后继续工作
> 查看存储内容
git stash list
> 恢复
git stash apply //恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash pop //恢复的同时把stash内容也删了
4、 推送&拉取&冲突
> 推送分支
git push origin 分支名字
> 拉取分支
git checkout -b 本地分支名 origin/分支名 //创建远程分支到本地,分支名最好一致
> 关联分支
git branch --set-upstream branch-name origin/branch-name
> 解决冲突
git pull // 拉取远程分支
解决冲突
git push origin 分支名 //合并
>提交历史整理
git rebase
-
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/
-
冲突解决
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功! -
rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
六、git标签
> 添加标签
git tag 标签名
git tag 标签名 commit_id //给指定提交添加标签
git tag -a 标签名 -m "说明内容" commit_id //带说明
> 查看标签
git tag
git show 标签名
> 删除本地标签
git tag -d 标签名 //删除本地标签
> 删除远程标签
git tag -d 标签名 //先删除本地标签
git push origin :refs/tags/标签名 //推送到远程
> 推送标签到远程
git push origin 标签名
git push origin --tags //推送所有标签
七、自定义git
1、忽略特殊文件
> 编写.gitignore文件,添加要忽略的文件,再把.gitignore文件提交到git
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
> 查看.gitignore中忽略某文件的命令
git check-ignore -v 文件
2、配置别名
> 配置指令别名
git config --global alias.别名 原命令名
git config --global alias.st status //eg
> 删除配置别名
在.git/config中删除alias后的别名
备注
-
git跟踪范围:
· 只能跟踪文本文件的改动,如TXT文件、网页,所有的程序代码;
· 图片、视频、Word文件这些二进制文件,没法跟踪文件的变化,只能监听到改动 -
git管理分区
工作区:修改文件的区域
暂存区(stage):暂存变更内容
git会自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
3.git拉取协议:Git支持多种协议,包括https,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码。各种写法如下:
git clone [email protected]:fsliurujie/test.git --SSH协议
git clone git://github.com/fsliurujie/test.git --GIT协议
git clone https://github.com/fsliurujie/test.git --HTTPS协议
4.分支规范:master发布分支,dev开发主分支,feature开发分支
5.冲突解决:
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
6、git配置
–global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。
配置Git的时候,加上–global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
每个仓库的Git配置文件都放在.git/config文件中。