git常用命令
初始化git操作(摘自码云)
Git 全局设置:
git config --global user.name "luohanye"
git config --global user.email "indexman@126.com"
创建 git 仓库:
mkdir helloweb
cd helloweb
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://git.oschina.net/indexman/helloweb.git
git push -u origin master
#从远程仓库clone
ssh-keygen -t rsa -C "indexman@126.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/dylan-pc/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/dylan-pc/.ssh/id_rsa.
Your public key has been saved in /c/Users/dylan-pc/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VvO2k+pzQjROCtAijxjw1ZEBsebKlIy69gH8CV3+G4s indexman@126.com
The key's randomart image is:
+---[RSA 2048]----+
| .. . |
| ..o |
| o* .o |
|. .o.+B +.+o |
| o.+++.=S= .o |
| .oo=...o o. o |
|. +oo o + + |
| o o . o *... |
|o .. E +o+ |
+----[SHA256]-----+
查看已生成的公钥
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8U3Fr0SyPmNEiJVc1RZ5pEjd9YouT8HypXo28a8I+ueqmcr4CMxiLC5F6uYoST1dqiAtdcr8Xbd5AL30gCh+V4uJBXh9xYyOB8/3M0iUuMknLHBff5OF2QmUUK5s/z+MuTbtbxZxVsa6IHqZ3k5F7mL1C/1Jn88x5gDVWXRmaqYx8mSaocTu2Ar2uVzRa/aH9WB2+YrkRmVgmZ01DbNpPWD1EGX+XiJrw5UyqiXTpPntDs/EBq2glSiSxXqe2dw+GB4bATIqFm86PQx++EaajSuXfG1SkohTmvwzZTLEauukC2LqCUXV/U5pVY3tF2fPToFFsDOny4P+i8BeOSVI/ indexman@126.com
添加到码云
已有项目上传
cd existing_git_repo
git init
git remote add origin https://git.oschina.net/indexman/helloweb.git
#拿下readme.md文件
git pull --rebase origin master
git push -u origin master
#查看远程仓库信息
git remote
【origin】
git remote -v
【
origin https://git.oschina.net/indexman/example.git (fetch)
origin https://git.oschina.net/indexman/example.git (push)
】
git remote show origin
【* remote origin
Fetch URL: https://git.oschina.net/indexman/example.git
Push URL: https://git.oschina.net/indexman/example.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
】
#查看状态
git status
git status -s
#查看更改
git diff
git log
【commit 9af9b4f9341d78b4b65e9f10f57a76e4e10fd855
Author: luohanye <indexman@126.com>
Date: Wed Aug 30 11:27:43 2017 +0800
更新 HelloWorld.java
commit 257857a248a3dafee4ca9912a1bc2bd88d0c0ac7
Author: dylan-pc <xusucheng@beyondbit.com>
Date: Wed Aug 30 11:07:39 2017 +0800
add HelloWorld clss
】
git log -p -2
git log -stat
git log --stat
git log --pretty=format:"%h %s" --graph
git diff
git --help
git --diff
git diff
git diff --cached
#克隆项目
git clone https://git.oschina.net/indexman/example.git
cd example/
dir
cat README.md
exit
#添加到暂存区
git add HelloWorld.java
git status -s
#提交到暂存区
git commit HelloWorld.java
$ git commit -m "add HelloWorld clss"
[master 257857a] add HelloWorld clss
1 file changed, 6 insertions(+), 1 deletion(-)
#push到远程仓库
git push
#获取仓库最新更改
git pull
【remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://git.oschina.net/indexman/example
257857a..9af9b4f master -> origin/master
Updating 257857a..9af9b4f
Fast-forward
HelloWorld.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
】
#暂存当前正在修改的内容
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
用'git stash apply stash@{1}将你指定版本号为stash@{1}的工作取出来
#移动文件后push
git reset HEAD HelloWorld.java
git commit -m "move HelloWorld.java to src/"
git push
#重命名文件
git mv HelloWorld.java HelloWorld2.java
git commit -m "xxx"
#删除文件
git rm HelloWorld2.java
git commit -a -m "remove HelloWorld2.java"
#修正错误
git checkout Developer.java #把提交到暂存区的修改撤回
#HEAD指针
如果发现错误的将不想暂存的文件被git add进入索引之后,想回退取消,则可以使用命令
git reset HEAD <file>
#处理冲突
$ git pull
【remote: Counting objects: 4, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From https://git.oschina.net/indexman/example
41fc76e..9f1464b master -> origin/master
Auto-merging src/Developer.java
CONFLICT (content): Merge conflict in src/Developer.java
Automatic merge failed; fix conflicts and then commit the result.
】
#git fetch和git pull的区别
git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
$ git fetch origin master
$ git log -p master..origin/master
$ git merge origin/master
Shell
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
$ git fetch origin master:tmp
$ git diff tmp
$ git merge tmp
Shell
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
Shell
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。
【推荐】国内首个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 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构