0.下载git
//更新现有git版本
git update-git-for-windows
1.初次使用git
需要设置用户名和邮箱,提交代码需要这些信息
git config --list //查看是否设置了邮箱名和用户名
git config --global user.name xxxx //添加用户名
git config --global user.email xxxx //添加邮箱
git config -e --global //进入编辑器修改
2.纳入版本控制
将文件夹初始化为git本地仓库可以使用的状态
第一种方式
git init //对该文件夹进行初始化
第二种方式
git clone xxx //克隆别的项目,已经达到目的
提前了解命令
git status //查看当前的状态,可以看到需要add的文件,可以commit的文件等内容
git log //可以查看当前分支上的可见节点日志 添加参数 --oneline 按行输出只显示日志消息
git reflog //可以查看所有的日志 包括其他分支 所有的操作
3.本地使用
将代码提交到本地进行管理
git add xxx //将你想要提交内容先添加到stage中
git commit -m 'xxx' //将xxx作为提交的消息,将stage中的内容提交到本地库
git commit -a -m 'xxx' //可以将所有已经tracked的内容进行提交,untracked 指新创建的文件,未进行追踪,需要先进行一次 git add xxx 操作
如果提交的内容需要进行修改或是丢弃当前的操作?
- 追加内容到本地库或是修改提交信息
//可以提交,修改部分内容,执行git add xxx,再执行以下操作
git commit --amend -m 'xxx'
//将最后提交的节点替换成新节点
- 对之前的节点进行内容的修改,或者取消某个节点的提交
git rebase -i head~n //退回到n步骤之前,进行进入到文本编辑器中,对要修改的内容将pick修改为edit,将想取消的节点删除相关行
//对于设置为edit的行,在保存退出后会自动阻塞在那个操作,然后进行修改
//对于想跳过的节点
git rebase --skip
//对于想修改的
git commit --amend
//修改过后跳到下一edit节点
git rebase --continue
- 舍弃修改内容
git checkout -- xxx //撤销对xxx文件的工作区修改
git diff //可以查看工作区中的内容和本地库中的内容区别
git diff --stage //查看stage和本地库中的内容区别
git reset head //默认使用--mixed参数,退后一个节点,新增的内容保存在工作区中,需要git add
git reset --soft head // 将新增的内容放在工作区和stage中,直接commit就可以
git reset --hard head //直接清空工作区和stage,换成所指节点的内容
4.分支管理
4.1 本地分支
使得下一个节点基于当前节点和其他节点有不同的走向。修改问题的分支等等
指针指向不同的分支,HEAD执行的分支为当前正在操作的分支
git branch --list //查看现有的分支
git branch xxx //创建xxx为名的分支
git checkout xxx //切换到xxx分支
git branch -d xxx //删除xxx分支
git checkout -b xxx //创建xxx分支并切换过去
git switch - //切回到之前使用的分支
将不同分支中的内容进行合并?出现冲突怎么解决(对同一个文件进行了不同的修改)?
//存在master分支和bugfix分支,想将bugfix分支中的内容合并到master分支中
//1.切换到master分支
git checkout master
//2.进行对bugfix分支中的内容合并
git merge bugfix
//3.无冲突则合并成功,有冲突则合并失败,需要解决冲突,重新commit
git status //查看冲突内容
显示出现了conflict,需要解决
查看conflict,git status给一些提示,按照提示解决一下
例如查看修改的内容冲突,vim t.txt。两边的行为分支,等号分割内容为两个分支的冲突点,只需要保留其中的一个
然后执行git commit就可以了
对于合并之后没有用处的分支可以删除
git branch --merged //可以查看被合并到当前分支的分支名称,有*代表当前分支,其他的未合并到当前分支的分支
git branch --no-merged //可以查看未合并到当前分支的分支名称
git branch -d xxx //删除xxx分支
4.2 远程分支
将本地分分支推送到服务器上
使用git clone 克隆下来的项目,直接可以进行pull和push操作,默认将服务器命名为origin
git remote -v //查看仓库
git remote rm xxx //在本地删除以xxx命名的仓库
git pull xxx //从远程仓库xxx拉取内容
git push xxx xxxx //将本地仓库的xxxx分支提交到xxx仓库
git push xxx --delete xxxx //将xxxx分支上开发好的代码合并到了master分支,可以删除xxx仓库中的xxxx分支
4.3 暂存内容
想要切换到其他分支,但是对于当前修改的本地库的内容做暂存,可以使用git stash/git stash push,将当前的脏状态进行保存,然后切换到其他分支做紧急的开发,之后可以再次切换回该分支git stash apply继续操作之前的内容。
git stash list //查看所有的暂存内容 包含所在分支,例如下图为testing 和 master 分支上的内容
git stash //用于存储当前的状态
git stash apply xxx //在当前分支应用属于当前分支的某个暂存项 例如:git stash apply stash@{0}
git stash drop xxx //删除保存的状态