写在前面

Git是一种高效的代码管理工具。这里主要是针对UE4项目进行使用的介绍。

一、下载Git

主要是参考博客:Git入门与使用 (一) Git介绍与安装

几个关键的点如下:

  • 推荐下载Git for Windows Setup版本,因为功能比较全面。
  • 安装的选项基本是默认即可。
  • 但是默认的编辑器建议不要用vim(官方也不建议用)。如果是在Windows平台上的话,改用Notepad++或者Sublime Text 3都更加方便好用。

二、本地运行Git

Git其实就是在某个本地文件夹中建立仓库,然后托管该文件夹中的文件(大致的逻辑应该是)。因此,我们首先是要选择需要进行文件夹的选择。在本文中,由于是要托管UE4项目,所以是进入该项目的根目录下建立仓库。

# 初始化仓库,即在当前目录下新建一个.git隐藏文件
git init

# 设置用户信息
git config user.name 你的用户名  # 设置用户名
git config user.email 你的邮箱  # 设置邮箱
cat .git/config  # 查看配置信息

# 查看工作区和暂存区文件状态
git status
git status filename
git status -s  # 详细信息

# 从工作区到暂存区添加文件
git add .  # 添加当前路径下所有的文件
git add filename

# 从暂存区提交文件到本地仓库
git commit -m "提交信息" filename
git commit filename
git commit

注意的一些地方如下:

1.设置用户信息。

  • 每次新建一个仓库都应该重新设置用户信息。但也可以直接设置全局的用户信息,省略每次新建仓库时的信息设置。

2.设置.gitignore文件。

# Visual Studio 2017 user specific files
.vs/

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app
*.ipa

# These project files can be generated by the engine
*.xcodeproj
*.xcworkspace
*.sln
*.suo
*.opensdf
*.sdf
*.VC.db
*.VC.opendb

# Precompiled Assets
SourceArt/**/*.png
SourceArt/**/*.tga

# Binary Files
Binaries/*
Plugins/*/Binaries/*

# Builds
Build/*

# StartContent
Content/StartContent/*

# ThirdParty
ThirdParty/*

# Whitelist PakBlacklist-<BuildConfiguration>.txt files
!Build/*/
Build/*/**
!Build/*/PakBlacklist*.txt

# Don't ignore icon files in Build
!Build/**/*.ico

# Built data for maps
*_BuiltData.uasset

# Configuration files generated by the Editor
Saved/*

# Compiled source files for the engine to use
Intermediate/*
Plugins/*/Intermediate/*

# Cache files for the editor to use
DerivedDataCache/*
  • 设置好.gitignore之后可以用git status看一下是不是不需要的文件都被忽略了再添加和提交。

3.Git提交时的信息

  • 直接用git commit -m "提交信息" filename进行提交的时候,提交信息写不了太长。
  • git commit filename提交信息就可以写很长。输入该命令并回车后,会自动用默认设置的编辑器打开一个文件,然后把提交信息写在文件里面即可。

三、提交到远程仓库Github

Github相当于一个远程的仓库平台,可以将本地的仓库放到上面去,这样别人也可以随时访问了。

主要参考博文:Git入门与使用 (三) 使用GitHub进行代码托管的相关操作。常用的命令如下。

# 查看目前已有的远程地址别名映射
git remote -v

# 添加新的远程地址别名映射
git remote add 远程仓库别名 远程仓库的https地址

# 将本地仓库推送到远程仓库
git push 远程仓库别名 本地仓库分支名

一些注意的地方如下:

  • 添加新的远程地址别名映射后,会有两个相同的别名映射,一个负责fetch,一个负责push。

  • push到远程仓库的时候需要登陆Github账号才行。而且有时可能因为国内被墙的缘故,push会不成功。

  • 如果登录账号的时候出错,可以删除该远程仓库之后重新添加,如下:

# 删除该远程仓库的连接
git remote rm 远程仓库别名
  • 终止git操作可以用ctrl + c

补充1:如果远程仓库使用http/https上传失败,则可能要用ssh方式进行连接:

# 查看全局配置信息
git config --global --list
# 如果没有,则设置全局用户信息
git config --global  user.name 你的用户名
git config --global user.email 你的邮箱
# 生成密钥
ssh-keygen -t rsa -C 你的邮箱
  • 密钥生成过程中推荐全程回车即可,也就是使用默认的路径和不设置密码。
  • 生成的密钥在用户文件夹中:

linux: ~/.ssh
windows: C:\Users\DELL.ssh

  • .ssh文件夹中打开cmd,输入下面命令读取公钥:
more id_rsa.pub
  • 复制公钥的内容,粘贴到远程仓库的SSH Keys设置中;
  • 这样之后在本电脑再push的时候就不需要输入密码了;
  • 对远程仓库上的所有仓库均适用。

补充2:如果远程仓库被修改过,比如团队的其他人修改过,则:

  • 需要先从远程仓库把别人的代码拉取下来
git pull 远程仓库别名 本地仓库分支名
  • pull命令相当于git fetch + git merge两个命令的组合;
  • fetch是把远程仓库的分支下载到一个临时分支中;
  • merge是把下载的临时分支和本地的分支合并;
  • 详细的机制可以参考博文:详解git fetch与git pull的区别
  • 然后再执行:
git push 远程仓库别名 本地仓库分支名

补充3:删除远程仓库的文件

  • 如果是本地的文件也删除了,直接add+commit后,push到远程仓库即可;
  • 如果本地的文件没有删除,可以删除暂存区的文件后commit,然后push到远程仓库:
# 只删除暂存区文件而不擅长工作区文件
git rm -r --cached 要删除的文件或者文件夹 
git commit -m '提交信息'
git push 远程仓库别名 本地仓库分支名

补充4:Git判断文件改动的方式

  • Git主要是通过文件的内容判断当前文件是否有改动的,底层判断是用Hash码;
  • 可以参考博客:GIT 底层原理
  • 编码Hash的时候,用到:(1)文件内容;(2)文件类型;(3)文件内容长度;
  • 同时会用Index文件保存文件名;
  • 如何检测rename的呢?应该还是通过文件内容进行判断。如果重命名后的文件内容没有改动,也就是Hash码没有改变,则判断为rename,否则判断为deletecreate
  • 另外,在文件系统中用同名但生成时间不同的文件覆盖源文件后,Git会认为文件仍然是连续的,因为文件名没有发生变化。然后再去比对文件内容的改变,这样历史记录还是连续的。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