一、安装
指定用户名
git config --global user.name "yourusername"
git config --global user.email "xxxxxxx@xxx.com"
二、初始化仓库
git init <文件夹路径>
三、添加文件到仓库
git add <文件名> //添加文件
git commit -m "备注" //提交文件
四、时光穿梭
版本回退
git log --pretty=online //查看提交日志
git reset --hard HEAD^ //回退到上一个版本
git reset --hard HEAD^^ //回退到前两个版本
git reset --hard <commit id> //回退到commit id 那个版本
git reflog //查看每次命令(找commit id号)
git status //查看提交状态
git diff <文件名> //比较文件
git diff HEAD -- <文件名> //比较git工作区的文件
###撤销修改
git checkout -- <文件名> //丢弃工作区的修改(未add)
git reset HEAD <文件名> //丢弃暂存区的修改(已经add过的)
###删除文件
rm <filename> //先手动删除本地文件
git rm <filename> //未推送至版本库,在删除工作区文件
git checkout -- <filename> //已推送至版本库,恢复文件
五、远程仓库
添加远程仓库
ssh-keygen -t rsa -C "youremail@example.com" //创建SSH key
//将本地用户目录下的id_rsa.pub里的公钥复制粘贴到Github里的setting里
git remote add origin git@github.com:<github用户名>/learngit.git
//关联远程仓库
git push -u origin master //将本地仓库推送至远程仓库
git push origin master //修改完本地,使用此命令将本地提交到仓库
克隆
git clone <项目地址> //项目地址有https,和git等协议,git更快
六、分支管理
创建与合并
git branch //查看分支
git branch <name> //创建分支
git switch <name> //切换分支
git switch -c <name> //创建并切换分支
git merge <name> //合并某分支到当前分支
git branch -d <name> //删除分支
解决冲突
1.手动解决
2.查看分支合并图
git log --graph
使用普通合并
git merge --no-ff -m "merge with no-ff" <分支名>
//不使用Fast-Forward模式合并
Bug分支
1.修复bug,创建bug分支,修复后合并,然后删除bug分支
2.手里有工作没完成(假设处于dev分支)
git stash //保存现场
//切换mastet分支创建bug分支修复合并
//切换回dev分支
git stash list //查看现场
git stash pop //恢复并删除当前stash
//master上修改的东西想要合并到dev上,防止重复劳动
git cherry-pick <commit id>
//此处commit id 是bug分支提交时的commit id
Feature分支
添加功能,新建一个feature分支
git branch -D <name> //删除一个没有合并过的分支
多人合作
git remote -v //查看远程库信息
git push origin <branch-name> //推送本地分支
git pull //从远程库获取最新提交,若有冲突先解决冲突
git switch -c <branch-name> origin/<branch-name>
//在本地创建和远程分支对应的分支,本地分支和远程分支最好名字一样
git branch --set-upstream branch-name origin/branch-name
//建立本地分支和远程分支的关联
Rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
七、标签管理
创建标签
git tag <tagname>
//创建一个标签,默认在HEAD位置,也可指定一个commit id
git tag -a <tagname> -m "说明" //指定标签信息
git tag //查看所有标签
操作标签
git push origin <tagname> //向远程推送一个标签
git push origin --tags //推送所有本地标签
git tag -d <tagname> //删除一个标签
git push origin :refs/tags/<tagname> //将远端的标签删除
八、提交PR
- fork一个项目
- git clone 自己账号下的项目
- 在本地修改工作完毕后,add,commit之后,push到自己的仓库
- 向原来的项目提交一个PR,并留言等待通过。