git详细操作

本文详细介绍Git的基本操作流程,包括克隆远程仓库、管理远程主机、拉取更新、解决冲突等,适用于初学者快速掌握Git的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作尽量全在拉下来的文件夹操作。别在子分支

一、git clone
远程操作的第一步,通常是从远程主机克隆一个版本库,这时就要用到git clone命令。

$ git clone <版本库的网址>
比如,克隆jQuery的版本库。

$ git clone https://github.com/jquery/jquery.git
该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

$ git clone <版本库的网址> <本地目录名>
git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。

$ git clone http[s]?/example.com/path/to/repo.git/
$ git clone ssh://example.com/path/to/repo.git/
$ git clone git://example.com/path/to/repo.git/
$ git clone /opt/git/project.git
$ git clone file:///opt/git/project.git
$ git clone ftp[s]?/example.com/path/to/repo.git/
$ git clone rsync://example.com/path/to/repo.git/
SSH协议还有另一种写法。

$ git clone [user@]example.com:path/to/repo.git/
通常来说,Git协议下载速度最快,SSH协议用于需要用户认证的场合。各种协议优劣的详细讨论请参考官方文档。

二、git remote
为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。
不带选项的时候,git remote命令列出所有远程主机。

$ git remote
origin
使用-v选项,可以参看远程主机的网址。

$ git remote -v
origin git@github.com:jquery/jquery.git (fetch)
origin git@github.com:jquery/jquery.git (push)
上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。
克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。

$ git clone -o jQuery https://github.com/jquery/jquery.git
$ git remote
jQuery
上面命令表示,克隆的时候,指定远程主机叫做jQuery。
git remote show命令加上主机名,可以查看该主机的详细信息。

$ git remote show <主机名>
git remote add命令用于添加远程主机。

$ git remote add <主机名> <网址> 这样的话 git remote -v 就会多出来
git remote rm命令用于删除远程主机。

$ git remote rm <主机名>
git remote rename命令用于远程主机的改名。

$ git remote rename <原主机名> <新主机名>

git pull 命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
$ git pull origin next:master
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
$ git pull origin next

英文: fetch 取

git pull ‘主机名’ 远程仓库分支名 从远程仓库的指定仓库拉下来操作

git reset --hard ‘版本号’ 可以回退到某个版本
git reset --hard^ 表示回退到上一个版本
git reflog 可以查看之前的版本号
git log 查看提交日志
git status 查看当前分支状态

git branch ‘分支名’ 创建分支
git checkout ‘分支名’ 切换到哪个分支
git branch -D liuxiaolong 强制删除本地仓库的某个分支
git push origin --delete ‘分支名’ 用于删除远程的某个分支
git branch -a 列出所有的分支包括本地分支
git branch -r 列出远程的所有分支
git branch 列出本地的所有分支

git log界面类似于其他 vim 界面 退出方法 随便哪个地方 同时按下 shift :
然后在 :后面输入wq 再按enter键表示 保存并退出 假如输入的是 q 则是直接退出

自我实践技巧:
对于一开始有项目在远程仓库的时候,先使用
git clone ‘远程仓库链接’ 进行将项目复制,紧接着将这个文件夹复制一份出来。然后在复制出来的文件夹创建一个自己远程仓库名字的子分支。后面做项目就在那操作,当要上传到自己的远程子分支时,要先在子分支git add . ,然后git commit -m “信息”使用 git checkout master 切换到自己本地的主分支。然后使用 git merge ‘分支名’ 进行将两者合并。然后使用 git add . 将文件添加到暂存区。然后 git commit -m ‘提交信息’ 再后面使用 git push origin ‘远程仓库分支名’ 将文件推送到远程子文件,对于第一次提交应该不会有冲突。如果有冲突则使用 git pull origin ‘远程仓库的分支名’ 进行将冲突合并。然后将提示的冲突解决掉。如果确认已经将冲突合并完了。就git add . 然后 git commit -m ‘提交信息’ 再 git push origin ‘远程仓库分支名’。一般的话能够成功,如果还不成功则一直再重复蓝色命令之后的操作。亲测必定有用,推送成功之后,记得将之前的本地子分支删除git branch -D ‘本地分支名’。然后再新建一个一样名字的本地子分支名 git branch ‘子分支名’

