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)合并和检查版本号是否一致
既已览卷至此,何不品评一二: