安装git
设置名字 git config --global user.name "You name"
设置邮箱 git config --global user.email "email@example.com"
创建版本库
git init 初始化一个仓库
git add filename,filename2 添加文件
git commit -m 'message' 提交文件
时光穿棱机
git status 查看当前的状态
git diff "文件名"
git reset --hard commit_id 回退到哪个版本
git log 查看提交历史,回退到之前的,未来的就不显示了
git reflg 查看命令历史,以便确认回退到哪个版本
忘记打备注会进入插入模式 esc->:wq
回退代码
修改了代码,但是没有add git checkout -- 文件名
修改了代码,并且add了 git reset head 文件名 ; git checkout -- 文件名
修改了代码,并且commit了
删除文件
git rm "文件名"
git commit
删错了但是还没提交可以回退 git checkout -- 文件名
远程仓库
配置仓库
生成私钥和公钥 ssh-keygen -t rsa -C 'youremail@example.com' 在用户主目录下面生成.ssh 生成id_rsa id_rsa.pub
登录github account settings-》ssh keys-》add sshkey
可以添加多个,因为有多个电脑登录
添加远程库
暂用不学
从远程库克隆
git clone "复制出来的仓库地址"
git支持多种协议,包括https,但是通过原生git协议速度最快
分支管理
创建和合并分支
查看分支 git branch
创建分支 git branch name
切换分支 git checkout name
创建+切换支付 git checkout -b name
合并某分支到当前分支 git merge name
删除分支 git branch -d name
解决冲突
A分支修改了并提交了
B分支修改了并提交了
在a分支合并时就会出现冲突,这时候需要手工解决完冲突,并提交
《《《 和====是当前分支的代码
查看分支的情况
git log --graph --pretty==oneline --abbrev-commit
分支管理策略
合并分支时使用的是fast forward模式,这种情况下删除分支会丢掉分支信息
如果禁止fast forward模式,就会在merge时生成一个新的commit,这样就可以在分支历史上看出来分支信息
git merge --no-ff -m "merge with no-ff" dev
Bug分支
在软件开发的过程中,正在dev完成一个功能,完成了一半,这时线上有一个bug,需要立立刻解决
这时侯使用git stash
dev分支git stash -》切回master分支 git checkout master-》创建bug分支 git checkout -b issue-101
-》修复完bug 提交 git add readme.txt -》git commit -m "fix bug 101"-》转回master git checkout master
git merge --no-ff-m "merge bug fix 101" issue-101-》git checkout dev git status
git stash pop(恢复dev中的内容,同时将stash中的内容删除)
git stash list 查看stash列表中的内容
git stash apply stash@{0} 恢复指定的stash
没有合并时删除分支
git branch -d feature-vulcan
git branch -D feature-vulcan 强行删除
多人协作
git remote 查看远程库信息
git remote -v 显示更详细的信息
1.首先,推送自己的修改git push origin master 将orgin推送到master上
2.如果推送失败,则因为远程分支比你本地更新一些,需要先用git pull 试图合并
3.如果合并有冲突,则解决冲突,并在本地提交
4.没有冲突或者解决掉冲突后,再用git pull origin branch-name推送就能成功
标签管理
tag就是让人容易记住有意义的名字,它跟某个commit捆绑到一起
git checkout master
git tag v1.0 设置标签
git tag 查看所有标签
git tag -a 标签名 -m ''
git tag -d v1.0 删除标签
git push origin v1.0 将标签推送到远程
git push origin --tags 一次性推送全部未推送到远程的本地标签
引自
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000