安装
git config --global user.name "Your Name"
git config --global user.email "1837978614@qq.com"
创建版本库
git init //把这个目录变成git可以管理的仓库
git add readme.txt //把文件添加到仓库
git commit -m "wrote a readme file" //把文件提交到仓库
git status //时刻掌握仓库当前的状态
git diff //查看不同
删除版本库
find . -name ".git" | xargs rm -Rf //查找以git结尾的
版本回退
git log //查看历史记录
git reset --hard 83c89ca4b7fd770a5b65166bd4d4c12c154dcfea //回退到某个版本
git reset --hard HEAD^ //回退到上一个版本
git reflog //查看命令历史
git reset --hard 45bd03c//回退到以前的修改
Git跟踪的并管理的是修改,而非文件。
git diff HEAD -- readme.txt //可以查看工作区和版本库里面最新版本的区别
git checkout -- readme.txt //丢弃工作区的修改,让文件回到最后一次commit和add的地方
git reset HEAD //丢弃暂存区的修改
git -rm readme.txt//删除
git checkout -- readme.txt //找回
创建ssh key
ssh-keygen -t rsa -C "1837978614@qq.com"
添加远程仓库
git remote add origin git@github.com:jiangwenwen/learngit.git//在本地执行
推送到远程
git push -u origin master//第一次
git push origin master
从远程库克隆
git clone git@github.com:jiagwenwen/Book.git
git fetch:相当于是从远程获取最新版本到本地,不会自动merge。
git pull:相当于是从远程获取最新版本并merge到本地。
//查询远程的版本
git remote -v
//获取远端的master分支的最新代码到本地
git fetch origin master
//查看版本差异
git log -p master..origin/master
//合并最新代码到本地分支
git merge origin/master
创建与合并分支
git checkout -b dev 创建dev分支,然后切换到dev分支
git branch //查看当前分支
git checkout master//切换到master分支
git merge 用于合并指定分支到当前分支,不会新建commit
git branch -d dev //删除分支
解决冲突
git log --graph //分支合并图
分支管理策略
git merge --no-ff -m "merge with no-ff" dev //会新建一个commit
bug分支
git stash可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash apply //恢复不删除stash
git stash pop //恢复删除stash
git stash list //查看stash list
Feature分支
git branch -D feature-vulcan 丢弃一个没有被合并过的分支
多人协作
git remote -v //查看远程库信息
git push origin branch-name //从本地推送分支
git branch --set-upstream-to=origin/dev dev
git checkout -b branch-name origin/branch-name//在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name //建立本地分支和远程分支的关联
git pull //从远程拉取分支
rebase操作可以把本地未push的分叉提交历史整理成直线 。
标签
git tag <name>//打标签
git tag //查看所有标签
git tag -a <tagname> -m "blablabla..." //指定标签信息
git tag -d v0.1 //删除标签
git push origin <tagname> //推送本地标签到远程
git push origin --tags //一次性推送全部未推送的标签
git tag -d v0.9 //先本地删除
git push origin :refs/tags/v0.9 //再远程删除
git remote rm origin 删除已有的github远程库
忽略
git check-ignore -v App.class // 查看忽略原因
异常:
错误:fatal: The remote end hung up unexpectedly
解决方法:
在克隆/创建版本库生成的 .git目录下面修改生成的config文件增加如下:
[http]
postBuffer = 524288000
添加文件
git add . // 提交被修改的和新建的文件,但不包括被删除的文件
git add -u --update update tracked files //更新所有改变的文件,即提交所有变化的文件
git add -A --all add changes from all tracked and untracked files 提交已被修改和已被删除文件,但是不包括新的文件
解决访问比较慢
修改host文件
151.101.229.194 github.global.ssl.fastly.net
151.101.72.133 assets-cdn.github.com
设置代理
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
#只对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
#取消代理
git config --global --unset http.https://github.com.proxy)
git config --global --unset http.proxy
git config --global --unset https.proxy
npm config delete proxy
删除文件
git status //查看那些文件被删除了
git rm com/alipay/config/AlipayConfig.java//确认删除
git commit -m '删除了敏感文件'//提交
git checkout -- test.txt//删错了,回退