1,配置你的信息:
git config --global user.name 你的名字
git config --global user.email 你的邮箱
--global 表示所有git仓库都会使用这个配置,为当前用户设置
2,创建SSH Key
ssh-keygen -t rsa -C "youeamil@explode.com"
git ssh密钥地址 linux ~/.ssh window 你的用户目录下
有 id_rsa(私钥)和id_rsa.pub(公钥)两个文件
复制id_rsa.pub中文件,在github上SSH Keys中,点击Add SSH key把复制的信息粘贴就可以使用git了
测试命令 ssh git@github.com 也可以 ssh -T git@github.com
3,创建git仓库
git init
git add 文件名 把文件添加到git仓库暂存区
git commit -m "提交说明" 把文件提交到仓库
commit 是一次性提交,add可以多次添加不同文件,add . 表示添加所有文件
4,链接远程仓库
克隆并创建仓库
git clone git@github.com:xiami99/xiami.git 克隆一个本地库
关联远程仓库
git remote add origin git@github.com:xiami99/1234.git
首先 git pull origin master
然后 git push origin master
git push -u origin master
-u参数 git不但会把本地master分支推送到远程分支,还会把远程分支和本地分支关联起来
完成合并!
-----修改远程版本库地址
git remote set-url origin git@xxx.com.git
5,查看仓库状态和修改
git status 查看git仓库状态
git diff 文件名 查看修改内容(一般在未commit前查看)
git diff HEAD -- readme.txt 查看工作区和版本库的区别,也可查看HEAD^版本库的区别
6,查看git日志
git log 显示从最近到最远的提交日志
git log --pretty-oneline 显示较少的日志信息
git log --graph 可以查看分支合并图
git log --graph --pretty=oneline --abbrev-commit 查看分支的合并情况
git log后,请使用qq 退出,否则会见到各种奇葩的不爽
7,撤销修改
git checkout -- readme.txt 丢弃工作区的修改
命令中的--很重要,没有--就变成了创建一个新分支的命令
未提交到暂存区的文件,一种是撤销到和版本库一模一样的状态
提交到暂存区的文件,撤销到和暂存区文件相同的状态
git reset HEAD reade.txt 可以把暂存区的修改撤销掉,重新放回工作区,和远程版本库一样
8,版本回退
git reset --hard HEAD^ 回退到上一个版本
git reset --hard commit-id 到达commit-id版本
git reflog 用来记录你的每一次命令
在git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,第一百个版本HEAD~100
9,删除文件
git rm test.txt 确认从git仓库中用命令git rm 删掉,并且git commit<
br
><
strong
>git rm * -r</
strong
> 进入目录后,删除所有目录
如果只是rm test.txt,那么是无法添加到暂存区和commit的,请使用git rm
10,创建分支
git branch 查看当前分支,前面有*号的是当前分支
git branch -a 查看所有分支
git branch 分支名 创建分支
git checkout -b dev git checkout 切换分支,-b 表示创建并切换
11,合并分支
git merge dev git merge 用于合并指定分支到当前分支
Fast-forward 表示这次合并是快进模式,合并速度很快
12,解决合并分支冲突
提示冲突后,使用git status 查看,找到冲突文件,然后打开修改
<<<<<<<
HEAD
这里是当前分支冲突信息
=============
test分支冲突信息
>>>>>>> test
然后 git add,git commit,最后就可以删除指定分支了
我的理解是两个相同文件名的文件合并分支的话只能保存一个文件的内容
13,分支管理
git merge --no-ff -m "merge with no-ff" dev
使用--no-ff,在merge时会生成一个新的commit,从分支历史上就可以看出分支信息
而fast forward合并就看不出来曾经做过合并
14,Bug分支
git stash 把当前工作现场储藏起来,等以后恢复现场后继续工作,储藏前一定要先add到暂存区
git stash list 用git stash list 查看刚才的工作现场存到哪去了
git stash apply 恢复,但是stash内容不删除,需要使用git stash drop来删除
git stash pop 恢复的同时把stash内容也删除了
git stash apply stash@{0} 恢复的指定的stash
15,删除分支
git branch -d dev
git branch -D dev 如果dev分支没有合并,是不能删除的,可以使用-D强制删除,这中情况用在当前分支无作用的情况下
git branch -r -D 删除远程分支
16,查看远程库信息
git remote 查看远程库信息,默认是origin
git remote -v 显示更详细的信息,显示可以抓取和推送的origin地址,没有推送权限,就看不到push地址
17,忽视特殊文件
在git根目录创建.gitignore 文件,然后填写要忽略的文件,或者忽略后缀名的,最后把.gitignore 提交到git
*.html 忽略后缀为.html 的文件
使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了
个人亲测很管用的
18,配置别名
git config --global alias.st status 这一行命令,告诉git以后st就表示status
git config --global alias.unstage 'reset HEAD' 撤销暂存区的修改,回到当前版本,重要的多个字符用引号
每个仓库的git配置文件都在.git/config 文件中
当前用户的git配置文件放在用户主目录下的一个隐藏文件 .gitconfig 中
git 支持多种协议,包括https,但通过ssh支持的原生git协议速度最快