程序员必备之——代码托管工具 git

这篇具有很好参考价值的文章主要介绍了程序员必备之——代码托管工具 git。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、git的安装及本地配置

1.1、git介绍

1.2、git本地安装及配置

1.3、git远程仓库

二、git的命令及使用

2.1、基础命令

三、git的分支

3.1、常用命令

3.2、执行效果图

3.3、合并时有冲突该怎么办?

3.4、解决冲突

3.5、git分支图解

四、连接远程仓库

4.1、在gitee新建远程仓库

4.2、关联远程仓库

4.3、克隆代码

五、忽略文件

六、常用指令汇总


一、git的安装及本地配置

1.1、git介绍

这是官方给出的git介绍:

git工具,工具,git

  1. 代码托管与合并
  2. 版本控制
  3. 分布式(每一个终端都有一套完整代码)

闭坑:git是分布式版本控制工具,可以进行版本穿梭,但是有一个前提,就是你的修改再版本历史记录中是存在的,即 “该版本被提交到本地仓库或远程仓库” ,只有满足该条件,才会被记录位版本。

每次pull拉取远程仓库的代码时,要先把本地修改提交(commit)到本地仓库

(不commit直接pull,远程库代码会覆盖本地代码的修改,提交到本地库再pull,会把本地修改和远程库代码合并)

每次push推送代码前,也要先把修改提交到本地库,然后pull拉取远程仓库的代码(合并远程库和本地修改),然后再push

(不pull直接push,会覆盖远程库代码,别人的修改提交就会被覆盖)

解析:

git是代码的一套托管工具,它分为两个仓库,首先将你写的代码提交到本地仓库,这个时候只有你可以看,和你一起开发的同事看不到。将本地仓库的代码推到远程仓库(githab、gitee、gitlab等之一),然后你的同事就可以通过一个git的命令拉下你推到远程仓库的代码了。同样,只有你同事将他写的代码推送到远程仓库后,你执行git命令才能把他写的代码拉下来,合并到你的代码里。

这就是代码托管仓库的一部分优势,或许你感觉不到什么,老王举个例子,你们三个前端做一个项目,写一部分就得汇总合并一次代码吧?没有这个托管工具你怎么合并?咋用个小u盘咋copy一下,那得copy多少次,合并起来多困难,这就是代码托管工具的优势,通过几行简单的命令就实现了代码的托管和合并。

git还有一个优势,就是可以回到你提交代码的任意一个历史版本。例如,你写了这三个功能,上传,删除,添加。每写完一个功能就提交一次仓库,本地或者远程仓库都可以/后来又写了半天,发现写不对了,你想回到上传时候的代码,这个时候通过git命令也是可以回去的。

老王叨叨这么好多字,现在大家对git是不是有了一个初步的了解?

为了加深大家的记忆,便于理解,通过画图解析一下:

git工具,工具,git

1.2、git本地安装及配置

1、下载地址: https://git-scm.com/

2、安装,下一步,安装完成

git工具,工具,git

3、安装完成后,打开终端,执行git  --version检查是否成功安装 

git工具,工具,git

安装成功后,在桌面或文件夹内右击会出现Git Bash Here 选项,点击会打开git命令窗口

git工具,工具,git

git工具,工具,git

4、基本配置

在git设置用户名和邮箱(git命令窗口里不可以使用快捷键复制粘贴,必须使用鼠标右击复制粘贴)

配置用户名:

 git config --global user.name "用户名英文"

配置用户邮箱:

 git config --global user.email "你的邮箱"

git工具,工具,git

基本配置完成。 

5、初始化项目

项目的git命令窗口执行 git init 命令,初始化项目,在项目文件夹中出现 .git 文件,项目初始化完成。

git工具,工具,git

1.3、git远程仓库

推荐gitee,国内代码托管仓库

1、网址:http://gitee.com/

2、直接注册

git工具,工具,git

3、注册后配置ssh密钥(仓库权限)

为什么配置密钥?

就是为了解决,git提交代码的时候,不用每次都输入用户名和密码。配置后,可以直接提交。

生成密钥的指令:

 ssh-keygen -t rsa -C "这里输入你的邮箱@xxxxx.com"  

 获取密钥:

git工具,工具,git

密钥路径:

git工具,工具,git

密钥文件:

git工具,工具,git

在远程仓库配置公钥: git工具,工具,git

 配置完成后,在git窗口输入:

 ssh -T git@gitee.com

