首页 > 其他分享 >Git、.gitinore、SourceTree使用介绍

Git、.gitinore、SourceTree使用介绍

时间:2024-01-29 16:00:16浏览次数:23  
标签:文件 git gitinore 远程 修改 Git 提交 SourceTree

Git使用教程

Git 是分布式版本控制系统,也可以叫内容管理系统(CMS),工作管理系统

Git安装

本文档后半部分会介绍SourceTree,SourceTree内置有Git所以这里不介绍其他Git安装方式。

Git工作流程

  • 克隆 Git 资源到本地仓库(文件夹)
  • 在本地仓库中添加或修改文件。
  • 获取Git其他人的修改信息。
  • 如果有修改,拉取别人的修改内容。
  • 提交自己的修改。
  • 如果提交的修改有错误,回退修改并再次修改后提交修改。

![](D:\Main File\桌面\Git使用教程\图片\Git工作流程.png)

Git 工作区、暂存区和版本库

  • 工作区(Working Directory): 这是你当前正在操作的项目目录,包含了项目的所有文件。在工作区进行的修改,包括新增、编辑和删除文件,都会被Git跟踪到。

  • 暂存区(Index或Stage): 这是一个临时区域,用于存放你已经完成的修改。在工作区进行的修改,如果你想将其纳入下一次提交,就需要将这些修改先添加到暂存区。通过执行git add命令,你可以将指定文件或所有文件的修改添加到暂存区。

  • 仓库区(Repository): 也被称为版本库,是Git用来存储项目的最终版本的地方。当你执行git commit命令时,暂存区的内容会被提交到仓库区,形成一个新的版本(commit)。仓库区中保存了项目的完整历史记录。

  • 远程版本库(remote repository), 与本地仓库概念基本一致,不同之处在于一个存在远程,可用于远程协作,一个却是存在于本地。通过push/pull可实现本地与远程的交互;

  • 远程仓库副本, 本地的一个分支,可以理解为存在于本地的远程仓库缓存。如需更新,可通过git fetch/pull命令获取远程仓库内容。

Git常用命令

配置:

  • git config: 配置 Git 工具的设置。
  • git config --global user.name "Your Name": 配置用户名。
  • git config --global user.email "[email protected]": 配置用户邮箱。

创建仓库:

  • git init: 在当前目录初始化一个新的 Git 仓库。
  • git clone <repository>: 克隆一个远程仓库到本地。

基本操作:

  • git add <file>: 将文件的修改添加到暂存区。
  • git commit -m "Commit message": 提交暂存区的修改到仓库区。
  • git status: 查看工作区和暂存区的状态。
  • git log: 查看提交历史。

分支操作:

  • git branch: 列出本地分支。
  • git branch <branch_name>: 创建新分支。
  • git checkout <branch_name>: 切换到指定分支。
  • git merge <branch_name>: 合并指定分支到当前分支。

远程操作:

  • git remote: 列出远程仓库。
  • git remote add <name> <url>: 添加远程仓库。
  • git pull <remote> <branch>: 从远程仓库拉取更新。
  • git push <remote> <branch>: 推送本地分支到远程仓库。

撤销和回滚:

  • git reset <file>: 取消对文件的暂存。
  • git revert <commit>: 撤销某次提交。
  • git checkout -- <file>: 恢复工作区的文件到最近一次提交状态。

标签:

  • git tag: 列出标签。
  • git tag <tag_name>: 创建标签。
  • git tag -d <tag_name>: 删除标签。

.gitignore忽略文件

忽略文件是指在版本控制系统中,通过指定忽略规则告诉系统哪些文件或目录不应该被跟踪、不应该被包含在版本控制中的文件。这样做可以排除一些不必要的、临时的、或者是自动生成的文件,以确保版本库保持整洁和高效。

在 Git 中,忽略规则通常通过一个名为 .gitignore 的文件来定义。这个文件列举了哪些文件或目录应该被 Git 忽略。.gitignore 文件可以包含通配符和特定的规则,用于指定哪些文件或目录应该被忽略。

常见通配符和示例

1. /(正斜杠)

  • 示例: /build/
  • 说明: 表示忽略名为 build 的目录及其内容。

2. *(星号)

  • 示例: *.log
  • 说明: 表示忽略所有以 .log 结尾的文件。

3. ?(问号)

  • 示例: temp?.txt
  • 说明: 表示匹配类似 temp1.txttempA.txt 等文件。

4. !(感叹号)

  • 示例: !important.txt
  • 说明: 表示不忽略名为 important.txt 的文件。

5. #(井号)

  • 示例: # This is a comment
  • 说明: 表示注释该行,不进行匹配。

6. [](方括号)

  • 示例: [Tt]emp.txt
  • 说明: 表示匹配 Temp.txttemp.txt

7. /**

  • 示例: docs/**/*.pdf
  • 说明: 表示匹配 docs 目录下的所有子目录中的 .pdf 文件。

