git常用命令入门

看了一个老师的视频课简单记录一下

Git概念:
git是一个开源的分布式版本控制系统,与SVN类似,但是Git是分布式的,利用分支来操作管理代码。Git的操作一般使用命令,SVN操作一般倾向于可视化界面。

在这里插入图片描述


workspace:工作区
staging area:暂存区/缓存区
local repository:本地仓库/版本库
remote repositoty: 远程仓库

常用命令:
git clone <仓库地址> 拷贝一个
git branch 查看本地和远程仓库分支 -r
git remote add [shortname] [url]关联远程仓库
git fetch 更新 远程代码库
git pull 如果一位同学已经提交了master,那么你就要先pull
git add . 提交暂存区111
git commit -m []到本地仓库222
git push<>到远程仓库333
另外:master是公共分支
输入git log后如果出现没有光标,输入:q 就正常了

面试:
项目中使用git的场景
1,需求开发前的分支拉取流程
2,需求开发后的分支合并流程
3,分支合并出现冲突如何解决
4,出现线上问题时,hotfix分支的操作流程?
实际项目开发中,如何拆分组件也是个很重要的问题,这样可以尽量避免开发中冲突,比如一个页面分为左中右,最后合并就行。
git用终端命令,svn是可视化界面,具体就是四个仓库之间的回传

一.你新建一个仓库 用gitee示例:https://gitee.com/leganoo/gitdemo
二.把当前项目提交到本地仓库: 新建一个仓库,把写好的项目提交
git init 1. 初始化
git add. 2. 提交到缓存区
git commit -m ‘简短描述’ 3. 提交到本地仓库
git status 查看是否全部提交到本地仓库

PS C:\Users\legan\Desktop\123\breath> git init
Initialized empty Git repository in C:/Users/legan/Desktop/123/breath/.git/
PS C:\Users\legan\Desktop\123\breath> git add .
PS C:\Users\legan\Desktop\123\breath> git commit -m '项目初始化'
[master (root-commit) efd2eed] 项目初始化
 7 files changed, 229 insertions(+)
 create mode 100644 .vscode/settings.json
 create mode 100644 animation-tailwind.html
 create mode 100644 breath-tailwind.html
 create mode 100644 tailwind.html
 create mode 100644 "\345\221\274\345\220\270\346\214\211\351\222\256.html"
 create mode 100644 "\345\221\274\345\220\270\346\214\211\351\222\2562.html"
 create mode 100644 "\347\254\254\344\272\214\346\234\237\346\214\211\351\222\256.png"
PS C:\Users\legan\Desktop\123\breath> git status
On branch master
nothing to commit, working tree clean

三.从本地仓库到远程仓库: 关联仓库,把项目推送到远程仓库
git remote add origin 【url】
1.和远程仓库关联起来
git remote -v 查看是否关联上了
git push -u origin ‘master’ 2.push进去并创建分支master (提示:首次输入会提示输入用户名密码,用户名是邮箱)
这样就提交到远程了

PS C:\Users\legan\Desktop\123\breath> git remote add origin https://gitee.com/leganoo/gitdemo.git
PS C:\Users\legan\Desktop\123\breath> git remote -v
origin  https://gitee.com/leganoo/gitdemo.git (fetch)
origin  https://gitee.com/leganoo/gitdemo.git (push)
PS C:\Users\legan\Desktop\123\breath> git push -u origin "master"
remote: [session-994aeaa3] leganoo@163.com: Incorrect username or password (access token)      
fatal: Authentication failed for 'https://gitee.com/leganoo/gitdemo.git/'
PS C:\Users\legan\Desktop\123\breath> git push -u origin "master"
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 12 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (10/10), 24.18 KiB | 12.09 MiB/s, done.
Total 10 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/leganoo/gitdemo.git
 * [new branch]      master -> master
branch 'master' set up to track 'origin/master'.

基础结束,接下来解决实际问题
一,新增项目需求时,创建新分支改代码,将新分支合并到master上,并且push到远程仓库
需求评审–代码调研–项目开发–拉取分支dev
git branch 查看本地分支
git branch -r 查看远程分支
git pull 1.对本地代码更新
git checkout -b 【名称】 2. 在本地创建创建分支dev-zhang-0817
git branch 查看 高亮选中的就是我们新建的分支
gitk 显示一个可视化页面 详细显示提交了啥
3.然后进行代码开发,开发完成后
git add . 4. 提交到暂存区 提示:vscode左边三个点的按钮是源代码管理, 可以看下高亮部分就是修改的内容
git commit -m ‘zhang提交’ 5. 提交到本地仓库 文案:zhang提交
git push origin dev-zhang-0817 6. push到远程仓库dev-zhang-0817

PS C:\Users\legan\Desktop\123\breath> git branch
* master
PS C:\Users\legan\Desktop\123\breath> git branch -r
  origin/master
PS C:\Users\legan\Desktop\123\breath> git pull
Already up to date.
PS C:\Users\legan\Desktop\123\breath> git checkout -b 'dev-zhang-0817'
Switched to a new branch 'dev-zhang-0817'
PS C:\Users\legan\Desktop\123\breath> git branch
* dev-zhang-0817
  master
PS C:\Users\legan\Desktop\123\breath> gitk
PS C:\Users\legan\Desktop\123\breath> git add .
PS C:\Users\legan\Desktop\123\breath> git commit -m 'zhang提交'   
[dev-zhang-0817 f482c05] zhang提交
 1 file changed, 1 insertion(+)
PS C:\Users\legan\Desktop\123\breath> git push origin dev-zhang-0817
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 311 bytes | 311.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'dev-zhang-0817' on Gitee by visiting:
remote:     https://gitee.com/leganoo/gitdemo/pull/new/leganoo:dev-zhang-0817...leganoo:master
To https://gitee.com/leganoo/gitdemo.git
 * [new branch]      dev-zhang-0817 -> dev-zhang-0817

OK 需求开发完成后,进行分支合并,将功能从本地分支上合并到master分支上

git branch 查看
git checkout master 7. 切换分支到master,由 master来合并分支
git merge dev-zhang-0817 8.合并到master
git push 仓库名称 分支名称 9.git push origin master 将master重新进行提交

PS C:\Users\legan\Desktop\123\breath> git branch
* dev-zhang-0817
  master
PS C:\Users\legan\Desktop\123\breath> git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
PS C:\Users\legan\Desktop\123\breath> git merge dev-zhang-0817
Updating efd2eed..f482c05
Fast-forward
 "\345\221\274\345\220\270\346\214\211\351\222\2562.html" | 1 +
 1 file changed, 1 insertion(+)
PS C:\Users\legan\Desktop\123\breath> git push origin master
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/leganoo/gitdemo.git
   efd2eed..f482c05  master -> master

二.,假设,有位kevin同学也在开发项目
首先建立Kevin的新分支,提交是一摸一样的步骤
git branch
git config --global user.name ‘kevin’ 设置名字
git checkout -b dev-kevin-0530 新建分支
git branch 有了kevin
新加一段代码后
git add .
git commit -m ‘kevin提交’
git push origin dev-kevin-0530 分支push到远程
git checkout master 到master分支进行合并
git merge dev-kevin-0539 合并时需要切换到master分支,master就有那段代码了
git push origin master 然后kevin将我们的master代码进行提交
Kevin操作开发结束

PS C:\Users\legan\Desktop\123\breath> git config --global user.name 'kevin'
PS C:\Users\legan\Desktop\123\breath> git checkout -b dev-kevin-0530
PS C:\Users\legan\Desktop\123\breath> git branch
  dev-zhang-0817
  master
PS C:\Users\legan\Desktop\123\breath> git add .
PS C:\Users\legan\Desktop\123\breath> git commit -m 'kevin提交'
[dev-kevin-0530 67898ff] kevin提交
 1 file changed, 1 insertion(+)
PS C:\Users\legan\Desktop\123\breath> git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
PS C:\Users\legan\Desktop\123\breath> git branch
  dev-kevin-0530
* master
PS C:\Users\legan\Desktop\123\breath> git merge dev-kevin-0530
Updating 0fe3114..67898ff
 "\345\221\274\345\220\270\346\214\211\351\222\2562.html" | 1 +
PS C:\Users\legan\Desktop\123\breath> git checkout dev-kevin-0530
Switched to branch 'dev-kevin-0530'
PS C:\Users\legan\Desktop\123\breath> git push origin dev-kevin-0530
Enumerating objects: 5, done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 309 bytes | 309.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'dev-kevin-0530' on Gitee by visiting:
remote:     https://gitee.com/leganoo/gitdemo/pull/new/leganoo:dev-kevin-0530...leganoo:master
To https://gitee.com/leganoo/gitdemo.git
 * [new branch]      dev-kevin-0530 -> dev-kevin-0530
PS C:\Users\legan\Desktop\123\breath> git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
PS C:\Users\legan\Desktop\123\breath> git merge dev-kevin-0530
Already up to date.
PS C:\Users\legan\Desktop\123\breath> git push origin master
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/leganoo/gitdemo.git
   0fe3114..67898ff  master -> master
PS C:\Users\legan\Desktop\123\breath> git log
commit 67898ff27acc4fc8a5c01cc903b927757e097ad8 (HEAD -> master, origin/master, origin/dev-kevin-0530, dev-kevin-0530)
Author: kevin <leganoo@163.com>
Date:   Wed Aug 17 17:51:07 2022 +0800

    kevin提交