如果返回下面内容,就证明配置成功。

 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.

git工具,工具,git

二、git的命令及使用

git工具,工具,git

git工具,工具,git

2.1、基础命令

将代码推送到暂存区

//注意: add 后面有一个空格

git add .

将暂存区代码推送到本地仓库

//commit 后面有一个空格

git commit -m '本次提交的注释说明'

拉取远程仓库的代码

//在拉取远程代码的时候,必须执行上面两步,将你刚写的代码存到本地仓库,如果不执行前面两步,那你刚写的的代码就会被拉下来的代码覆盖
//只有你存到本地仓库了,才不会被覆盖,存到本地仓库再拉取,就会把你的修改和远程库的最新版本合并

git pull

将拉取的最新版本和你的本地仓库的最新修改合并,然后推送到远程库

git push

 查看提交详细信息

git log

 如图:

git工具,工具,git

 查看提交过的历史版本号

git log --online

如图: 

git工具,工具,git

 版本穿梭,根据版本号,回到历史版本

//回到指定历史版本

git checkout 版本号

//或者 , master 就是回到最近的一次提交的历史版本

git checkout master

回到指定版本 

git工具,工具,git

回到最近版本 

git工具,工具,git

三、git的分支

使用git分支可以同时展开多条任务线,例如add分支写添加功能代码,delete分支写删除功能,edit写修改功能,同时写多个功能,且互不影响。例如在工作中,你正在写一个add功能,而领导要你紧急添加一个删除功能,这时你就可以先创建一个删除功能的分支,且不会影响你原来在写的功能代码。

git默认master分支,也叫主分支

3.1、常用命令

创建分支命令

git branch 分支名

查看所有分支命令

git branch

//前面带星号的是当前分支

切换分支

git checkout 分支名

 合并分支

//把指定分支 合并到 当前分支

git marge 分支名
 // 先把在dev分支写的代码提交到本地仓库
 git add .
 git commit -m '我是dev分支写的代码'
 
 // 切换回要合并的master主分支
 git checkout master
 
 // 拉取远程的代码到master主分支(将同事的代码和你之前提交到远程的代码拉回来)
 git pull
 
 // 将dev分支写的代码合并到master上
 git merge dev
 
 // 合并完之后,将合并的代码和pull拉下来的代码,一起推到远程仓库
 git push

3.2、执行效果图

  1. 创建分支
  2. 将分支上的代码提交到本地库
  3. 切换回主分支,拉取远程库代码
  4. 将分支代码合并到主分支

先创建分支,将分支上的代码提交到本地库

git工具,工具,git

回到主分支,并拉取远程库代码 (这里因为没有远程库,就没有pull)

git工具,工具,git

然后,将分支合并到当前主分支

git工具,工具,git

3.3、合并时有冲突该怎么办?

  1. 修改代码,解决冲突
  2. 重新提交到本地库
  3. push到远程仓库

冲突就是你pull下代码后,将分支合并到主分支时,发现你同事和你修改了同一个地方,就会出现冲突。

我们模拟一下,Dev分支中,你写了13行

git工具,工具,git

你的同事在master分支上,在该文件的第13行也进行了编辑修改

合并Dev分支和master分支时,就会出现冲突

git工具,工具,git

报错翻译 git工具,工具,git

3.4、解决冲突

决定留下谁的代码,或者都留下,或都不保留

git工具,工具,git

 做出选择后,需要重新add、commit,将合并的代码推到本地仓库,然后在push,将代码推送到远程。

如果你还要在dev写,那就得把master最新得代码(包括同事的)合并到dev,然后接着在dev开发。

git工具,工具,git

3.5、git分支图解

git工具,工具,git

GIt 的分支之间 是相互不影响的,即使是提交到本地仓库,也是互不影响的,每个分支上的本地仓库都是独立互不影响的,或者说每个本地仓库都是一个单独的分支。

工作中,我们都是多分支工作,一个运行分支,一个开发分支,一个自己的研发分支,

自己在个人研发分支完成功能开发后,合并到开发分支,检测有没有Bug冲突,没有问题再合并到运行分支(主分支)

四、连接远程仓库

4.1、在gitee新建远程仓库

点击加号,点击新建仓库

git工具,工具,git

填写项目信息

git工具,工具,git

创建成功提示

git工具,工具,git

添加远程仓库,并将本地master和远程master关联

git工具,工具,git

4.2、关联远程仓库

本地无仓库

  1. 创建初始化本地仓库
  2. 将所有文件推送到本地库
  3. 关联远程库
  4. 将本地库分支和远程库分支关联

本地有仓库

  1. 关联远程库
  2. 将本地库分支和远程库分支关联

git工具,工具,git

git工具,工具,git

git工具,工具,git

4.3、克隆代码

赋值仓库ssh

新建文件夹,打开该文件夹下终端输入一下命令

git clone ssh地址

git工具,工具,git

五、忽略文件

有时候,我们不想把某些文件纳入版本控制之中,比如依赖包,临时文件等

这个时候可以利用 .gitgnore 文件,设置忽略规则

  1.  .gitgnore 文件的注释文本以 # 开头
  2. 可以使用Linux通配符,例如 : *.txt  ,代表 忽略所有以.txt结尾的文件
  3. !感叹号代表例外规则,将不被忽略
  4. 目录后面加 / 分隔符,代表忽略该目录下的子目录(只忽略该目录下的子目录,而不忽略该目录下的文件)
  5. 目录前面加 / 分隔符,代表只忽略该路径下的指定文件
#井号开头,该行为注释内容

*.txt             #忽略所有 .txt 结尾的文件,这样的话此类文件不会被git上传

!zxf.txt         #zxf.txt文件例外,它不会被忽略

/temp             #只忽略该路径下的txt文件

view/             #view路径下的所有文件会被忽略

view/*.txt        #忽略view路径下的所有txt文件,但不包括它子目录下的txt文件

常用规则配置:

bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件

/bin: 忽略根目录下的bin文件

/*.c: 忽略 cat.c,不忽略 build/cat.c

debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj

**/foo: 忽略/foo, a/foo, a/b/foo等

a/**/b: 忽略a/b, a/x/b, a/x/y/b等

!/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件

*.log: 忽略所有 .log 文件

config.php: 忽略当前路径的 config.php 文件


六、常用指令汇总

window 安装 Git

# 第一步、Git官网下载Git傻瓜式安装,可以打开git bash即为成功。
# 第二步、设置参数
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

# 获取config信息
$ git config --list 

# 去掉git add 命令后 出现的一堆CR LF提示信息,其中CR是回车的意思 LF是换行
$ git config --global core.safecrlf false 

# 存储凭证 (可用于输入一次用户密码后,不再输入 有时我们已经用SSH key 绑定关联好了 但是每次git提交的时候 还是需要你输入用户名密码 在这个时候 敲入这个命令 将凭证存储起来 用户名密码就不需要再次输入了)
$ git config --global credential.helper wincred 

# 将commit命令设置别名ci git commit命令将由git ci来代替
$ git config --global alias.ci commit 

创建仓库

# 进入目录,将它变成Git可以管理的仓库
$ git init

文件提交至仓库

# 文件添加至暂存区
$ git add <file>

# 暂存区内容提交至时间线
$ git commit -m <message>

# 直接使用该指令,相当于执行了以上两条指令
$ git commit -am "备注信息" 

查看当前仓库状态

# 时刻掌握仓库当前的状态
$ git status

# 具体指定文件修改(工作区 对比 暂存区)
$ git diff <file>

# 工作区 对比 暂存区 之间的差异
$ git diff

# 查看暂存区和仓库差异
$ git diff --cached

# 查看工作区文件状态
$ ls

# 查看暂存区的状态
$ git ls-files



版本回退

# 查看日志
$ git log

# 日志简洁输出
$ git log --pretty=oneline

# 日志时间线视图形式输出
$ git log --graph

# Git中,用HEAD表示当前版本,上一个版本是HEAD^,上上一个版本是HEAD^^
# 往上100个版本是HEAD~100
$ git reset --hard HEAD^

# 若又想找回怎么办
# 先查找commit id
$ git reflog

# 使用id切换版本
$ git reset --hard commit_id

撤销修改

# 丢弃工作区的修改
$ git checkout -- file

# 已经进入暂存区的修改撤销,重新放入工作区
$ git reset HEAD <file>

# 已经提交至版本库,版本回退
$ git reset --hard commit_id

删除文件

# 一般情况下,在文件管理器或使用rm删除文件。这个时候需要将操作提交至暂存区
$ git rm <file>

# 接着commit
# 还有一种情况是误删,但是版本库中还是保存了旧版本可以恢复
$ git checkout -- file
# git checkout实际上是使用时间线上一个版本中的内容将现工作区替换(用上个版本中的该文件替换该版本中的该文件)

创建远程仓库

# 第一步创建SSH Key。
$ ssh-keygen -t rsa -C "youremail@example.com"
#然后可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个文件就是SSH Key的密钥对,一个是私钥,一个是公钥。
# 第二步,登录网站,添加上自己的公钥密钥

添加远程仓库(本地已有仓库)

# 首先在Github建立空的远程仓库,接着将本地仓库与之关联
# origin的名称可以更改,是本地仓库终端操作时,保存的远程仓库的本地命名
$ git remote add origin git@github.com:michaelliao/example.git

# 本地仓库所有内容推送
# 实际上是将当前分支master推送,第一次需加-u参数,将本地的master与远程的新的master相关联
# 以后不需要再添加-u参数,直接git push 推送即可
$ git push -u origin master

# 本地修改提交
$ git push origin master

# 查看远程库信息
$ git remote -v

# 根据远程库名字删除远程库
$ git remote rm name

# 更新仓库(比如检测不到新建分支时)
$ git remote update origin

从远程库克隆(本地无仓库)

# 现有远程库,我们本地从零开发
# 没有本地库,直接从远程库克隆本地库
$ git clone git@github.com:michaelliao/gitskills.git

# 克隆指定分支
$ git clone -b 分支名 git@github.com:michaelliao/gitskills.git

创建与合并分支

# 创建并切换到一个叫dev的新分支
# 加上-b,表示创建并切换。相当于以下两部
$ git checkout -b dev

# 创建dev分支
$ git branch dev

# 切换到dev分支
$ git checkout dev

# 查看分支情况
$ git branch

# 若dev上做了很多工作,现在dev合并到master
$ git checkout master
$ git merge dev

# 合并后dev的工作就全部保存至master,可以放心删除
$ git branch -d dev

# swich,新的分支操作命令。
# 创建并切换
$ git switch -c dev

# 切换至master
$ git switch master

# 普通模式下合并分支,不加参数,Git会自动使用Fast forward模式合并,删除分支后,不会保留此处合并分支的信息。普通模式则会生成一个commit
$ git merge --no-ff -m "merge with no-ff" <branch>

# 删除分支
$ git branch -d 分支名

# 查看远程所有分支
$ git branch -r

# 合并某个或某些提交到指定分支
# 拉取最新代码
$ git pull    
# 查看提交信息,复制要合并的commit id
$ git log    
# 切换要合并到的分支
$ git checkout branch    
# 将A提交合并到当前分支
$ git cherry-pick A    
# 将A和B提交合并到当前分支
$ git cherry-pick A B 
# 将A至B的所有提交合并到当前分支,不包含A
$ git cherry-pick A..B 
# 将A至B的所有提交合并到当前分支,包含A
$ git cherry-pick A^..B 

Bug分支文章来源地址https://www.toymoban.com/news/detail-713179.html

# 遇到bug,先保存当前工作现场 (因为当前工作未完成,不能提交,但是不提交又不能切换分支)
$ git stash
# 现在工作区将是最开始那样,干净的。


# 可以去改bug了。
# 确定在哪个分支上面修复Bug,假设在master上面修复
$ git checkout master
$ git checkout -b issue-101
......
# 修复完成,合并分支
$ git merge --no-ff -m "merged bug fix 101" issue-101
$ git branch -d issue-101
# bug修改结束了


# 回到之前的分支
$ git switch dev
# 查询之前储存的现场
$ git stash list
# 第一种恢复,stash需删除命令
$ git stash apply
$ git stash drop
# 第二种,恢复并删除
$ git stash pop
# 可以多次stash,然后恢复指定的
$ git stash apply stash@{0}
# 现在的bug是在master上面修复的,别的分支
$ git cherry-pick <commit>
#复制一个特定的提交至当前分支

