当前位置:   article > 正文

Git基础命令教程,以及GUI软件TGit介绍_tgit使用

tgit使用

Git

简介

Git 是一种分布式版本控制系统,广泛用于协同开发和源代码管理.它由Linus Torvalds在2005年创建,最初是为了管理Linux内核的开发而设计的.

Git可以帮助我们实现代码的本地管理和云端同步,本地就是后面的那些基本命令和GUI,云端就通过Git服务器

有以下基本过程

对个人 : 项目文件修改 ->功能完善后add然后commit->连接好远程仓库后push/pull

对团队 : 主要利用分支功能,将不同功能开发创建不同分支.开发好之后合并到一起

下面先介绍Git的目录结构

安装与设置

Git官方网站下载安装包即可

首先设置你的用户名和邮件地址. 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git config --list #查看所有配置
  • 1
  • 2
  • 3

Git目录

当创建了Git项目后一般都有的文件

我们自定义Ignore&attributes来实现特定功能

Git通过.git这个隐藏文件夹来储存我们的各种信息

.gitignore

设置文件的忽略规则

让一些文件不被记入仓库的更改中.常见的情况是编译出的可执行文件或中间文件,不需要也不应当出现在代码仓库里.如:

main.exe  	#忽略特定文件
*.exe		#忽略所有exe
!*.cpp 		#忽略cpp以外的文件
build/ 		#忽略这个文件夹
  • 1
  • 2
  • 3
  • 4

.gitattributes

设置文件的属性,初学可忽略,防止git在文件处理时出错

  1. 文本和二进制文件的处理: 可以指定哪些文件是文本文件,哪些是二进制文件,以便 Git 在进行合并等操作时采取不同的策略.例如,可以告诉 Git 对于某个特定类型的文件,应该使用某种特定的合并策略.

    *.txt   -text
    *.bin   -text
    
    • 1
    • 2
  2. 行尾换行符的处理: 可以指定在检出或提交文件时使用的换行符类型,这对于不同操作系统上的协作很有用.例如,可以强制将所有换行符转换为 LF(Unix 格式)或 CRLF(Windows 格式).

    *.sh    eol=lf
    *.txt   text eol=crlf
    
    • 1
    • 2
  3. 合并策略的指定: 可以指定在合并文件时使用的合并策略.这对于处理特定类型的文件的合并冲突很有用.

    *.docx merge=word
    
    • 1
  4. 文件特定的语言统计: 通过.gitattributes文件,可以告诉 Git 在统计代码行数时如何处理文件,以避免将二进制文件的内容计入统计.

    *.png binary
    *.java linguist-language=Java
    
    • 1
    • 2

.git

这个目录是 Git 仓库的核心,包含所有的元数据和对象数据库.它通常位于仓库的根目录下,但是默认情况下是隐藏的,即文件名以.开头.不需要用户管理

  1. objects 目录: 用于存储 Git 对象(blob.tree.commit 等).这些对象是 Git 存储文件内容和目录结构的基本单元.
  2. refs 目录: 包含指向各个分支(branches)和标签(tags)的引用,这些引用保存了 Git 仓库中各个提交的哈希值.
  3. logs 目录: 包含引用的变更历史.例如,logs/refs/heads/ 存储了每个分支的修改历史.
  4. hooks 目录: 包含客户端或服务器端的钩子脚本,这些脚本在特定的 Git 事件发生时执行.
  5. HEAD 文件: 指示当前所在的分支.通常是一个指向分支引用的符号链接.
  6. config 文件: 包含 Git 仓库的配置信息,如用户信息.别名等.
  7. index 文件: 包含了当前工作目录状态的缓存信息,即将要提交的文件的信息.

状态

目录内文件用角标来表示状态

符号说明:

  1. 正常的:绿色的对号 img
  2. 被修改过的:红色感叹号 img
  3. 新添加的:蓝色的加号img
  4. 未受控的(无版本控制的):蓝色的问号img
  5. 忽略不受控的:灰色的减号img
  6. 删除的:红色的x号 img
  7. 有冲突的:黄色的感叹号 **img

Git服务器

用于储存代码

github和gitlab,另外还有国内的gitee,这里不介绍了

  • Git是一种版本控制系统,是一种工具,用于代码的存储和版本控制.
  • GitHub是一个基于Git实现的在线代码仓库,是目前全球最大的代码托管平台,可以帮助程序员之间互相交流和学习.
  • GitLab是一个基于Git实现的在线代码仓库软件,你可以用GitLab自己搭建一个类似于GitHub一样的仓库,但是GitLab有完善的管理界面和权限控制,一般用于在企业.学校等内部网络搭建Git私服.
  • GitHub和GiLlab两个都是基于Web的Git远程仓库,它们都提供了分享开源项目的平台,为开发团队提供了存储.分享.发布和合作开发项目的中心化云存储的场所.从代码的私有性上来看,GitLab 是一个更好的选择.但是对于开源项目而言,GitHub 依然是代码托管的首选.

命令

创建