因为之前是在本地子分支操作的,然后在子分支进行 git add . 然后 git commit -m “信息” 所以再切换到主分支将这子分支和主分支进行合并。 然后执行 git merge ‘子分支名’ 然后可能会有冲突。所以进行冲突合并

如果一开始就要先从远程拉下更新,记得将工作区和缓存区清理干净,
就是git add . 然后git commit -m “信息”

报错1:error: failed to push some refs to ‘https://gitee.com/qnmlgb2/netease_strict_options.git
出现这个报错则使用下面的话进行手动确认追踪关系
git branch --set-upstream-to=origin/liuxiaolong liuxiaolong远程关系
第一个liuxiaolong代表的是远程分支名,第二个代表的是当前分支名

报错2:在github上git clone一个项目,在里面创建一个目录,然后git push的时候,出现报错"Everything up-to-date"
原因:
1)没有git add .
2)没有git commit -m “提交信息”
如果上面两个步骤都成功执行,还出现这个错误是因为创建的目录下是空的,目录下必须有文件才能git push上传成功。
在github上创建文件的时候,在新文件名后加/符号就是文件夹,但是这种方式只支持英文名目录,中文名目录
不支持。

报错3: git push 的时候出现 rejected 表示有冲突
下面这条命令是当重复的操作了上蓝色命令还是没用,再试一下下面的命令
git push ‘远程分支名’ 仓库链接

提示1: Initialized empty Git repository in D:/third stage/vuex练习/clc/.git/
代表初始化仓库成功(有master字样)
提示2:Reinitialized existing Git repository in D:/third stage/vuex练习/my-vuex/.git/
不能在仓库里初始化仓库,你这已经是个仓库了,无需初始化

报错3: 使用git init 创建一个git仓库的时候出现 创建分支的时候出现了如下错误
fatal: Not a valid object name: ‘master’.
而且输入 git branch 也没有一个分支包括 master分支
原因是没有提交一个对象,要先commit之后才会真正建立master分支,此时才可以建立其它分支。
解决 先 git add . 然后输入 git commit -m ‘信息’ 就可以了

问题1:

当我在子分支中修改的时候,切回主分支的时候,主分支的内容也跟着遍了。然后还会有下面的提示,我修改过的文件。是因为我们在之前的子分支中有修改过内容,没有添加到暂存区 git add . ,并且提交 git commit -m ‘信息’ ,所以我们再切换到其他分支的时候没有将工作区和缓存区弄干净,所以就把工作带到了其他分支,这时候不要进行任何操作,立即切回到原分支。然后 git add . ,再 git commit -m ‘信息’。

对于上面的问题也就很好解释了为什么在合并分支的时候在其他子分支要 先 git add .
然后再 git commit -m ‘信息’
如果不确定工作区和缓存区是否干净,可以使用 git status 查看当前分支的状态

出现如下提示表示 文件没有需要提交,而且 工作区是干净的 此时可以随意地切换到其他分支

(master|MERGING) MERGING再改完冲突之后还会有,需要使用 git add . 然后再git commit -m ‘信息’ 这样 MERGING字样就会消失了

对于git仓库的理解,当在本地创建多个分支时,在git pull 主分支的时候,子分支还是处于更新前的状态(还是原来的文件内容)。假如在这个时候创建一个新分支则它具有了master分支所有的文件内容。分支之间互不干扰

git stash进行现场保留,是一个储存的东西。然后跳转

删除git仓库 首先 删除 项目目录下的 .git文件夹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值