到了这里,关于程序员必备之——代码托管工具 git的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【小沐学Web】程序员必备的画图工具汇总

    《夏》 烈日灼灼, 水波清清, 热浪涛涛, 爽爽其心。 杨柳依依, 荷叶摇摇, 蜻蜓点点, 凉凉其身。 优秀的作图工具有许多,例如文本绘图工具 PlantUML,流程图设计工具 Draw.io,还有专业绘图工具 Sketch 和 Figma 等。 官网地址: https://www.draw.io/index.html https://www.diagrams.net/

    2024年02月07日
    浏览(65)
  • 程序员必备的免费AI生产力(摸鱼)工具,最后一个,人手必备

    最近ChatGPT等AI技术风靡全球,对于普通大众来说,越来越多的人开始关注智能时代对我们生活的影响。它颠覆了写作、办公、绘画、音视频、图像处理、UI 设计等领域,并涌现出了一批具有颠覆性的应用。 在程序员领域,许多 AI 工具已经涌现,如 「Copilot、Cursor」 等,这些

    2023年04月25日
    浏览(72)
  • 12个优秀GUI Git客户端,程序员必备!

    尽管许多用户可以从命令行轻松地使用Git,但有多种GUI客户端可以大大加快你的工作流程,尤其是在你不熟悉平台的情况下。 如果你正在寻找理想的客户端来管理你的Mac上的仓库,本文列出了适用于Mac OS X或Windows系统的最佳GUI Git客户端。 https://desktop.github.com/ GitHub Desktop是由

    2024年02月04日
    浏览(66)
  • C++学习day--11 程序员必备工具--github

    github 的重要性: 网络时代的程序员必备。 github 的作用: 1. 版本管理 2. 多人协作 3. 开源共享 常用方案: git+TortoiseGit+github [Tortoise ,程序员常称其为小乌龟,小海龟 ] 安装配置步骤 1. 注册 https://github.com/ 使用邮箱: (例如:1374784346@qq.com) 密码需要至少包含一位小写字母,至

    2024年02月05日
    浏览(103)
  • 程序员必备的工具网站,大幅度提升你的工作效率

          相信很多人不光是在编程的过程中,在平时的生活中,也经常会收藏一些有用的网站,方便使用的时候,靠这些网站来解决一些麻烦的事情。       我就把我收藏的一些经常用的工具网站分享给你们,你们也可以收藏起来,方便在使用的时候找到。 1.1 菜鸟工具:

    2024年02月04日
    浏览(89)
  • 程序员常用的代码比较工具,你更喜欢哪款?

    目录 💡 Linux 命令行的对比工具 一. diff 二. vimdiff命令 💡 GUI 比对工具  三. WinMerge 四. Diffuse 五. Code Compare 六. Beyond Compare 七. UltraCompare 八. Altova DiffDog 九. Kompare 十. Meld 十一. XXdiff 十二. KDiff3 十三. TkDiff 💡 在线文本比较工具 十四. jq22 💡 其他 | 已停止更新的对比工具  十五

    2023年04月27日
    浏览(53)
  • 程序员必备APP

      我在IT界摸爬滚打的也挺长时间了,我看见了挺多的人都想要进入这个行业,之前就有一个小姑娘来问我,如果想要成为程序员的话,需要使用什么软件,学会什么技能,今天我就就着这个话题 给大家分享一下,程序员应该知道的一些应用 ,给各位一个小小的参考。 一款

    2023年04月08日
    浏览(65)
  • 程序员必备算法(详细)

    算法的重要性和应用场景: 算法是解决问题的步骤和规则,它们在计算机科学和软件开发中至关重要。 算法可以提高程序的执行效率、降低资源消耗,并改善用户体验。 算法应用于各个领域,如数据处理、图形图像处理、网络和安全、人工智能等。 程序员需要掌握算法的原

    2024年02月15日
    浏览(83)
  • Linux必备基础命令,JAVA程序员必备

    目录 一、了解基本的左侧栏什么意思​编辑 二、ls,ll(list,查找目录内容) 三、cd(change directory,切换目录) 小技巧,我们在查找东西的时候,可以使用tab进行智能补全。 四、touch(建立文件) echo(打印到控制台) 五、vim(对文件进行更细粒度的编辑) 六、mkdir(创建目录

    2024年02月05日
    浏览(94)
  • 程序员必备技能之调试

    目录 前言 本期内容介绍 一、什么是Bug? 二、调试以及调试的重要性 2.1什么是调试? 2.2调试的基本步骤 ​三、Debug和Release介绍 Debug和Release 四、windows环境下的调试介绍 4.1调试环境 4.2一些调试常用的快捷键 4.3调试时查看当前程序的信息 a、查看临时变量的值 b、查看程序的

    2024年02月10日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包