init 初始化当前目录为git库

git init
  • 1

clone 创建在已有的代码基础上

git clone https://github.com/killsime/gitTest.git
  • 1

修改

提交

add 添加到暂存区

git add file.cpp
git add . #当前目录的所有文件
git add --all #当前目录下的文件以及文件夹内的文件
  • 1
  • 2
  • 3

reset 从暂存区删除

git reset
git reset .
  • 1
  • 2

status 查看暂存区

git status
  • 1

确认暂存区无误后可以进行提交

commit

git commit  #弹出文本编辑器,将要提交的取消注释
git commit -m "commit message" #直接提交
git commit --amend #修改上次提交
  • 1
  • 2
  • 3

提交后可进行恢复和删除

回退

回退项目

git log 查询当前分支提交日志

commit 87908935339fa31e36e97507c28289b352f000d4 (HEAD -> master, origin/master, third)
# head指向当前分支,后面列出了所有分支,如果推送过远程仓库还会像orign这样标注
Author: killsime <killsime@qq.com>
Date:   Mon Dec 25 19:01:22 2023 +0800
            new file:   .gitattributes
            new file:   .gitignore
            new file:   test.bmp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

第一行即为该次commit的hash码,用于回退版本时使用(reset)

git reset 87908#不用全写,只要能区分就好,至少四位
  • 1

撤回回退

git reflog查询引用(references)变更日志 ,整个全局的提交,回退,分支切换的日志

# 该次操作目标的提交hash值 分支列表,操作的分支为绿色 当前head 日志索引 描述信息
fd6ed09 (HEAD -> master) HEAD@{0}: reset: moving to fd6e
1c7886b HEAD@{1}: commit: new file: BMP.bmp
fd6ed09 (HEAD -> master) HEAD@{2}: commit (initial): new file: TXT.txt
  • 1
  • 2
  • 3
  • 4

这是两次提交后reset到第一次提交的日志,可以查看第二次commit的hash

git reset 1c788
  • 1

分支

branch,用来管理分支,日志种用head来表示当前分支

git branch 			#查看所有分支
git branch test		#创建test分支
git branch -d test  #删除test分支
  • 1
  • 2
  • 3

checkout,切换分支,必须在所有的修改被提交后才能切换

git checkout test
  • 1

合并分支,将test合并到master中,冲突部分以master为准

$ git checkout master
$ git merge test
  • 1
  • 2

推送

git remote -v #fetch和push历史
# 添加远程仓库,pb和origin分别是起的昵称,分别使用https和SSH进行添加,一般我们用SSH.二者区别以及SSH建立教程可以看最后
git remote add pb https://github.com/paulboone/ticgit 
git remote add origin git@github.com:wihn2021/git-tut.git
# push和pull
git push origin master
git pull origin master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

官方文档Git - Book

TGit

因为命令行可能相对门槛较高,所以我们可以通过GUI界面来进行git管理

这里我们使用 TortoiseGit

软件安装好后,就可以右键创建git库了

跟上面Git一样,空的或者从github上克隆

如果克隆提示No supported authentication methods available

需要将TGit中setting->network->ssh client换成git/usr/bin/ssh.exe

其他的类似需要通过命令的操作都可以通过右键菜单来进行了,也不必多唠叨

SSH与HTTPS

对比

二者都是建立加密连接,我们这里选择ssh,具体原因如下

特点/优缺点

**ssh:**一般使用22端口;通过先在本地生成SSH密钥对再把公钥上传到服务器;速度相较慢点

**https:**一般使用443端口;通过用户名/密码授权,可用性比较高;速度相较快点

使用区别

ssh

clone:需要配置ssh key,即要将生成的SSH密钥对的公钥上传至服务器;

push:不需要验证用户名和密码,直接push即可;

http

clone:没有要求,可以直接克隆下来.

push:需要验证用户名和密码.

总结

HTTPS利于匿名访问,适合开源项目,可以方便被别人克隆和读取,push需要登陆

SSH不利于匿名访问,比较适合内部项目,只要配置了SSH公钥极可自由实现clone和push操作.

SSH生成密钥

这里是连接github的教程

  1. 打开终端或命令提示符窗口.

  2. 输入以下命令,并按回车键执行:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    • 1
  3. 提示你输入保存密钥的文件路径,默认为~/.ssh/id_rsa,直接按回车键即可.

  4. 提示你输入一个密码,这是可选的,如果你想要为密钥添加密码保护,可以输入一个密码.如果不需要密码保护,直接按回车键跳过.

  5. 生成密钥对成功后,终端会显示公钥的路径和指纹.该文件夹下一个公钥(.pub),一个私钥

  6. 将公钥复制到剪贴板中:

    clip < %USERPROFILE%/.ssh/id_rsa.pub
    
    • 1
  7. 添加公钥,【头像】→【Settings】→【SSH and GPG Keys】→【New SSH Key】,填入上一步的复制的SSHKey,然后【Add SSH Key】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/627545
推荐阅读
相关标签
  

闽ICP备14008679号