Git
前言
工作中有些不常用的指令记不清楚,每次都去查效率太低了。因此开这篇文章记录一下工作中使用git的一些场景,以供快速解决问题。
初始化本地仓库
echo "# interview" >> README.md
git init # 把这个目录变成Git可以管理的仓库
git add README.md # 把文件修改添加到暂存区
git commit -m "first commit" # 把暂存区的所有内容提交到当前本地分支
git branch -M main
git remote add origin https://github.com/Silincee/仓库名.git # 关联远程仓库,origin为远程地址的别名
git push -u origin main # 将本地分支推送到origin主机的main分支
版本管理
版本回退
1)git log/git log --pretty=oneline :查看历史提交。在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) first commit
e475afc93c209a690c39c13a46716e8fa000c366 second commit
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 third commit
2)回退至上一版本
- –mixed(默认):将指定 commit id 撤回之后所有内容全部放进工作区中。
- –soft:将指定 commit id 撤回之后所有内容全部放进暂存区。
- –hard:将指定 commit id 撤回并清空工作目录及暂存区所有修改。
# ⚠️ 如果你从来没有add过,那你的文件没有被git管理。然后通过git reset之后,你整个工作区的所有文件都会回到暂存区的那个状态,那些没有add的文件,其实相当于rm -rf了,永远找不回来。
git reset --hard HEAD^
此时使用git log查看,first commit版本已经不见了。不过可以用git reset --hard 1094a回到未来的某个版本,其中版本号没必要写全,前几位就可以了。如果找不到版本号,可以使用git reflog查看之前的每一次命令:
$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: third commit
e475afc HEAD@{3}: commit: second commit
eaadf4e HEAD@{4}: commit (initial): first commit
撤销修改
1)当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改
# git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
git checkout -- README.txt
命令git checkout -- README.txt意思就是,把README.txt文件在工作区的修改全部撤销,这里有两种情况:
README.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;- 一种是
README.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
2)当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改
# step1:把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD README.txt
# step2: 此时就相当于场景1),只需丢弃工作区的修改即可
git checkout -- README.txt
3)已经提交了不合适的修改到版本库时,想要撤销本次提交,可使用版本回退,不过前提是没有推送到远程库。
git reset --hard HEAD^
分支管理
创建与合并分支
1)创建并切换到新的dev分支
git switch -c dev / git checkout -b dev
2)查看分支列表
git branch
3)合并指定分支到当前分支
git merge dev
4)直接切换到已有的master分支
git switch master / git checkout master
解决冲突
把feature1分支合并到当前分支
git merge feature1
合并前:

合并后:

IDEA中Git的使用
1)新建变更,注意一定要关联需求。创建成功后变更会来到待集成区

2)在本地项目中 checkout 下来新创建的分支
git pull
git checkout other/zhongye_20210607
3)现在就可以在other上继续修改,然后时不时地把other分支push到远程。提交前先把当前最新的master合并到当前分支。




4)commit

5)然后点击加入集成,变更来到集成区,会合并分支到 release_dev_05_26_16_10_13


6)合并和检查版本号是否一致

既已览卷至此,何不品评一二: