git命令学习笔记

175 阅读5分钟

个人学习笔记,如有错误,欢迎指出。

初始化git仓库

git init

添加文件到暂存区

git add <file>
git add <file1 file2 file3>

file、file1、file2、file3是文件路径和名称,一次add可以添加很多文件,添加多个文件需要用英文空格隔开

例子:
git add hello.txt
git add hello.txt world.txt

把文件提交到本地仓库

git commit -m <message>
-m 说明提交时要带上提交说明,后面双信号内的字符就是提交说明

例子:
git commit -m "这是一段提交说明"

查看历史

git log
还可以在 git log 后可以添加下面的筛选字段:
--graph 图形
--pretty=oneline 减少数据
--abbrev-commit 头部数据减少

例子: git log --graph --pretty=oneline --abbrev-commit

查看命令历史

git reflog

版本回退

回退到上一个版本:
git reset --hard HEAD~

回退到上n个版本:
git reset --hard HEAD~n

回退到指定版本:
git reset --hard <commit_id>
commit_id 是版本号

--hard 彻底回退,放弃已提交的commit
--soft 回退版本,不丢弃commit内容,想提交还可以再次commit

查看暂存区的修改

git status

查看工作区和版本库最新版本的区别

git diff HEAD -- <file>
file 是文件名

例子:
F:\practice\Git_Operate>git diff HEAD -- 1.txt
diff --git a/1.txt b/1.txt
index d14c57e..e84675c 100644
--- a/1.txt
+++ b/1.txt
@@ -1,4 +1,6 @@
 这是1.txt的内容

 天王盖地虎
-宝塔镇河妖
\ No newline at end of file
+宝塔镇河妖
+
+李白乘舟将欲行
\ No newline at end of file

将文件的修改放到临时存储堆栈

git stash

从临时存储堆栈从读取第一个修改记录,并将其在临时存储堆栈中删除

git stash pop

查看临时存储堆栈列表

git stash list

删除所有的临时存储记录

git stash clear

丢弃对文件的修改

git restore <file>

丢弃文件在工作区的修改

git checkout -- <file>

这个命令的特点:
1.如果文件修改后没有添加到暂存区,就撤销对文件的修改,回到和版本库一模一样的状态;
2.如果文件修改后已经被添加到暂存区后,又对改文件进行了修改,就丢弃这些未添加到暂存区的修改,回到刚才添加到暂存区后的状态

把暂存区的修改回退到工作区

git reset HEAD <file>

删除文件

git rm <file>

添加远程仓库

git remote add 远程仓库的名称 远程仓库的地址
git 默认把远程库的名字设为 origin ,也可以自己修改

将本地分支和远程分支的关联起来

git branch --set-upstream-to=远程仓库名称/远程分支名称 本地分支名称

例子:
git branch --set-upstream-to=origin/dev dev

推送代码到远程仓库

git push <name> <branch>
name 指远程仓库名称,branch 指分支名称

例子:
git push origin master

从远程仓库拉取代码

git pull <name> <branch>
name 指远程仓库名称,branch 指远程分支名称

从远程仓库克隆代码

git clone <address>
address 指远程仓库的地址

查看远程仓库信息

git remote
git remote -v
加上 -v 可以查看更详细的远程仓库信息

删除远程仓库

git remote rm <name>
name 是指远程仓库名称

创建分支

git branch <branch_name>
branch_name 是分支名称

切换分支

git checkout <branch_name>
git switch <branch_name>
两个命令都可以切换分支

创建并切换到分支

git checkout -b <branch_name>
git switch -c <branch_name>
两个命令都可以创建并切换到分支

查看当前分支

git branch

在本地创建和远程分支对应的分支

git checkout -b 本地分支名称 远程仓库名称/远程分支名称

例子:
git checkout -b dev origin/dev

合并指定分支到当前分支

git merge <branch_name>
推荐使用:git merge --no-ff
原因:关闭默认的"快进"(fast-forward),保证在删除分支时不会丢失merge分支信息

删除分支

git branch -d <branch_name>
必须要将分支合并之后才能删除

强制删除分支

git branch -D <branch_name>
强制删除分支,不需要合并

撤销合并

git merge --abort
合并分支产生冲突,可以使用使用该命令撤销合并

合并分支时解决冲突

1.通过 git status 查看冲突文件
2.解决冲突的代码
3. git add <file> 将文件添加到暂存区
4. git commit -m "message" 将暂存区文件提交到本地仓库
5. git push origin <branch_name> 将代码推送到远程仓库

将其他分支的一条提交记录复制到当前分支

git cherry-pick <commit_id>
commit_id 是指其他分支的提交记录id

将提交历史整理成一条直线

情况:准备提交代码之前,有其他人在当前分支对应的远程分支提交了代码
使用 git rebase 
1.会把远程分支最新代码拉取下来
2.会以远程分支最新提交为起点,修改本地未 push 的提交记录
3.解决冲突并 push 代码之后,远程分支的提交记录会是一条整洁的直线

将其他分支的多条提交记录复制到当前分支

git rebase 开始位置的提交记录id 结束位置的提交记录id --onto 当前分支名称
然后将当前分支的HEAD指向最新提交记录id

例子:
git rebase 90bc004 5de0da9 --onto master
git reset --hard 5de0da9

创建标签

标签是和commit记录挂钩的,

1.在分支最新提交打标签
git tag 分支名称

例子:git tag v1.0

2.在分支某一次提交上打标签
git tag 分支名称 标签名称

例子:git tag v2.0 f52c633

指定标签的信息

git tag -a 标签名称 -m"标签信息" 提交记录id

例子:git tag -a v1.0 -m"version 1.0" a680c99

查看标签列表

git tag

查看标签的详细信息

git show 标签名称

例子:
git tag v1.0