草庐IT

Git与Gitee

stblack 2023-03-28 原文

1.1Git 的优势 分支操作

  1. 大部分操作在本地完成,不需要联网
  2. 完整性保证
  3. 尽可能添加数据而不是删除或修改数据
  4. 分支操作非常快捷流畅
  5. 与 Linux 命令全面兼容

1.2Git流程

1.3命令行操作

1.3.1本地库(版本库或仓库)初始化

命令:

git init (git add  //使用git管理这个文件  放入暂存区)

效果 $ls -lA (查看以.开始的隐藏文件)

注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡
乱修改。

1.3.2设置签名

用户名:tom Email

地址:goodMorning@qq.com

作用:区分不同开发人员的身份

辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关 系。

命令 :

**项目级别/仓库级别:**仅在当前本地库范围内有效

git config user.name    用户名 
git config user.email   邮箱
  • 信息保存位置:./.git/config 文件

**系统用户级别:**登录当前操作系统的用户范围

git config  *--global*             user.name       tom_glb 

git config  *--global*              user.email        goodMorning_pro@atguigu.com 

  • 信息保存位置:~/.gitconfig 文件

级别优先级

  • 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别 的签名

  • 如果只有系统用户级别的签名,就以系统用户级别的签名为准

  • 二者都没有不允

$ ls  -lA |less    //less 查看文件后按:q返回

1.3.2Git基本操作

1.3.2.1 状态查看 status

git status  # 查看工作区、暂存区状态

1.3.2.2 添加 add

git add [file name]  # 将工作区的“新建/修改”添加到暂存区 
git add .  # 提交所未定位的文件。
git rm --cached [file name]  # 将文件从暂存区撤回

1.3.2.3 提交 commit

git commit [file1] [file2] ... -m [message]  # 将暂存区的内容提交到本地库  message备注信息
git commit -a -m [message]  # 不经过add 直接添加至本地库

​ 可以直接commit,在不add的情况下

1.3.2.4 查看历史记录 log

git log 

多屏显示控制方式:

空格向下翻页

b 向上翻页

q 退出

git log --pretty=oneline  //一个任务一行显示
git log --oneline		//缩短hash值
git reflog				//显示移动步数

​ HEAD@{移动到当前版本需要多少步} //head 指针

1.3.2.5 前进后退 reset --hard

  • 基于索引值操作[推荐]

    git reset --hard [局部索引值] 
    git reset --hard a6ace91 
    
  • 使用^符号:只能后退

    git reset --hard HEAD^ 
    

    注:一个^表示后退一步,n 个表示后退 n 步

  • 使用~符号:只能后退

     git reset --hard HEAD~n 
    

    注:表示后退 n 步

    当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

    当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。

    当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

    当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

1.3.2.6 reset 命令的三个参数对比

  • –soft 参数

    • 仅仅在本地库(仓库)移动 HEAD 指针

      注:本地库若后退了,会让暂存区与工作区显得往前走了

  • –mixed 参数

    • 本地库移动 HEAD 指针
    • 重置暂存区
  • –hard 参数

    • 本地库移动 HEAD 指针
    • 重置暂存区
    • 重置工作区(云上)

1.3.2.7 删除文件并找回 reset前一个版本

  • 前提:删除前,文件存在时的状态提交到了本地库。
  • 操作:git reset --hard [指针位置] 回退版本
    • 删除操作已经提交到本地库:指针位置指向历史记录
    • 删除操作尚未提交到本地库:指针位置使用 HEAD

1.3.2.8 比较文件差异

  • git diff [文件名] 
    
    • 将工作区中的文件和暂存区进行比较
  • git diff [本地库中历史版本] [文件名] 
    
    • 将工作区中的文件和本地库历史记录比较
  • 不带文件名比较多个文件

名词解释

名词解释:

CRLF: "\r\n", windows系统环境下的换行方式

LF: "\n", Linux系统环境下的换行方式

Linux语法

ctrl+l 清屏 clear

linux语法
$ cat good.txt  # 查看文本内容
$ vim good.txt  # 编辑文件   i插入   ESC wq保存退出

$ pwd(英文全拼:print work directory) # 显示目前的目录
$ mkdir(英文全拼:make directory) # 创建一个新的目录
$ rmdir(英文全拼:remove directory) # 删除一个空的目录
$ cp(英文全拼:copy file) #  复制文件或目录
$ rm(英文全拼:remove) #  删除文件或目录
$ mv(英文全拼:move file) #  移动文件与目录,或修改文件与目录的名称
$ tail -n 100 [/etc/cron 文件路径 ]   # 显示最后100行数据  -f 常用于查阅正在改变的日志文件。

  1. 创建文件或文件夹的方式
    touch    # 用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
    vi     # vi编辑器 编辑文件,没有会自动创建
    mkdir    # 创建目录,没有会自动创建

  2. 使用vim时,如果不小心按了 Ctrl + s后,会发现不能输入任何东西了,像死掉了一般,其实vim并没有死掉,这时vim只是停止向终端输出而已,要想退出这种状态,只需按Ctrl + q 即可恢复正常。

1.4分支管理

1.4.1 分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任 何影响。失败的分支删除重新开始即可
  • 一般工作至少需要两个分支 master(主分支)、dev(开发分支)

1.4.2分支操作

1.4.2.1创建、删除分支命令:branch

​ 分支创建新分支时,新创建的分支代码与创建者的分支代码保持一至。

git branch (分支名)  # 创建分支
git branch  # 查看分支
git branch -d 需要删除的分支名  # 查看分支

1.4.2.2切换分支命令:checkout

git checkout (分支名)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

1.4.2.3合并分支命令:merge

若A分支合并B分支:需要先切换到A分支,然后在A分支下合并B分支。

git merge  (有新内容分支)

1.4.2.3 解决冲突

  • 冲突的表现

    CONFLICT (content): Merge conflict in good.txt
    Automatic merge failed; fix conflicts and then commit the result.

    提示产生冲突,需要解决。

    **产生冲突的原因:**merge 分支的代码与原分支的代码修改过同一行的文件。(未修改同一行文件一般会自动合并)

  • 冲突的解决

    • 第一步:编辑文件,删除特殊符号
    • 第二步:把文件修改到满意的程度,保存退出
    • 第三步:git add [文件名]
    • 第四步:git commit -m "日志信息"
      • 注意:此时 commit 一定不能带具体文件名,因为此时需要commit多个文件所以不加文件名。

1.5连接GitHub

1.5.1创建远程仓库的别名 remote add

git remote -v 查看当前所有远程地址别名
git remote add [别名] [远程地址]

1.5.2 推送本地库(版本库)到远程仓库 push

git push [别名] [分支名]

1.5.3 克隆 clone

 git clone [远程地址]

1.5.4 拉取 pull

git pull 命令用于从远程获取代码并合并本地的版本。用于冲突不是很多的情况,否则用fetch后merge

git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写。 命令格式如下:

git fetch [远程库地址别名] [远程分支名]    #从远程获取代码库
git merge [远程库地址别名/远程分支名]
git pull <远程主机名> <远程分支名>:<本地分支名>
$git pull origin master --allow-unrelated-histories  # 强制合并 git库里有多个分支目前只想修改一个分支的内容

1.5.5 团队其他人推送

如果不是基于 GitHub 远程库最新版所做的修改,不能直接推送(push),必须先拉取(pull)。拉取下来后进入冲突状态,解决冲突完成之后推送(push)。

1.5.6 跨团队协作

1.fork

​ 在github的项目界面右上角
2.clone 跨团队fork后拥有的远程库

3.改动后pull 跨团队的远程库

4.在GitHub上的项目界面点 Pull request >>> New pull request >>> 写消息Create pull request

5.项目所有人查看跨团队的 Pull request

6.审核代码

7.合并代码 Merge pull request

8.将远程库拉取到本地 pull

1.6ssh连接Git

1.7Eclipse连接Git

1.7.1 查看Git 设置本地库的用户签名

​ window >> preferences >> Team >> Git >> Configuration(Repository Settings选项卡) >> Add Entry

1.7.2 解释 合并工具zoomit

  • 创建好eclipse的本地库之后 需要git add 添加到缓存区将文件追踪。如果文件未被追踪文件无法上传到仓库。
  • 项目中的所有文件不需要全部都进行追踪,有一些用于项目管理的文件不需要上传。
  • Navigator窗口可查看项目的所有文件
  • 项目右键 >> Team >> Add to index(添加至仓库缓存)
  • commit 需要填写提交信息,一般是介绍操作的用途,或修改的文件名
  • 转换工程类型:项目右键 >> Configure >> Convert to Maven Project
  • 低版本导入git项目需要指定工作区以外的项目,高版本一般指定工作目录。
  • 在做修改之后需要提交到本地库(commit)才能往git上提交,一般需要先pull 后 Push 。
  • 冲突合并的工具:merge tool 左边是自己的,右边是git上的,左边可以修改,右边不可以修改。

1.8Git的工作流

1.8.1 分类

  1. 集中式工作流

    像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有 修改都提交到 Master 这个分支上。 这种方式与 SVN 的主要区别就是开发人员有本地库。Git 很多特性并没有用到。

  2. Gitflow工作流

    Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布 迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

  3. Forking 工作流

    Forking 工作流是在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的 功能以达到代码审核的目的。更适合安全可靠地管理大团队的开发者,而且能接受 不信任贡献者的提交。

1.8.2 GitFlow工作流详解

1.8.2.1分支的种类

  1. 主干分支 master

    主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境 完全一致。

  2. 开发分支 develop

    主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。

  3. bug 修理分支 hotfix

    主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修 理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。

  4. 准生产分支(预发布分支) release

    较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集 成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后 可以视情况删除。

  5. 功能分支 feature

    为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支 中独立出来。 开发完成后会合并到开发分

1.8.2.2GitFlow工作流举例

操作:

切换分支:Team >> switch to >>

合并分支:Merge

  1. 创建分支 new Branch
  2. 切换分支审查代码 ,并从commit代码到Git库
  3. 项目经理 检出远程分支 checkout (项目经理本地创建出新的分支(前面新建的))
  4. 切回master
  5. 合并分支 merge
  6. 合并成功后推向Git

1.9 Gitee实战

见:https://blog.csdn.net/qq_43530326/article/details/123435355

有关Git与Gitee的更多相关文章

  1. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  2. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  3. ruby - Dropbox 类似 git 的服务——没有 rsync 和 inotify - 2

    关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec

  4. ruby - 混帐 & ruby : How can I unset the GIT_DIR variable from inside a ruby script? - 2

    我编写了一个非常简单的“部署”脚本,作为我的裸git存储库中的post-updateHook运行。变量如下livedomain=~/mydomain.comstagingdomain=~/stage.mydomain.comgitrepolocation=~/git.mydomain.com/thisrepo.git(bare)core=~/git.mydomain.com/thisrepo.gitcore==addedremoteintoeachlive&stagegitslive和stage都初始化了gitrepos(非裸),我已经将我的裸仓库作为远程添加到它们中的每一个(名为co

  5. ruby - 让 bundler 使用 http : instead of git:? - 2

    我正在安装gitlabhq,并且在Gemfile中有对某些资源的“git://...”的引用。但是,我在公司防火墙后面,所以我必须使用http://。我可以手动编辑Gemfile,但我想知道是否有另一种方法告诉bundler使用http://作为git存储库? 最佳答案 您可以通过运行gitconfig--globalurl."https://".insteadOfgit://或通过将以下内容添加到~/.gitconfig:[url"https://"]insteadOf=git://

  6. ruby-on-rails - 安装 active admin 时 activeadmin.git (at master) is not yet checked out 错误 - 2

    Activeadmingem已添加到我的rails项目中,但每次我尝试安装railsgactive_admin:install时,我都会收到类似的错误git://github.com/activeadmin/activeadmin.git(atmaster)isnotyetcheckedout.Runbundleinstallfirst.我肯定在运行“railsgactive_admin:install”之前运行了bundle。运行“bundleshow”后,我看到我已将“*activeadmin(1.0.0.pre3f916d6)”添加到我的项目中,但不断收到此错误消息。我的gem文

  7. ruby - git:从 bitbucket 导出并导入 github(带提交) - 2

    我在bitbucket上创建了一个私有(private)git存储库并提交了代码。现在我想导出所有(提交、代码、历史记录)并将其导入github上的gitrepo。有没有办法做到这一点?谢谢 最佳答案 在本地检查所有内容到您的计算机和gitpull。创建一个github存储库将此存储库添加为您的第二个远程(“使用gitremote添加githubURL”)推送到第二个Remote 关于ruby-git:从bitbucket导出并导入github(带提交),我们在StackOverflow

  8. Unity 报错No ‘git‘ executable was found. Please install Git on your system then restart - 2

    亲测可用。Anerroroccurredwhileresolvingpackages:Projecthasinvaliddependencies: com.unity.xxx:No'git'executablewasfound.PleaseinstallGitonyour  systemthenrestartUnityandUnityHub在我们使用PackageManager时,Unity允许我们使用Git上的package(点击加号,选择addpackagefromgitURL,或者是直接在Asset/Packages/manifest.json中添加包名)。但是这种操作需要我们事先装好g

  9. ruby - RSpec Git Bash Windows——缺少颜色? - 2

    我在Windows上使用GitBash来完成我的大部分Rails工作,每次我运行bundleexecrspecspec它都会提醒我“你必须geminstallwin32console才能使用Windows上的颜色”,然后以纯黑色和白色运行RSpec。但是我确实安装了win32console,当我在列表中运行gemlist时,它有win32console(1.3.0x86-mingw32)。RSpec工作正常,但我希望它有一些颜色。我用谷歌搜索了这个并找到了多种解决方案,但似乎没有一个适合我。有人可以写出在GitBashforWindows上使用RSpec获取颜色的“循序渐进”方法吗?

  10. ruby - git 最好的 ruby​​ api 是什么? - 2

    我想实现一个Rake任务,自动执行一些我必须完成的任务,以便将我的更改从开发转移到生产(是的,我知道有像Capistrano这样的东西,它对我来说太多了).中间是gitadd-i等一些交互命令,以及一系列commit和push。在生产方面,将有pull和Assets任务要做。一直输入相同的命令很乏味,所以我想完全自动化。我还没有找到Git的RubyAPI。它应该在Windows7下工作,并且至少允许以下命令:gitadd、gitstatus、gitcommit、gitpush,gitpull. 最佳答案 我知道,坏习惯,但我想记录一

随机推荐