git常用命令
获取代码&添加git源
-
下载代码
git clone +http网址
-
切换服务器端git源地址
git remote set-url origin +http网址
-
添加上游仓库
git remote add upstream +http网址
-
查看版本源信息
git remote –v
-
更新源的最新代码到本地仓库
git fetch upstream
分支操作
-
查看分支
git branch -a
-
查看本地分支
git branch
-
查看远程分支
git branch -r
-
切换分支
git checkout +分支名
-
创建本地新分支
git checkout –b +分支名
-
删除分支
git checkout –d +分支名//会在删除前检查merge状态
git branch -D +分支名//是git branch --delete --force的简写,它会直接删除
删除远程分支
git push origin --delete [branch_name]
-
将主分支合并到自己分支
切换到主分支
git checkout master
pull下主分支代码
git pull
切换至自己分支
git checkout selfBranch
主分支代码merge到自己分支
git merge master
将自己的分支推送至远端
git push origin remoteBranchName
-
当main主分支代码改动,需要更新开发分支(refresh)的代码
切换到主分支
git checkout main
拉取最新代码
git pull
切换到refresh分支
git checkout refresh
合并
git merge main
推送
git push -u origin refresh
-
本地分支重命名(还未推送到远程)
git branch -m oldName newName
-
远程分支重命名(已经推送远程-假设本地分支和远程对应分支名称相同)
重命名远程分支对应的本地分支
git branch -m oldName newName
删除远程分支
git push --delete origin oldName
上传新命名的本地分支
git push origin newName
把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
删除远程分支的本地缓存才算彻底删除
git fetch -p origin git branch -a
-
只merge某个commit到指定的branch
找到commit_id
git log
git cherry-pick 指定改动commit id
添加删除文件
-
添加指定文件到暂存区
git add [file1] [file2]
-
添加指定目录到暂存区,包括子目录
git add [dir]
-
添加当前目录的所有文件到暂存区
git add .//添加文件至本地分支
-
删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2]
-
改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]
代码提交
-
将远程仓库所有分支的最新版本全部取回到本地
git fetch <远程仓库的别名>
-
从本地仓库获取最新版本到workspace
git pull
-
提交暂存区到本地仓库
git commit -m [message]git push <远程仓库的别名> <分支名>
-
把本地仓库的分支推送到远程仓库的指定分支
git push <远程仓库的别名> <分支名>
-
取消关联远程仓库(删除已有的gitee远程仓库)
git remote rm origin
-
关联多个远程仓库(不能起相同名字)
git remote add github git@github.com:xxx/xxx.git//远程库github git remote add gitee git@gitee.com:xxx/xxx.git//远程库gitee
分别推送
git push github master git push gitee master
查看信息
-
显示所有文件状态
git status
-
显示当前分支的版本历史
git log
-
显示某次提交的元数据和内容变化
git show [commit ID]
-
搜索提交历史,根据关键词
git log -S [keyword]
代码回退
-
查找需要撤销的 commit_id
git log
-
撤销这次提交
git revert [commit_id]
-
回退到上一个版本
git reset --hard 版本号
-
取消本地变更
git checkout . && git clean –xdf
-
重置暂存区的指定文件,工作区不变
git reset [file]
例:
git log
git reset --hard commit_id
git push -f -u origin 分支名
git本地分支与远程分支建立连接
git branch --set-upstream-to=origin/<branch> xxxx
xxxx为当前本地分支名; 是本地分支对应的远程分支名。
例如:我的本地分支名refresh,我的远程分支名也是refresh
git branch --set-upstream-to=origin/refresh refresh
设置之后随后提示:
分支refresh设置为跟踪来自origin的远程分支refresh
这样就可以直接使用git pull拉去当前分支对应远程分支的内容了。
如果有个远程分支名为lixiang
的,你想本地分支跟这个远程分支建立连接关系,那就执行:
git branch --set-upstream-to=origin/lixiang refresh
之后在本地分支refresh
执行git pull
, 拉取的将会是远程分支lixiang
的最新内容。
push指定commit到远端
第一种方式:
本地仓库有多条commit,push某一条commit到远端。从最初的commit开始一个一个提交,但是不能实现指定某一个commit,只能按顺序提交。
假如本地commit了多次提交但是并不想一下push到远程。
可用:
git push origin commit_id(指定版本号):branchname
例如:
commit a4a39379f4038249f5f93938d43440d2e77eec46 (HEAD -> refresh)
Author: alixa <1920221963@qq.com>
Date: Fri Mar 31 10:44:36 2023 +0800
git问题内容补充
commit cf61154022c948986bce9c11cc73dc63614d69d5 (origin/refresh)
Author: alixa <1920221963@qq.com>
Date: Thu Mar 30 16:11:51 2023 +0800
新增mapreduce文档内容
根据功能或者时间的原因,可以一个一个提交。
此时可以使用:
// 最下面的一条为最初的一条,优先推送
git push origin cf61154022c948986bce9c11cc73dc63614d69d5:refresh
// 接着第二条同样的命令,commit换掉即可
git push origin a4a39379f4038249f5f93938d43440d2e77eec46:refresh
// ... 依次按顺序一个一个提交...
第二种方式:
采用cherry-pick用新分支去拉取当前分支的指定commit记录,之后推送到当前分支远程仓库实现推送指定历史提交的功能。
实际操作就是现在突然出现一个需求,此时本地分支需要拉取另一个分支refresh上的某部分代码修改(简单说就是需要合并指定commit记录的文件修改记录到当前分支)
-
在被合并的分支上进行查询commit操作
git log --oneline // 赋值需要合并的commit hash值
-
回到主分支后进行操作
// 合并一个commit_hash执行 git cherry-pick <commit hash> // 合并多个commit_hash执行 git cherry-pick commit_hashA commit_hashB // 合并多个连续的commit_hash执行(..) git cherry-pick commit_hashA..commit_hashB
注意:commit_hashA必须比commit_hashB提前提交,也就是说在被挑选的分支上,先有commit_hashA,然后才有的commit_hash。此处的commit_hash指的是被合并分支上的commit_hash,要提前记住再切回来执行相关代码。
在合并时遇到冲突:
-
合并冲突
如果遇到了代码冲突,合并过程会停止,需要使用其他的方式来继续对应的操作。这里的其他方式就是,正常的处理方式手动处理,之后进行下面的操作以继续命令。
-
采用–continue继续合并
第一步:需要合并人解决对应的冲突文件,然后提交到暂存区
git add .
第二步:使用下面的命令继续执行
git cherry-pick --continue
-
放弃合并
(1) 回归原始状态
// 使用当前的指令,合并的动作暂停,并且回归到操作前的样子 git cherry-pick --abort
(2)保留状态
//使用当前的指令,会保留车祸现场,退出cherry-pick git cherry-pick --quit
差异比较
要使用Git命令比较两个项目中的代码差异,可以按照以下步骤进行操作:
-
打开终端或命令提示符,并导航到第一个项目的本地存储库目录。
-
运行以下命令以确保你的本地存储库是最新的:
git pull
-
导航到第二个项目的本地存储库目录。
-
运行以下命令以确保第二个项目的本地存储库也是最新的:
git pull
-
返回到第一个项目的本地存储库目录,并运行以下命令来生成两个项目之间的代码差异:
git diff <目标分支/提交> <源分支/提交>
例如,如果你想比较两个不同分支之间的差异,可以使用:
git diff branch1 branch2
或者,如果你想比较两个不同提交之间的差异,可以使用:
git diff commit1 commit2
-
Git将显示两个项目之间的代码差异。你可以查看添加、删除和修改的文件以及每个文件中的具体更改。
空仓库
建立分支
git init -b "main"
建立readme文件并提交
touch README.md
git add README.md
git commit -m "first commit"
添加远程仓库
git remote add origin https://gitee.com/openhubble/cloud-database-explorer-services.git
推送新创建的分支
git push -u origin "main"