git常用命令
dev
分支的代码)git clone --branch dev https://github.com/username/repository.git
①git status:
命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status
不显示已经commit
到项目历史中去的信息。看项目历史的信息要使用git log
.
②git add 命令可将该文件添加到暂存区。
添加一个或多个文件到暂存区:
git add [file1] [file2] ...
添加指定目录到暂存区,包括子目录:
git add [dir]
添加当前目录下的所有文件到暂存区:
git add .
③git commit -m 'msg'
主要是将暂存区里的改动给提交到本地的版本库。
④git push
命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。
如推送到远程dev分支:git push origin dev
git push <远程主机名> <本地分支名>:<远程分支名>
⑤git log 查看提交历史 /或者使用git reflog查看
⑥git reset --hard 回退的版本
git提交失败时,使用git reset --soft HEAD~1将文件恢复到待commit状态,可以重新提交
如果你不想保留这些本地提交,可以将它们丢弃:
git reset --hard HEAD
这将重置当前分支到最近一次提交的状态(丢弃所有未提交的更改和提交)。
⑦git pull
命令作用:从另一个存储库或本地分支关联的远端分支获取最新代码,并与本地代码资源整合。git pull
命令执行过程:取回远程主机某个分支的更新,再与本地的指定分支合并(可能存在需手动解决的冲突)。
使用语法
git pull [options] [<repository> [<refspec>…]]
描述
将远程存储库中的更改合并到当前分支中。在默认模式下,git pull
是git fetch +
git merge FETCH_HEAD
的简写版。
更准确地说,git pull
使用给定的参数运行git fetch
,并调用git merge
将检索到的分支头合并到当前分支中。 若使用--rebase
,它运行git rebase
而不是git merge
。
查看本地和远程分支
1 | git branch -a |
如果已经有本地分支
直接输入命令
1 | git checkout 20221120dev |
切换到本地为20221120dev的分支
创建并切换到新的分支(切换到新的分支前,记得commit当前分支的代码)
git checkout -b 2023dev
⑧如果你在当前分支上做了一些本地更改(包括已提交但未推送的更改),并尝试切换到另一个分支时,Git 会提示你有未提交的更改。此时,Git 会防止切换,因为切换可能会导致冲突。
解决方法:
- 使用
git stash
暂存当前更改:
这会将你当前工作目录的更改保存到一个临时栈中,你可以随时恢复它们。git stash
- 然后切换分支:
git checkout <target-branch>
- 如果需要恢复暂存的更改,可以使用:
git stash pop
示例
以下是一些示例 -
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,要取回origin
主机的next
分支,与本地的master
分支合并,需要写成下面这样 -
$ git pull origin next:master
如果远程分支(next
)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:
$ git pull origin next
上面命令表示,取回origin/next
分支,再与当前分支合并。实质上,这等同于先做git fetch
,再执行git merge
。
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone
的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master
分支自动”追踪”origin/master
分支。
Git也允许手动建立追踪关系。
$ git branch --set-upstream master origin/next
上面命令指定master
分支追踪origin/next
分支。
如果当前分支与远程分支存在追踪关系,git pull
就可以省略远程分支名。
$ git pull origin
上面命令表示,本地的当前分支自动与对应的origin
主机”追踪分支”(remote-tracking branch)进行合并。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。
$ git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
如果合并需要采用rebase
模式,可以使用–rebase
选项。
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
git fetch和git pull的区别
- git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
以上命令的含义:
- 首先从远程的
origin
的master
主分支下载最新的版本到origin/master
分支上 - 然后比较本地的
master
分支和origin/master
分支的差别 - 最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
2. git pull:相当于是从远程获取最新版本并merge
到本地
git pull origin master
上述命令其实相当于git fetch
和 git merge
在实际使用中,git fetch
更安全一些,因为在merge
前,我们可以查看更新情况,然后再决定是否合并。
git pull
命令作用:从另一个存储库或本地分支关联的远端分支获取最新代码,并与本地代码资源整合。git pull
命令执行过程:取回远程主机某个分支的更新,再与本地的指定分支合并(可能存在需手动解决的冲突)。
使用语法
git pull [options] [<repository> [<refspec>…]]
描述
将远程存储库中的更改合并到当前分支中。在默认模式下,git pull
是git fetch +
git merge FETCH_HEAD
的简写版。
更准确地说,git pull
使用给定的参数运行git fetch
,并调用git merge
将检索到的分支头合并到当前分支中。 若使用--rebase
,它运行git rebase
而不是git merge
。
示例
以下是一些示例 -
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,要取回origin
主机的next
分支,与本地的master
分支合并,需要写成下面这样 -
$ git pull origin next:master
如果远程分支(next
)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:
$ git pull origin next
上面命令表示,取回origin/next
分支,再与当前分支合并。实质上,这等同于先做git fetch
,再执行git merge
。
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone
的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master
分支自动”追踪”origin/master
分支。
Git也允许手动建立追踪关系。
$ git branch --set-upstream master origin/next
上面命令指定master
分支追踪origin/next
分支。
如果当前分支与远程分支存在追踪关系,git pull
就可以省略远程分支名。
$ git pull origin
上面命令表示,本地的当前分支自动与对应的origin
主机”追踪分支”(remote-tracking branch)进行合并。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。
$ git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
如果合并需要采用rebase
模式,可以使用–rebase
选项。
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
git fetch和git pull的区别
- git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
以上命令的含义:
- 首先从远程的
origin
的master
主分支下载最新的版本到origin/master
分支上 - 然后比较本地的
master
分支和origin/master
分支的差别 - 最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
2. git pull:相当于是从远程获取最新版本并merge
到本地
git pull origin master
上述命令其实相当于git fetch
和 git merge
在实际使用中,git fetch
更安全一些,因为在merge
前,我们可以查看更新情况,然后再决定是否合并。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律