.gitignore模板(基于C#)

# Visual Studio Code
.vscode/

# Rider
.idea/

# 用户特定文件
*.rsuser
*.suo
*.user
*.userosscache
*.suo
*.sdf
*.opensdf
*.xuser
*.xusers
*.cache
*.log
*.vspscc
*.vsp
*.psess
*.vspcc
*.vspx
*.userosscache
*.suo
*. suo
*.user
*.suo
*.tss

# 用户特定文件(Mono自动生成)
mono_crash.*

# Windows图像文件缓存
Thumbs.db
ehthumbs.db

# 文件夹配置文件
Desktop.ini

# 在文件共享上使用的回收站
$RECYCLE.BIN/

# Visual Studio Code目录
.vscode/

# Windows安装程序文件
*.cab
*.msi
*.msm
*.msp

# Windows快捷方式
*.lnk

# NuGet包
*.nupkg

# 包目录
/packages/

# .NET脚手架
ScaffoldingReadMe.txt

SourceTree使用教程

SourceTree安装

从此网址https://www.sourcetreeapp.com下载安装包

下载完成后,解压 ZIP 文件,双击应用程序文件(Windows 为 EXE 或 Mac 为 DMG)进行安装。

创建 Bitbucket 账户可跳过初始设置,加载 SSH 密钥,如果有会默认加载进来,也可以后面再设置。

设置用户名和邮箱地址

在弹出的SSH对话框中直接选择No

SourceTree克隆仓库

从git上创建的项目复制http链接

打开安装好的SourceTree将复制的Http链接贴贴后进行克隆。

SourceTree安装好后第一次克隆需要输入Git服务器账号密码。

然后点击克隆按钮进行克隆。

创建成功后即可在克隆界面上输入的存储地址目录看到创建好的工作区目录,然后就可以在工作区目录创建、添加、修改文件了。

SourceTree的基本操作

获取

从远程服务器上获取其他人的更新信息,获取后如果远程服务器有更新则在拉取按钮上可以看到更新的信息数量

拉取

从远程服务器上拉取其他人的更新到本地工作区

暂存、提交和推送

将选择修改文件暂存到暂存区->检查对比修改->编辑修改内容->根据情况勾选推送到远程->提交,如果在上一步骤中没有勾选推送到远程,则在提交后在左上角Push(推送)按钮出会出现推送数量,点击推送即可推送到远程。

创建分支

选择创建分支的父分支->单击Branch(分支)->编辑分支名称->创建分支

检出

鼠标左键双击或者右键单击->CheckOut(检出)检出分支

合并

检出工作分支->鼠标右键单击需要合并的分支->单击Merge NewBranch Into current branch(合并分支NewBranch到当前分支)进行合并

贮藏

将所有工作区中的修改文档(不包含新增文档)贮藏起来,然后再非暂存区和暂存区删除所有修改文档的修改。贮藏起来的内容可以再STASHES(贮藏)栏中查看。

将修改文档应用到工作区中

添加标签

给分支的最新提交的节点添加标签,标签内容可以区分软件发布版本的版本号。

历史信息

Git的所有提交、合并和标签等信息都可以在这里查看

远程

刚拉下的时候在BRANCHES上只会显示main分支,所以所有的其他远程的分支都需要在这里检出

文件筛选

可以通过文件筛选在非暂存区显示不同的文件

命令行

SourceTree常见异常解决方案

解决修改拉取不下提交不了的情况

我们在修改文件后提交到git上显示提交失败(失败原因为我们当前的提交),通过获取发现远程有修改提交,我们通过拉取又拉取失败,这常常是因为远程提交了我们本地修改的文档的修改,在这种情况下我们即拉取不下来修改和提交不了修改。

解决方式:将远程提交的修改和我们提交的修改进行合并,合并后远程和本地都修改的文档会显示冲突,我们解决冲突后提交修改就解决了。

上述情况还有一种可能,即在提交失败后通过拉取可以触发一个合并操作,我们只需要解决冲突后提交修改就可解决这种问题,如果没有触发合并操作就需要按上述解决方式解决。

解决冲突

当出现冲突时表示本地修改的和别人提交的修改存在相同的内容,git不能解决这种情况,所以需要使用者自己解决这种情况。如下图带有警告标识的Code.cs就是冲突文件,在右方的文档修改内容中就有显示本地和别人的修改(<<<<<HEAD 到 之间的内容是本地修改,到>>>>>>origin/main是别人修改的内容),SourceTree提供了简单的解决冲突的方法,如下图,右键单击冲突文件->选择Resovle Conflicts(解决冲突)->然后选择“Lanuch External Merge Tool(启动其他合并工具)”、"Resolve Using "Mine"(使用我的版本)"、“Resolve Using "Theirs"(使用远程版本)”等方式解决冲突。

其中启动其他合并工具意思就是通过其他解决冲突的工具来解决冲突,比如可以直接使用Visual Studio软件打开.cs文件然后在文件中根据实际情况修改内容后将冲突标记成解决的方式解决冲突。

SourceTree使用忽略文件

创建忽略文件

单击Explore(文件夹)打开工作区目录,在工作区目录创建.gitignore文件(如果存在就不创建),通过文本编辑器打开然后将文档上半部分介绍的.gitignore模板内容复制进去(如果你的工作区目录内容是C#工程时,不是请自己编辑或者查找模板),然后将忽略文件提交到远程。

验证忽略文件

忽略文件编辑完成后需要验证是否生效,可以通过新建被忽略文件然后在SourceTree中通过筛选工具选择ignore文件中是否包含新文件方式验证是否生效。也可以通过使用 git check-ignore -v <file> 命令来测试一个文件是否被 .gitignore 中的规则所忽略。

忽略文件未生效解决方案

在忽略文件中已经添加了的忽略规则但是未生效的文件,其主要原因是文件已经被提交到版本控制中,.gitignore 文件对这个文件的忽略规则就不会再起作用。在这种情况下需要在远程版本库中删除该文件,然后从SourceTree重新拉取更新到本地版本库后.gitignore文件才能对所有本地库生效。

标签:文件,git,gitinore,远程,修改,Git,提交,SourceTree
From: https://www.cnblogs.com/aronhu/p/17994725

相关文章

  • git tag的使用
    一什么是tag: tag是用来备份某次提交的,比如版本1上线前的最后一次在develop分支上的提交为commitX,将commitX打成tag,tag名为v1.0,后续版本迭代中继续在develop分支上开发,版本2最后一次提交为commitN,就将commitN打成tagv2.0,可以用tag来备份每次版本的发布.如果需要回退之......
  • git:一个分支直接覆盖另外一个分支
    有个dev分支和main分支,想隔一段时间就把自己的dev分支上的代码保持和main分支一直,则需要如下操作:1.我想将main分支上的代码完全覆盖dev分支,首先切换到dev分支gitcheckoutdev2.然后直接设置代码给远程的main分支上的代码#目前是dev分支,下面命令直接将代码dev代码改成和origi......
  • [Git]入门及其常用命令
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17993832出自【进步*于辰的博客】Git的难点在于细节很多,一般很难一次性掌握。若想快速学会乃至掌握,就需要查阅博文、视频等资料,手打测试一些常用命令。参考笔记二,P79~81;笔......
  • 【亲测管用】解决GitHub clone太慢或者远端意外挂断
    目录解决办法1使用GitHub的镜像,将代码库链接中的“github.com”替换为“github.com.cnpmjs.org”,如图所示:解决办法2将GitHub中的代码库导入码云,然后再进行clone返回目录方案1:github.com.cnpmjs.org返回目录使用GitHub的镜像,将代码库链接中的“github.com”替换为......
  • Typora中上传图片:使用PigGo+Gitee
    设置FFS程序下载安装程序出现两个程序。FreeFileSync是主程序,RealTimeSync用来设置自动同步打开FreeFileSync主程序,点击蓝色设置按钮比较设置界面同步设置界面一般设置双向,即只要有一边变化即同步。为了保险起见,设置保留历史版本最后确定设置需要同步的文件夹......
  • git笔试面试题
     收集整理几个git相关的笔试面试题 1、你们公司版本是如何管理的?细说一下 2、如何创建分支? 3、gitclone、gitpull、gitfetch、gitpush的区别是? 4、merge和rebase的区别是? 5、gitpull和gitpull--rebase的区别是? 6、代码提交到本地仓库后,发现提交日志写错了,如何修改? ......
  • Git取消add 、 commit、push的命令
    1.撤销已经add,但是没有commit的问题gitresetHEAD2.撤销已经commit,但是没有push到远端的文件(仅撤销commit保留add操作)撤销上一次的提交gitreset--softHEAD^ windows系统使用提示more,需要多加一个^(windows当中^才是换行符?)gitreset--softHEAD^^按照输入的数字撤销输入......
  • centos7安装gitLab
    yum安装安装opensshsudoyuminstall-ycurlpolicycoreutils-pythonopenssh-serverperlsudosystemctlenablesshdsudosystemctlstartsshd安装gitLab#配置镜像源curl-fsSLhttps://packages.gitlab.cn/repository/raw/scripts/setup.sh|/bin/bash#yum安......
  • 云原生架构中 GitOps 的最佳实践
    GitOps是一种基于Git的离散交付和部署的操作框架模型,它使开发者使用Git,而不是传统的连续交付管道,来进行集群管理和应用程序部署。在这篇文章中,我们将详细探讨GitOps的最佳实践。使用声明性API构建你的系统在GitOps中,你需要描述系统应有的状态而不是描述达到这个状态须......
  • github pages+hexo
    首先使用hexo要先安装noded.js和gitgit我早就安装过了,所以只要安装Node.js我使用nvs安装了Node.js(v21.0.0版本)然后使用这行命令安装Hexo:然后需要先在d盘创建hexo文件夹然后hexoinithexo:我开了vpn,所以在hexoinithexo之前我需要先配置gitconfig--globalhttp,不然git......