git 常用命令
创建版本库
mkdir:创建文件
pwd:显示当前目录
ls -ah:查看当前文件子目录的内容
git init:把当前目录变成Git可以管理的仓库;
git add:告诉Git,把文件添加到仓库;可反复多次使用,添加多个文件。
git commit -m "":m后面输入的是本次提交的说明
:1个文件被修改,2行语句新插入。
时光机穿梭
git status:命令可以让我们时刻掌握仓库当前的状态
:readme.txt被修改过了,但还没有准备提交的修改。
git diff:如果git status
告诉你有文件被修改过,用git diff
可以查看修改内容。git diff HEAD --readme.txt:查看最新版本的区别。
:可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。
版本回退
git log:命令显示从最近到最远的提交日志,如果嫌输出信息太多,可以输:git log --pretty=oneline
git reset --hard HEAD^:回退到上一版本、上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。(回到过去)
git reset --hard 3628164:举例,(回到未来)
git reflog --你回退到了某个版本,关掉了电脑,第二天早上就后悔了,找不到新版本的commit id,用这个命令。
撤销修改
(可以用git status提示自己)
git checkout -- file:场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时
git reset HEAD file:场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步:第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
rm命令,删除文件后两个选择
1.一是确实要从版本库中删除该文件,那就用命令git rm test.txt
删掉,并且git commit
2. 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:$ git checkout -- test.txt
远程仓库
1.添加远程库
①:GitHub上创建一个learngit仓库(例子),我们根据GitHub的提示,在本地的learngit
仓库下运行命令:
$ git remote add origin git@github.com:muyunyun/learngit.git
添加后,远程库的名字就是
origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
②:$ git push -u origin master(
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来
)
③:从现在起,只要本地作了提交,就可以通过命令
$ git push origin master
2.从远程库克隆
假如要gitskills的仓库克隆到本地:
$ git clone git@github.com:muyunyun/gitskills.git
GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git
这样的地址,但通过ssh
支持的原生git
协议速度最快。
分支管理
创建与合并分支:
git branch:查看分支;
git branch <name>:创建分支;
git checkout <name>:切换分支;
git checkout -b <name>:创建+切换分支;
git merge <name>:合并某分支到当前分支;
git branch -d <name>:删除分支
分支管理策略:
git merge --no-ff -m "merge with no-ff" <name>:从分支历史上可以看出分支信息
Bug分支:
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash
一下,然后去修复bug,修复后,再git stash pop
,回到工作现场。
多人协作:
-
查看远程库信息,使用
git remote -v
; -
本地新建的分支如果不推送到远程,对其他人就是不可见的;
-
从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; -
在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致; -
建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name
; -
从远程抓取分支,使用
git pull
,如果有冲突,要先处理冲突。
标签管理
-
命令
git tag <name>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id; -
git tag -a <tagname> -m "blablabla..."
可以指定标签信息; -
git tag -s <tagname> -m "blablabla..."
可以用PGP签名标签; -
命令
git tag
可以查看所有标签。
推荐下廖雪峰老师的Git教程。这个网站也比较详细http://my.oschina.net/bxxfighting/blog/378196?fromerr=fdYQv17q
作者:牧云云
出处:http://www.cnblogs.com/MuYunyun/"
本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
如果您觉得本篇博文对您有所收获,请点击右下角的 [推荐],谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构