个人学习笔记,如有错误,欢迎指出。
初始化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