Git速查表

本地初始化一个项目

首先,你需要执行下面两条命令,作为 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

仓库

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

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

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

配置

java 复制代码
# 显示当前的Git配置
$ git config --list

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

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

查看:

java 复制代码
# 显示有变更的文件
$ git status

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

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

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

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

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

添加&移除:

java 复制代码
# 添加指定文件到暂存区
$ 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]

提交:

java 复制代码
# 提交暂存区到仓库区
$ 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/*
相关推荐
高林雨露2 小时前
git 空项目初次提交项目命令记录
git
liu8341894473 小时前
git 本地分支误删,怎么恢复?误删本地已提交未推送的分支!
git
+码农快讯+3 小时前
Git clone远程仓库没有其他分支的问题
git
多恩Stone3 小时前
【Hugging Face 下载中断】Git LFS 如何下载指定文件、单个文件夹?
git·stable diffusion·huggingface·diffusers
佚明zj4 小时前
如何配置ssh key 到gitlab, 实现git push
git·ssh·gitlab
半糖11225 小时前
git配置SSH
git·ssh
橘色的喵8 小时前
git 如何基于某个分支rebase?
git·rebase
未来可期LJ8 小时前
【Git 操作】Git 的基本操作
git
送你一朵小莲花9 小时前
git merge如何忽略部分路径
git
2401_864476939 小时前
无线领夹麦克风哪个降噪好?一文搞懂麦克风什么牌子的音质效果好
javascript·git·sql·github·mssql