git命令

217 阅读5分钟

0.下载git

git-scm.com/downloads

//更新现有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.本地使用

将代码提交到本地进行管理

image.png

git add xxx //将你想要提交内容先添加到stage中
git commit -m 'xxx' //将xxx作为提交的消息,将stage中的内容提交到本地库

git commit -a -m 'xxx' //可以将所有已经tracked的内容进行提交,untracked 指新创建的文件,未进行追踪,需要先进行一次 git add xxx 操作

如果提交的内容需要进行修改或是丢弃当前的操作?

  1. 追加内容到本地库或是修改提交信息
//可以提交,修改部分内容,执行git add xxx,再执行以下操作
git commit --amend -m 'xxx'
//将最后提交的节点替换成新节点
  1. 对之前的节点进行内容的修改,或者取消某个节点的提交
git rebase -i head~n //退回到n步骤之前,进行进入到文本编辑器中,对要修改的内容将pick修改为edit,将想取消的节点删除相关行

image.png

//对于设置为edit的行,在保存退出后会自动阻塞在那个操作,然后进行修改
//对于想跳过的节点
git rebase --skip
//对于想修改的
git commit --amend
//修改过后跳到下一edit节点
git rebase --continue
  1. 舍弃修改内容
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 本地分支

使得下一个节点基于当前节点和其他节点有不同的走向。修改问题的分支等等

image.png 指针指向不同的分支,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,需要解决 image.png

查看conflict,git status给一些提示,按照提示解决一下 image.png

例如查看修改的内容冲突,vim t.txt。两边的行为分支,等号分割内容为两个分支的冲突点,只需要保留其中的一个

image.png

然后执行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 //删除保存的状态

image.png