commit 0fe31143ce470a4bf388172a123a7e99ed0b8352
Author: zhangyue <leganoo@163.com>
Date:   Wed Aug 17 17:40:40 2022 +0800

    zhangceshi5

commit 5f07ebb3e6cf7659d3bd575e28e8045432a87af7 (origin/dev-zhang-0817, dev-zhang-0817)
Author: zhangyue <leganoo@163.com>
Date:   Wed Aug 17 17:11:34 2022 +0800

    zhangceshi4

commit ff2e3732760f44b6029f249f658b80942c739a07
Author: zhangyue <leganoo@163.com>
Date:   Wed Aug 17 17:02:13 2022 +0800
:
到此为止,Kevin开发操作也完成了

多操作几遍就会了
git checkout -b ‘新分支名字’
改变代码
1 git add .
2 git commit -m ‘我提交的’
3 git push origin 新分支名字
4 git checkout master
5 git merge 新分支名字
6 git push origin master
有push两次 ,push需要origin名

三,如何解决分支冲突?这位kevin同学和你一起在开发项目
git config --global user.name ‘zhang’ 1切换回自己
git checkout dev-zhang-0817 切换 每个分支是相互独立的
加新代码
git add .
git commit -m ‘xx’
git push origin xxx 远程推送
git checkout master
git merge dev-zahng-0817
如果有冲突提示,则出现错误,同一个页面,两位同学在修改同一段代码,一般来说。正常流程不会有两位一起开发的,设计流程出了问题,这是最常见的冲突。
沟通,可以选择第三个按钮,以两个都要来解决冲突

在这里插入图片描述

git push origin master

PS C:\Users\legan\Desktop\123\breath> git config --global user.name 'zhangyue'
PS C:\Users\legan\Desktop\123\breath> git checkout dev-zhang-0817
Already on 'dev-zhang-0817'
git: 'add.' is not a git command. See 'git --help'.

        add
PS C:\Users\legan\Desktop\123\breath> git add .
PS C:\Users\legan\Desktop\123\breath> git commit -m 'feat-0818'
 1 file changed, 1 insertion(+)
PS C:\Users\legan\Desktop\123\breath> git push origin dev-zhang-0817
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 294 bytes | 294.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/leganoo/gitdemo.git
   5f07ebb..f9a7295  dev-zhang-0817 -> dev-zhang-0817
PS C:\Users\legan\Desktop\123\breath> git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
PS C:\Users\legan\Desktop\123\breath> git merge dev-zhang-0817
Auto-merging 呼吸按钮2.html
CONFLICT (content): Merge conflict in 呼吸按钮2.html
Automatic merge failed; fix conflicts and then commit the result.
PS C:\Users\legan\Desktop\123\breath> git push origin master
Everything up-to-date
PS C:\Users\legan\Desktop\123\breath> 

四,出现线上问题时,hotfix分支的操作流程?(这个不是很懂,看一遍过)
git checkout -b hotfix-zhang-0818 拉取分支新建分支
修复问题
git add .
git commit -m ‘xx’
git push origin xxx
git checkout master
预发布分支一般叫做uat分支
在网站上,基于master分支再创建一个uat分支
然后需要把hotfix分支合并到预发布分支上,进行上线前的测试

在这里插入图片描述


现在git branch -r 没有uat
git fetch 更新远程仓库 就有uat分支了
现在需要在本地创建uat分支,在本地创建分支还有要关联远程分支
git checkout -b uat origin/uat 关联到本地
git merge hotfix-zhang-0818 合并分支
git push orgin uat 测试完成后,就可以提交
在测试完成后,就可以把uat分支合并到master发布就好了

PS C:\Users\legan\Desktop\123\breath> git checkout -b hotfix-zhang-0818
Switched to a new branch 'hotfix-zhang-0818'
  dev-kevin-0530
  dev-zhang-0817
* hotfix-zhang-0818
  master
  origin/dev-kevin-0530
  origin/dev-zhang-0817
PS C:\Users\legan\Desktop\123\breath> git branch -r
  origin/dev-kevin-0530
  origin/dev-zhang-0817
  origin/master
From https://gitee.com/leganoo/gitdemo
 * [new branch]      uat        -> origin/uat
PS C:\Users\legan\Desktop\123\breath> git checkout -b uat origin/uat
error: you need to resolve your current index first
呼吸按钮2.html: needs merge
PS C:\Users\legan\Desktop\123\breath> git merge hotfix-zhang-0818
error: Merging is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
PS C:\Users\legan\Desktop\123\breath> git push origin uat
error: src refspec uat does not match any
error: failed to push some refs to 'https://gitee.com/leganoo/gitdemo.git'

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...