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

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 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
GitLab创建分支的步骤如下: 1. 打开GitLab网站并登录到您的帐户。 2. 导航到您的项目页面。 3. 在项目页面的顶部导航栏中,点击"Repository"选项卡。 4. 在"Branches"选项卡下,您将看到一个文本框,用于创建分支。在文本框中输入您想要创建分支的名称。 5. 点击"Create branch"按钮来创建分支。 6. 现在您已经成功创建了一个分支。您可以在项目页面的"Branches"选项卡下看到它。 请注意,这只是在GitLab网站上创建分支的一种方法。您还可以使用命令行工具,如Git Bash,通过运行适当的Git命令来创建分支。例如,您可以使用以下命令在本地创建并切换到分支: ``` git checkout -b yourbranch ``` 然后,您可以使用以下命令将分支推送到GitLab服务器: ``` git push -u origin yourbranch ``` 这将在GitLab创建并推送一个名为"yourbranch"的分支。 #### 引用[.reference_title] - *1* [往GitLab提交代码创建分支、合并分支的完整流程](https://blog.csdn.net/weixin_44137575/article/details/107770966)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [GitLab如何建立一个自己分支的流程](https://blog.csdn.net/weixin_41708020/article/details/107732132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值