(git指令详解)gitlab创建新分支并上传代码

(git指令详解)gitlab创建新分支并上传代码本文详细介绍了在 Windows 上如何下载配置 Git 关联远程仓库 创建并切换分支 以及如何上传本地修改到 GitLab

大家好,欢迎来到IT知识分享网。

windows,在github上clone一个项目到本地,创建一个新分支,在新分支上修改,并将新分支上传。

建议不要直接在clone下来的项目中修改,可以在本地新创建一个分支修改后上传

关于git是什么,可以参考: 廖雪峰

git常用指令



一、win10下git的下载和配置

参考: 下载git并配置

关联远程仓库(以后要clone和push的仓库)

下面origin后面的链接换成自己的

git remote add origin git@gitlab.nroad.com.cn:nroad-edu/vpp.git git remote add origin https://gitlab.nroad.com.cn/nroad-edu/vpp.git 

绑定用户信息和gitlab:

$ git config --global user.name "注册gitlab的名字" $ git config --global user.email "注册gitlab使用的邮箱" 

(该信息存放在~/.gitconfig文件中)

生成秘钥/公钥:

ssh-keygen -t rsa -C "你的邮箱" 

在生成过程中会提示输入公钥存储的路径密码,建议全部回车
然后输出的信息中可以看到公钥的存储路径:your public key has been saved in 路径

  1. ubuntu 查看公钥
cat ~/.ssh/id_rsa.pub 
  1. windows查看公钥
    一般公钥和私钥保存在C:\Users\Administrator\.ssh里面

打开id_rsa.pub,复制里面的内容 (最后面的邮箱不要复制)
打开gitlab,在设置中找到SSH,将复制内容粘贴到对应位置,添加,完成配置。
上面两步可以参考

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在要上传的项目所在目录下右键鼠标,点击git bash
在这里插入图片描述
会出来一个命令行窗口:
在这里插入图片描述

一些问题

注意项目所在目录位置,图中D:\VPP\vpp 是我正确的目录位置,可以输入git branch看分支:
在这里插入图片描述
stable/2101 是我clone的时候指定要clone的分支,clone下来后这个项目会自带一个.git文件:
在这里插入图片描述
我当时clone的时候把这个项目放在一个新建的D:\VPP中,因此在这个文件夹中打开git bash,输入指令他会提示你没有git 仓库,就像这样:
在这里插入图片描述
所以一定要在正确的目录下上传项目。

新建和切换分支:

git branch newbranch // 新建分支 git checkout -b newbranch // 创建并切换(常用) 
git switch -c newbranch // 创建并切换 git switch yourbranch // 切换分支 

关联本地仓库到gitlab

先查看你远程仓库的地址,ssh,https这两个地址都可以,复制
在这里插入图片描述
本地git bash中执行:

git remote add origin git@gitlab.nroad.com.cn:jiangxt/vpp.git 

注意把 git@gitlab.nroad.com.cn:jiangxt/vpp.git 换成你自己的地址。

这样你就可以开始上传项目了。

开始自己的开发

在远程公共仓库页面点击fork,克隆一个到自己的远程仓库,然后再git clone到本地开发。
未来也是git push到自己的远程仓库。

当将自己远程仓库文件推送到公共仓库时,在自己仓库左侧的merge requests中,选择源仓库源分支目标仓库目标分支,确认后即可提交…

二、新建git仓库:git init

  1. 如在E:\my_project下执行
git init 新建项目 
  1. 或在E:\my_project\project_1下执行
git init 

通过ls -al命令可以看到,在新建项目的目录下生成一个隐藏的.git文件
在这里插入图片描述
在这里插入图片描述

三、拉取项目:git clone

从远端服务器拉取项目

git clone 项目地址 

请确保有项目的访问权限,不然会出现以下问题

Cloning into '项目名称'... remote: Repository not found. fatal: repository '项目地址' not found 

对于大文件的克隆

目前一些git服务器使用Git LFS(Large File Storage)更高效地管理大文件。Git LFS是Git的一个扩展,允许将大文件单独存储在Git仓库之外。因此这时候使用git clone将无法拉取完整项目代码。
而是要使用:

git lfs clone 

参考:Git LFS使用教程

四、上传项目

当修改本地项目中一些文件,或是新建文件后,可以:

查看仓库状态:git status

git status 

出现:
在这里插入图片描述
这里提示要使用 git add ,并且说没有要commit的文件(add后才会有要commit的文件)

然后:

添加文件到暂存区:git add

git add -A // 表示添加所有文件 git add . // 同上 

git add 文件名 

(暂存区指的是还没有被提交的文件区域)
在这里插入图片描述

再次查看仓库状态:
在这里插入图片描述
这里提示需要commit

然后:

提交更改:git commit

将本地暂存区的文件提交到本地的版本库中(不影响服务器):

git commit -am "test" // 一次提交所有暂存区文件 

git commit -m "test" // 一次提交所有暂存区文件 

一定要加 -m参数,“ ”里面写你这次改动的内容,这在后面查看的时候对这个文件改了啥一目了然。
在这里插入图片描述
再次查看仓库状态:
在这里插入图片描述

很干净,这时候就要push到远程仓库了。

修改最近一次的提交信息

比如修改最近一次提交的说明信息:

git commit --amend 

会进入vim编辑器进行修改

修改之后会生成一个新的提交节点,用于取代之前需要修改的提交节点

上传:git push

将本地版本库的分支上传到服务器的对应分支

git push 远程仓库(默认就是origin) 本地分支:远程分支 如: git push origin jxt:jxt 

