Git速查表

发布时间:2024年01月13日

本地初始化一个项目

首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中。

git config --global --list 显示全部配置

git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"

然后在你的需要初始化版本库的文件夹中执行:

初始化本地仓库

git init\

添加远程仓库

git remote add origin <你的项目地址>
注:项目地址形式为:http://git.oschina.net/xxx/xxx.git或者 git@git.oschina.net:xxx/xxx.git

这样就完成了一次版本你的初始化。

如果你想克隆一个项目,只需要执行:
git clone <项目地址>

进入你已经初始化好的或者克隆项目的目录,然后执行:
#同步远程仓库
git fetch [remote]
#拉取远程仓库合并
git pull origin master

添加需要追踪的文件或目录

#添加当前目录下的文件和目录到暂存区(使用git来进行追踪管理)
git add .
#提交到版本库(还在本地)
git commit -m "第一次提交"
#推送到远程仓库(将改变远程仓库)
git push origin master
然后如果需要账号密码的话就输入账号密码,这样就完成了一次提交。

此时,你可以在你的个人面板、项目主页查看到你的提交记录,例如:http://git.oschina.net/oschina/git-osc/commit/f3dd1c5bae48fa4244e2595a39e750e5606dd9be](http://git.oschina.net/oschina/git-osc/commit/f3dd1c5bae48fa4244e2595a39e750e5606dd9be

按照本文档新建的项目时,在码云平台仓库上已经存在 readme 文件,故在提交时可能会存在冲突,这时您需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令:

git push origin master -f
如果您选择保留线上的 readme 文件,则需要先执行:

git pull origin master
然后才可以推送,如果发生冲突,则需要先解决冲突

使用ssh访问远程仓库时,每次访问要求输入短语密码:
Enter passphrase for /c/Users/Administrator/.ssh/id_ecdsa:
执行下面命令可无需每次输入密码

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_ecdsa

速查表:

详细参考:https://gitee.com/all-about-git

仓库

# 在当前目录新建一个Git代码库
$ git init

# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]

# 下载一个项目和它的整个代码历史
$ git clone [url]

配置

# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

查看:

# 显示有变更的文件
$ git status

# 显示当前分支的版本历史
$ git log

# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

# 美化历史打印
$ git log --graph --pretty=oneline --abbrev-commit

# 搜索提交历史,根据关键词
$ git log -S [keyword]

# 显示当前分支的最近几次提交
$ git reflog

添加&移除:

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p

# git add -A 保存所有的修改
# git add . 保存新的添加和修改,但是不包括删除
# git add -u 保存修改和删除,但是不包括新建文件。

# 删除工作区(本地)文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 删除工作区(本地)目录,并且将这次删除放入暂存区
$ git rm -r [dir]

# 停止追踪指定文件,但该文件会保留在工作区(本地)
$ git rm --cached [file]

# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

提交:

# 提交暂存区到仓库区
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a

# 提交时显示所有diff信息
$ git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

# 查看提交记录
$ git log


远程同步:

# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 当本地和远程分支没有共同祖先时,强制拉取合并
$ git pull --allow-unrelated-histories [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

冲突:

# 当pull存在冲突时,使用--rebase解决冲突后合并
$ git pull --rebase [remote] [branch]

合并:

分支:

# 选择分支
git switch "branch"
git checkout [branch]

# 添加分支
git branch "name"

# 删除分支
git branch -d "branch"

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 分支重命名
git branch -m [old_branch_name] [new_branch_name]

标签:

撤销:

忽略:

在.git目录同级下创建.gitignore文件

.gitignore  # 忽略自身
4.txt  # 忽略名为4.txt的文件
project2  # 忽略名为project2的目录或文件
project3/  # 指定忽略名为project3的目录,叫project3的文件将不会被忽略
app*  # 忽略前缀为app的文件或目录

.gitignore

常见配置

空格 不匹配任意文件,可作为分隔符,可用反斜杠转义

#开头 标识注释,可以使用反斜杠进行转义

!开头 标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 !也不会再次被包含。可以使用反斜杠进行转义

/结束 只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件

/开始 匹配项目根目录

** 匹配多级目录,可在开始,中间,结束

* 通配多个字符;

? 通用匹配单个字符

[] 通用匹配单个字符列表


e.g.

匹配所有后缀为apk的文件
*.apk

匹配大小写首字母目录下的aa.meta文件
/[Aa]ssets/[Ss]treamingAssets/aa.meta

匹配aa目录下的全部文件和目录
/[Aa]ssets/[Ss]treamingAssets/aa/*

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 文件

/mtk/do.c: 过滤某个具体文件

!/mtk/one.txt: 追踪(不过滤)某个具体文件

Android

*.iml
.gradle
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx

Java

.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Mac OS ###
.DS_Store

Unity

# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/

# Recordings can get excessive in size
/[Rr]ecordings/

# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*

# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*

# Visual Studio cache directory
.vs/

# Gradle cache directory
.gradle/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Unity3D generated file on crash reports
sysinfo.txt

# Builds
*.apk
*.aab
*.unitypackage
*.app

# Crashlytics generated file
crashlytics-build.properties

# Packed Addressables
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*

# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*
文章来源:https://blog.csdn.net/gowcage/article/details/135531274
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。