掌握git常用命令,轻松应付日常开发,下面将从Git基本概念、分支操作、远程操作、实战演练这几个方面进行叙述。
Git基本概念
内容状态
工作区:本地存放项目代码的位置
暂存区:存放临时代码的位置
提交区:存放数据的位置,位于.git目录下
远程仓库:托管代码的服务器
文件状态
1. 未跟踪(untrack)
Untracked是还没有记录,还没有登记,未加入到git库中,不参与版本控制。通过git add添加后,状态变为staged。
2. 未修改(unmodify)
文件已入库但是还未修改,版本库中的文件快照内容与文件夹中完全一致。
若通过git rm移出库后,文件状态变为unstack。
3. 文件已修改(committed)
文件已修改,但是未做其他的操作
4. 暂存状态(staged)
执行git commit命令,将修改同步到库中。
只有通过命令git commit之后,才算是真正把暂存区的代码提交了。经过git commit命令之后,所有被提交的文件的状态就是committed。
Git分支操作
git branch
#创建一个分支
git branch [分支名]
#显示所有分支信息
git branch -v
#删除分支
git 删除本地分支:
git branch -d [分支名] 或者git branch -D [分支名]
#删除远程分支:
git push origin -d [分支名]
git checkout
#切换到 分之v1
git checkout [分支名]
#切换到到. 不保留当前的内容
git checkout .
#恢复到上一个分支
git checkout -
#拉取远程分支并在本地创建一个新的分支
git checkout -b [本地名] [远程名]
即:git checkout -b dev origin/dev
git reset
将当前分支回退到历史某个版本
git reset --soft HEAD^
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
git stash
git stash 用来保存目前的工作目录和暂存区状态,并返回到干净的工作空间
1. 使用git stash save "暂存" 将自己修改的代码,进行一个本地仓库的临时缓存。
$ git stash save "暂存"
Saved working directory and index state On master: 暂存
2. 使用git stash list 查看缓存代码片段。
$ git stash list
stash@{0}: On master: 暂存
3. 将我们的修改合并到更新后的代码中,stash@{0} 就是我们自己暂存的标记
$ git stash pop stash@{0}
#恢复和删除
$ git stash apply
$ git stash drop
git rebase
确保两个分支都是最新的代码
在ym_polling上进行rebase,添加到dev分支后面
git rebase -i --onto dev dev
git merge
Git远程操作
克隆远程分支
git clone [git仓库]
查看远程分支
git remote //查看远程库的信息
git remote -v //查看远程库的详细信息
关联远程分支
#关联
git remote add origin [远程仓库]
拉取最新代码
git pull
例如:
git pull origin master
#fetch拉取
git fetch
例如:
git fetch origin [远程分支]:[本地分支]
git fetch origin lite:ym_dev
推送本地代码到远程分支
#将本地历史推送到远程
git push
比如:git push origin dev
#强推
git push --force-with-lease origin dev
git push -f origin dev
实战演练
查看提交记录
查看log
git log --pretty=format:"%h %s" 查看分支记录
git log --pretty=oneline 查看当前提交的日志
git reflog
git log
提交本地代码到远程分支
以本地分支dev提交到远程分支dev为列子
git add . //添加所有修改的代码
git commit -m "first commit"
git push origin dev
将本地新建项目提交到仓库(未创建)
- 首先写好本地项目
- 在远程创建好仓库
- 执行如下命令行
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/miaoyang/catcodeme.git
git push -u origin main
临时切换分支修改代码
- 暂存本地代码
- 切换到其他分支,修改代码,完成提交
- 切换到原来分支,恢复暂存的内容
假如你正在个人分支ym_feature开发新功能,突然需切换到ym_dev分支去修复一个bug
1.暂存代码
git stash
2.切换分支
git checkout ym_dev
...修改N行代码后...提交代码
git add .
git commit -m "fix bug"
git push origin ym_dev
3.切换到原来的分支
git checkout ym_feature
git stash pop
解决合并冲突
在使用git协同开发时,难免会出现不同的人员,同时修改某个文件导致代码冲突的问题。
这时候我们提交代码前,应该首先获取远程最新版本,与本地版本合并。回到代码中解决冲突,再做提交。
比如ym_feature分支合并到ym_dev分支,产生合并冲突。合并代码后,手动解决冲突问题。
#切换到当前分支
git checkout ym_dev
#合并新功能分支到ym_dev上
git merge ym_feature
撤销和修改commit
git add . //添加所有文件
git commit -m "first commit"
撤销commit:
git reset --soft HEAD^
修改commit:
amend修正,会对最新一条 commit 进行修正,会把当前 commit 里的内容和暂存区(stageing area)里的内容合并起来后创建一个新的 commit,用这个新的 commit 把当前 commit 替换掉。
git commit --amend
注意:
IDEA集成的git,采用界面操作也是个不错的选择,不用记住辣么多的命令,可视化合并代码,非常的人性化。
欢迎大家关注个人微信公众号:一杯Java不加糖呢,不定期更新文章,谢谢🙏~