git push 远程仓库(默认就是origin) 本地分支 如: git push origin jxt 

git push origin jxt会自动创建远程分支,该远程分支名即为本地分支名jxt

如果有问题可以加参数 -f 强制上传
不建议强制上传

上传时候的一些问题

在这里插入图片描述
这应该是之前关联仓库错误,需要将之前的仓库删掉换成想要的仓库

// 查看本地关联的仓库详细信息 git remote -v 

我之前因为使用了git镜像网站加快clone速度,因此查看本地的关联仓库为:
在这里插入图片描述
我并不想push到这个仓库上面,因此要删掉:

// origin 替换为你本地要删除的远程仓库名字 git remote rm origin 

然后添加自己的:

git remote add origin git@gitlab.nroad.com.cn:nroad-edu/vpp.git 

貌似用https地址会找不到分支,建议使用ssh的git地址。

五、拉取分支

拉取分支:git pull

git pull确保本地工作目录与远程仓库保持同步。==用于从远程仓库获取某个分支的更新,并与本地制定分支进行自动合并。
== 它的作用相当于执行了 git fetch(获取远程仓库的最新变化)和 git merge(将远程仓库的最新变化合并到当前分支)两个步骤。

例如:

从远程仓库origin拉取 远程分支并将其合并到本地的 本地分支

git pull origin 远端分支:本地分支 // 如果 本地分支 不存在,Git 会尝试创建一个新的分支。 

git pull origin 远端分支 // 当 远端分支名 与 本地分支名 相同 

获取远端更新:git fetch

git fetch origin 远端分支:本地分支 

git fetch origin 远端分支 // 当远端分支名与本地分支名相同 

git fetch只更新不合并,因此不影响本地当前分支(只会更新到仓库,不影响工作区),相当于本地使用git branch会看到多了一个新的分支。

合并分支1:git merge

将源分支的更改合并到当前分支中:

git checkout 目的分支 // 首先切换到目的分支上 git merge 源分支 

git merge 源分支 目的分支 

在当前分支上创建一个新的合并提交,将源分支(要合并的分支)和当前分支的历史记录整合在一起。
特点:保留了原有分支的提交历史,合并后的提交历史是一条线性的合并历史,可以清晰地看出每个分支的贡献。

合并分支2:git rebase

将远端目标分支的更改移动到当前分支上,并使提交历史保持线性。

git rebase 远端分支 // 远端分支最好不要是公共的master分支,不然会更改master分支的log 

参考:Git合并操作之merge、rebase、squash详解

合并的冲突处理:

git merge时, 例如两个分支的同一句话有不同的修改,在合并时会产生冲突:

Auto-merging 发生冲突的文件名 CONFLICT (content): Merge conflict in 发生冲突的文件名 Automatic merge failed; fix conflicts and then commit the result. 

此时使用git status会提示有无法合并的文件:

On branch main You have unmerged paths. (fix conflicts and run "git commit") (use "git merge --abort" to abort the merge) Unmerged paths: (use "git add <file>..." to mark resolution) both modified: file.txt no changes added to commit (use "git add" and/or "git commit -a") 

根据提示,可以手动修改冲突文件:

vim 发生冲突的文件名 

会出现以下内容:

<<<<<<< HEAD This is some content on the main branch. ======= This is some content on the feature branch. >>>>>>> feature-branch 

=======上面是当前分支该文件内容,下面是需要合并过来的分支该文件内容,手动修改
(注意把<<<<<<< HEAD>>>>>>> feature-branch内容也删掉)

然后根据git status中出现的提示,解决冲突后使用 git add来标记已经解决,然后使用 git commit完成合并操作

六、其他git指令

删除文件:git rm

git rm 文件名 

删除文件后,该文件不再被git管理追踪

移动\重命名文件:git mv

移动文件:

git mv 文件名 路径 

重命名文件:

git mv 旧文件名 新文件名 

比较分支之间的差异:git diff

比较分支差异:

git diff 本地分支 比较分支 

比较节点差异:

git diff commit_id_1 commit_id_2 

查看日志:git log

git log 

可以查看commit提交的日志(最上面是最新的),包括作者、时间和说明。

查看详细日志,包括修改、新建、删除等:

git log --name-status 

只看最近两个提交节点信息:

git log -2 

查看分支:git branch

查看本地分支:

git branch 

查看服务器上分支:

git branch -r 

查看本地和服务器上所有分支:

git branch -a 

创建、切换分支:git checkout

git branch newbranch // 新建分支 git checkout -b newbranch // 创建并切换(常用),新的分支内容和之间的一模一样 
git checkout newbranch // 切换分支 git checkout -f newbranch // 强制切换 

撤销文件操作:git checkout

当修改了某些文件中的内容,但是还没有git commit
这时候想要撤销这些文件的修改,使用

git checkout 文件名 

可以通过git atatus查看撤销前后的状态变化

撤销所有操作时,使用(慎用

git checkout . 

删除分支:git branch -d

  1. 删除本地分支:
git branch -d 本地分支名 git branch -D 本地分支名 // 强制删除 
  1. 删除服务器上的远程分支:
git push origin -d 远程分支名 

push相当于是将删除操作推送到服务器

撤销操作:git reset

通过执行git log查看历史提交节点,确定要回退的commit_id

git reset commit_id 

git reset用于撤销当前工作区执行的git addgit commit操作

查看最近git指令:git reflog

git reflog 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/116820.html

(0)
上一篇 2024-11-19 08:33
下一篇 2024-11-19 08:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信