git常用的命令汇总

1. git常用的命令汇总

1.1. 声明

本文中的内容属于个人总结整理而来,个人水平有限,对于部分细节难免有理解错误及遗漏之处,如果您在阅读过程中有所发现,希望您能指正,同时文章中的部分内容也参考了其它大神的文章,如果文章中的内容侵犯了您的权益,表示非常歉意,请您指出,我将尽快修改。

1.2. 简介

本文中对常用的git的命令的使用方法进行了一个汇总。

目前有一部分操作还尚未完善,后续将会持续更新

1.3. 变更说明

  • 1.0.0 (2021-11-23)

    初次内容整理

  • 1.0.1 (2022-01-12)

    • 重置相关操作中,添加“Commit后撤销方式”,“git reset的参数说明”
  • 1.0.2 (2022-02-18)

    • 分支相关操作中,添加“删除远程仓库后,本地同步方式”
  • 1.0.3 (2022-03-03)

    • 清理相关操作中,添加“git clean的参数说明”
    • 撤销本地修改中,汇总不同的撤销方式
    • 重置相关操作中,添加“撤销Push到远端的提交”
    • 添加cherry-pick的参考链接,尚未梳理,后续进行
  • 1.0.4 (2022-03-04)

    • 分支相关的操作中,添加修改分支名称
  • 1.0.5 (2022-03-09)

    • 分支相关操作中,添加强制删除本地分支的方式
  • 1.0.6 (2022-03-21)

    • 添加upstream相关的操作,包括添加,删除,查看,拉取更新
    • 清理相关的操作中,添加-x/-X的使用说明
  • 1.0.7 (2022-07-26)

    • 添加本地分支重命名
    • 添加查找本地关联远程分支

1.4. 后续调整计划

  • 对暂存/贮存中各个步骤分离,方便查找
  • 对挑选(cherry-pick)的操作进行完善
  • 对fork相关的操作进行完善
  • 对Diff相关的操作进行完成
  • 对Diff及Merge的工具配置进行完善

1.5. 用户相关操作

一般操作都分为全局及局部操作,一般情况下命令中带有–global的表示针对全局的配置进行设置,如果只是想对局部生效去掉–global即可

1.5.1. 查看及修改局部用户名和邮箱地址

#查看用户名
$ git config user.name
#查看邮箱
$ git config user.email

#修改用户名
$ git config user.name "XXXXX"
#修改邮箱
$ git config user.email "XXX@XXX"

1.5.2. 查看全局用户名和邮箱地址

#查看用户名
$ git config --global user.name
#查看邮箱
$ git config --global user.email

#修改用户名
$ git config --global user.name "XXXXX"
#修改邮箱
$ git config --global user.email "XXX@XXX"

1.5.3. 设置大小写敏感

#查看当前大小敏感的设置
$ git config --global core.ignorecase

#设置大小写敏感
$ git config --global core.ignorecase false

1.5.4. 配置GitBash中显示中文

如果本地文件或者文件夹为中文时,中文的字符不能正常显示。或者使用git log查看日志时,带有中文的日志无法正常显示的话,可以通过如下操作处理

#首先修改core.quotepath
$ git config --global core.quotepath false

#如果git log不能正常显示的话,则试用
$ git --no-pager log
#使用上述的如果可以在git log中显示的话
$ git config --global core.pager more

1.5.5. 修改默认的合并及比较工作为Beyond Compared

详细参见官方文档:Using Beyond Compare with Version Control Systems

#设置Diff使用BC4
$ git config --global diff.tool bc
$ git config --global difftool.bc.path "C:/Program Files/Beyond Compare 4/BComp.exe"

#文件比较
$ git difftool <filePath>

#设置Merge使用BC4
$ git config --global merge.tool bc
$ git config --global mergetool.bc.path "C:/Program Files/Beyond Compare 4/BComp.exe"

#Merge文件
$ git mergetool <filePath>

# 默认情况下Merge完毕后,会保留*.orig扩展名的文件,可以执行如下指定设置默认删除
$ git config --global mergetool.keepbackup false

1.6. 分支相关操作

1.6.1. 创建本地分支

在本地创建名称为testing的分支,创建后并不会切换到对应的分支

*符号指向的为当前所在的分支

$ git branch testing

$ git branch
* master
  testing

1.6.2. 创建并切换本地分支

分支创建完成后会自动切换到对应的分支上

# 查看当前所在的分支
$ git branch
  master
* testing

# 创建新的分支,并切换到对应的分支上
$ git checkout -b testing123
Switched to a new branch 'testing123'

# 再次查看所在的分支,可以看到已经成功创建并切换到了新创建的分支上
$ git branch
  master
  testing
* testing123

1.6.3. 本地切换到指定的分支

# 查看当前所在的分支
$ git branch
* master
  testing

# 切换到指定的分支上
$ git checkout testing
Switched to branch 'testing'

# 再次查看所在的分支,已经成功切换到指定的分支
$ git branch
  master
* testing

1.6.4. 切换到远程指定的分支

#查看所有的分支
$ git branch -a
* master
  remotes/origin/DotEntity
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

#切换到远程的DotEntity分支,并为本地分支命名DotEntity
$ git checkout -b DotEntity origin/DotEntity
Switched to a new branch 'DotEntity'
Branch 'DotEntity' set up to track remote branch 'DotEntity' from 'origin'.

#再次查看分支情况,已经成功检出并切换到了远程指定的分支
$ git branch -a
* DotEntity
  master
  remotes/origin/DotEntity
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

1.6.5. 查看本地分支

*符号指向的为当前所在的分支

$ git branch
  master
* testing

1.6.6. 修改分支名称

# 在未推送到远程时,修改本地分支
$ git branch -m [oldname] [newname]

# 已经推送到远程,需要修改分支,并且想要本地与远程保持相同
# 1. 修改本地分支的名称
$ git branch -m [oldname] [newname]
# 2. 删除远程分支
$ git push --delete origin [oldname]
# 3. 上传修改名称后的本地分支
$ git push origin newname
# 4. 修改后分支关联远程分支
$ git branch --set-upstream-to origin/[newname]

1.6.7. 查看本地与远程仓库的所有分支

*符号指向的为当前所在的分支,以remotes/开头的分支为远程仓库的分支

# 可以使用-a或者--all
$ git branch -a
  master
* testing
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

1.6.8. 查看远程仓库分支

# 可以使用-r或者remotes
$ git branch -r
  origin/HEAD -> origin/master
  origin/master

1.6.9. 将本地分支与远程仓库分支关联

某些时候使用git pull时会出现如下情况:

```txt
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> release
```

其原因是:git在本地创建一个分支后,需要与远程分支关联,如果没有关联,git执行操作时会提示添加关联,关联的目的是为了在执行git pull,git push操作时不再需要指定对应的远程分支

解决办法:

```batch
#将本地的分支与远程仓库的分支关联,remote-branch对应的远程仓库的分支,local-branch对应的当前的本地分支
$ git branch --set-upstream-to=origin/<remote-branch> local-branch

$ git branch --set-upstream-to=origin/DotEntity DotEntity
Branch 'DotEntity' set up to track remote branch 'DotEntity' from 'origin'.
```

1.6.10. 将本地创建的分支推送到远程仓库上

# 新创建本地分支
$ git branch testing

# 查看新创建的本地分支,可以看到本地分支(testing)已经创建,远程仓库没有对应的分支
$ git branch -a
* master
  testing
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

# 将本地创建的分支推送到远程仓库上
$ git push origin testing
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'testing' on GitHub by visiting:
remote:      https://github.com/XXXX/GitLeanProj/pull/new/testing
remote:
To https://github.com/XXXX/GitLeanProj.git
* [new branch]      testing -> testing

# 再次查看远程仓库分支情况,可以看到对应的分支(testing)已经推送到远程仓库
$ git branch -a
* master
  testing
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/testing

1.6.11. 删除本地分支

如果当前在将要删除的分支上,最好在删除前切换到其它的分支上

# 执行删除指定的分支,可以使用-d或者--delete
# 使用-d删除本地分支时,会对本地的提交与合并进行检查,如果发现有新的提交,则不允许删除本地分支
# 使用-D可以强制删除本地分支,无论本地是否有修改与提交
$ git branch -d testing123
Deleted branch testing123 (was aa9ae1c).

1.6.12. 强制删除本地分支

如果当前在将要删除的分支上,最好在删除前切换到其它的分支上.
在使用git branch -d删除分支时,如果发现本地有修改或者有新的提交,则是不允许删除的.

# 执行删除指定的分支,可以使用-d或者--delete,由于此分支已经有了新的修改和提交,所以会提示此分支尚未被合并,不允许删除.
$ git branch -d testing123
error: The branch 'weapon-keptfire' is not fully merged.
If you are sure you want to delete it, run 'git branch -D weapon-keptfire'.

# 根据上述的提示,可以看出,可以使用-D可以强制删除本地分支,无论本地是否有修改与提交
$ git branch -D testing123
Deleted branch testing123 (was aa9ae1c).

1.6.13. 删除远程仓库分支

# 查看本地及远程仓库的分支
$ git branch -a
  master
* testing
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/testing

# 从远程仓库中删除分支(testing)
$ git push --delete origin testing
To https://github.com/XXX/GitLeanProj.git
- [deleted]         testing

# 再次查看本地及远程的分支可以看到远程仓库的分支(testing)被删除了
$ git branch -a
  master
* testing
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

1.6.14. 删除远程仓库后,本地同步

在远程删除仓库后,在本地使用命令git branch -a却还可以查找到对应的仓库,这种情况下需要删除本地仓库git remote prune origin

PS F:\Workspace\DotLuaGameProject> git remote prune origin
Pruning origin
URL: https://github.com/liyubin724/DotLuaGameProject.git
 * [pruned] origin/feature/dotsource-notification

1.6.15. 本地与远程仓库进行同步

$ git fetch
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (8/8), done.
From ssh://XXX/ZZZ/XXX
  e9419c21..c7eaeede  develop    -> origin/develop

1.6.16. 本地向远程仓库进行拉取

$ git pull
Updating 1c3ec93e..9ff1beaa
Fast-forward
.../FlatBuffer/AddBindLinkTargetEffectData.cs      |  26 ++++++++++--------
11 files changed, 84 insertions(+), 77 deletions(-)
delete mode 100644 XXX/XX/XX/TargetSecondType.cs
Current branch feature/PROJECTEM-5916--技能升级 is up to date.

1.6.17. 合并指定的分支

# 将指定的分支的内容合并到当前的分支上(合并时必须先切换到对应的分支)
$ git merge 5916-opt-linkeffect
Updating 25f4ab3e..f46df244
Fast-forward
.../Timeline/Actions/Effects/EffectActionUtil.cs   | 126 ++++++++++++---------
1 file changed, 73 insertions(+), 53 deletions(-)

1.6.18. 查看所有分支最后一次提交

# 可以使用-v、-vv或者-verbose来查看所有分支最后一次提交
$ git branch -v
* master   09a37b1 Initial commit
  testing1 24065ff add new file
  testing2 904c97d delete file

1.6.19. 简单比较两个分支提交差异情况

#查看branch1中有,而branch2中没有的内容
$ git log branch1 ^branch2

#查看branch1中比branch2中多提交了哪些内容
$ git log branch1..branch2

#查看branch1与branch2的不同
$ git log branch1...branch2

#查看branch1与branch2的不同,并显示出每个提交是在哪个分支上
$ git log --left-right branch1...branch2

$ git log --left-right DotEntity...master
commit < 01fa8f5fba8b7705c2c60f5ec385b87a4355f66e (HEAD -> DotEntity, origin/DotEntity)
Author: yubin.li <liyubin.724@163.com>
Date:   Tue May 26 19:27:28 2020 +0800

    new:准备处理Avatar相关的逻辑
#根据commit后面的<或者>,如果为<表示提交在比较的左侧(示例中即显示在DotEntity上),反之>表示提交在右侧

1.6.20. 比较任意两分支差异(git diff)

#以文件的形式对分支branch1与branch2进行对比,显示差异的部分(加上 --stat 是显示文件列表, 否则是文件内容比较)
$ git diff DotEntity master --stat
 Dot/DotEditor/DotEditor.csproj                     |   6 -
 Dot/DotEditor/Entity/Node/NodeBehaviourEditor.cs   | 177 +--------------
 Dot/DotEngine/DotEngine.csproj                     |  10 -
 Dot/DotEngine/Entity/Avatar/AvatarUtil.cs          |   2 +-
 DotProject/Assets/DotEngine/DotEngine.dll          | Bin 171008 -> 163840 bytes
 ...
 21 files changed, 7 insertions(+), 854 deletions(-)

#比较具体的文件的差异
$ git diff branch1 branch2 <filePath>

#显示差异文件的详细内容
$ git diff branch1 branch2

1.6.21. 查看已经合并的分支

1.6.22. 查看尚未合并的分支

1.6.23. 本地分支重命名

#重命名当前的本地分支
$ git branch -m <new-branch-name>

#重命名其它的本地分支
$ git branch -m <old-branch-name> <new-branch-name>

1.6.24. 查看本地分支关联(跟踪)的远程分支

# 查看本地分支对应哪个远程分支
$ git branch -vv

  2018.4 da61e967a [origin/2018.4] Unity 2018.4.36f1 C# reference source code
  2019.4 b22fe1bb3 [origin/2019.4] Unity 2019.4.40f1 C# reference source code
  2020.2 62b04a65b [origin/2020.2] Unity 2020.2.7f1 C# reference source code
  2021.1 fd45c32d2 [origin/2021.1] Unity 2021.1.28f1 C# reference source code
* 2021.3 3795d176d [origin/2021.3] Unity 2021.3.6f1 C# reference source code
  master d76ca0c1f [origin/master: behind 3] Unity 2022.2.0a13 C# reference source code

1.6.25. 远程分支重命名

1.7. 提交相关的操作

1.7.1. 添加操作

#添加单个文件或者目录
$git add <path>

#添加所有指定类型的文件
$git add *.cs

#提交所有的变化
$git add -A/--all

#提交被修改(modified)和被删除的(deleted),不包括新的文件(new)
$git add -u/-update

#提交新文件(new)和被修改的(modified)文件,不包括被删除的文件
$git add .

1.7.2. 提交修改到仓库中

# 通过-m或者--message设定提交信息
$ git commit -m "日志"

1.7.3. 修改提交到仓库时日志编辑工具

#设置默认使用vim作为日志编辑的工具
$ git config --global core.editor "vim"

#设置完成后,再提交git commit时会使用vim来编写提交信息

1.7.4. 比较相关操作


git diff不加参数即默认比较工作区与暂存区
git diff --cached [<path>...]比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
git diff HEAD [<path>...]比较工作区与最新本地版本库。如果HEAD指向的是master分支,那么HEAD还可以换成master
git diff commit-id [<path>...]比较工作区与指定commit-id的差异      
git diff --cached [<commit-id>] [<path>...]比较暂存区与指定commit-id的差异
git diff [<commit-id>] [<commit-id>]比较两个commit-id之间的差异

1.7.5. 1.7.5 删除相关的操作




1.8. 合并相关的操作

1.8.1. 合并指定的分支

# 将指定的分支合并到当前所在的分支上
$ git merge NativeDrawer-AddFieldButton
Updating d1fdec2..de795b3
Fast-forward
 Dot/DotEditor/DotEditor.csproj                     |   1 +
 .../NativeDrawer/Decorator/BoxedHeaderDrawer.cs    |   2 +-
 .../NativeDrawer/Decorator/ButtonDrawer.cs         |  48 +++++++++++++++++++++
 .../NativeDrawer/Decorator/DecoratorDrawer.cs      |   4 +-
 19 files changed, 99 insertions(+), 17 deletions(-)
 create mode 100644 Dot/DotEditor/NativeDrawer/Decorator/ButtonDrawer.cs
 create mode 100644 Dot/DotEngine/NativeDrawer/Decorator/ButtonAttribute.cs

1.8.2. 取消合并

# 若合并后出现冲突或者异常的情况,可以取消此次合并操作
$ git merge --abort

1.8.3. 查找当前系统支持的merge工具

# 通过命令行查看支持的工具.
$ git mergetool --tool-help

# 此处列出的是本地当前可使用的工具
'git mergetool --tool=<tool>' may be set to one of the following:
                p4merge
                tortoisemerge
                vimdiff
                vimdiff1
                vimdiff2
                vimdiff3

# 此处列出的是Git支持的其它的工具
The following tools are valid, but not currently available:
                araxis
                bc
                bc3
                bc4
                codecompare
                deltawalker
                diffmerge
                ...

1.8.4. 配置Merge工具

1.8.5. 冲突后启动合并工具

#启动合并工具
$ git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc codecompare emerge vimdiff
Merging:
DotProject/Assets/DotEngine/DotEngine.dll
DotProject/Assets/DotEngine/DotEngine.dll.mdb
DotProject/Assets/DotEngine/DotEngine.pdb
DotProject/Assets/DotEngine/Editor/DotEditor.dll
DotProject/Assets/DotEngine/Editor/DotEditor.dll.mdb
DotProject/Assets/DotEngine/Editor/DotEditor.pdb

Normal merge conflict for 'DotProject/Assets/DotEngine/DotEngine.dll':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (vimdiff):

1.8.6. 解决二进制类型的文件冲突

二进制类型的文件一旦冲突后是无法合并的

#由于二进制文件无法编辑,只能选取其中的某一个版本
#--ours 表示检出当前分支,即合并后保存当前分支的改动而丢弃另外一个分支的改动。
#--theirs 表示检出另外一个分支,即保存另外一个分支的改动丢弃当前分支的改动。
#FILE 需要解决的文件
$ git checkout FILE --ours{--theirs}

#冲突解决后需要再次add后才能提交

1.9. 变基(rebase)相关操作

1.10. 清理相关的操作

#查看将会被清理的内容,添加-n只是做一次演习,并不会真的执行清理.-n可以与其它的同时使用
  $ git clean -n

#删除指定目录下所有没有被跟踪过的文件,如果不指定<path>,则会对整个库进行清理
#不会删除.gitignore文件中指定的文件或者文件夹
$ git clean -f <path>

#同时删除未被跟踪的文件及文件夹
$ git clean -df

#删除指定目录下所有没有被跟踪的文件,不管.gitignore文件中是否指定的文件或者文件夹
$ git clean -xf

#结合git reset --hard与git clean -f可以使用工作目录回退到最后一次提交时候的状态
$ git reset --hard
$ git clean -df

git clean中参数说明:

  • -n:不实际删除,只是进行演练,展示将要进行的操作,有哪些文件将会被删除
  • -f:删除文件
  • -i:显示将要删除的文件
  • -d:递归删除目录及文件(未跟踪的)
  • -q:仅显示错误,成功删除的文件不显示
  • -x:删除所有未被跟踪和忽略的文件和目录
  • -X:只删除被忽略的文件和目录

1.11. 撤销本地修改

对于新增加文件来说,由于新文件并未添加到git的记录中,属于未被tracked的状态,撤销修改时不会对其有任何影响,如果确认不需要的话,直接删除即可

#放弃本地所有的尚未提交的修改,将修改的文件还原到未修改前的状态,不包括新增的文件
$ git checkout .

#撤销对指定文件的修改
$ git checkout [filename]

# 把所有没有提交的修改暂存到stash中,后续可以使用git stash pop来恢复
$ git stash [push] [-m | -message] [""] 

# 返回到某个节点,不保留修改,已有的改变会全部丢失
$ git reset --hard [HEAD^ | hash]

# 返回某个节点,保留修改,已有的改动会保留,在未提交中,可以使用git status或者git diff来查找
$ git reset --soft [HEAD^ | hash]

1.12. 重置相关操作(git reset)

1.12.1. Commit后撤销本地的commit

#一般情况下修改后提交到本地
$ git add . #本地修改的文件
$ git commit -m "本地功能提交"

#如果想要撤销此次commit操作,修改还需要保留的话,可以使用git reset --soft HEAD^
$ git reset --soft HEAD^

# 对于上述中符号^表示上一次的提交,也可以写成HEAD~1,如果需要撤销2次commit可以使用HEAD~2

1.12.2. 修改提交的注释

# 如果发现提交的注释写错了,可以使用下面命令,使用后自动进入VIM编辑器
$ git commit --amend

1.12.3. 回退到任意已经提交过的版本

#通过指定[hashcode]可以回退到任意提交过的版本,如果不指定[hashcode]则会回退到最后一次提交
#可以通过git log 来查看commit的哈希值
$ git reset --hard [hashcode]
  • git reset几个参数意义

    • –mixed:为默认参数,表示不删除工作空间改动的内容,撤销commit,并且撤销git add .的操作
    • –soft:不删除工作空间改动的内容,撤销commit,不撤销git add.
    • –hard:删除工作空间的改动的内容,撤销commit,撤销git add.操作完成后,会恢复到上一次提交的状态

1.12.4. 撤销Push到远端的提交

有时候会遇到本地提交并推送到远端后,又发现提交有问题,需要撤销掉此次本地及远程的提交

# 将本地回退到相应的版本
$ git reset --hard [<版本号>|HEAD^]

# 如果仅仅执行上述的命令将本地撤销掉后,想直接git push origin <分支名>提交的话,
# 会发现提交失败,提示本地版本落后于远端版本
# 为了覆盖掉远端的版本,使用远端的仓库也回退到相应的版本,可以添加上--force参数

$ git push origin <分支名> --force

1.13. 暂存/贮存相关的操作

贮藏(stash)会处理工作目录的脏的状态——即跟踪文件的修改与暂存的改动——然后将未完成的修改保存到一个栈上, 而你可以在任何时候重新应用这些改动(甚至在不同的分支上)。

可以参见更详细的:贮藏与清理

1.13.1. 查看贮存区

#查看贮存区列表
$ git stash list
stash@{0}: On DotEntity: 贮存目前修改优先解决NativeDrawer的BUG

1.13.2. 贮存当前修改

#执行贮存同时添加备注信息,message中用于添加备注,方便查找
#也可以直接使用git stash
#目前git已经弃用了save,替换为push
$ git stash [push] [-m|--message <message>]
Saved working directory and index state On DotEntity: 贮存目前修改优先解决NativeDrawer的BUG
#执行贮存同时添加备注信息,message中用于添加备注,方便查找
#也可以直接使用git stash
#目前git已经弃用了save,替换为push
$ git stash [push] [-m|--message <message>]
Saved working directory and index state On DotEntity: 贮存目前修改优先解决NativeDrawer的BUG

#查看贮存区列表
$ git stash list
stash@{0}: On DotEntity: 贮存目前修改优先解决NativeDrawer的BUG

#显示做了哪些改动,默认show第一个存储
#如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
$ git stash show
Dot/DotEditor/NativeDrawer/NativeDrawerObject.cs   |   8 ++++++++
DotProject/Assets/DotEngine/DotEngine.dll          | Bin 171008 -> 171008 bytes
...
7 files changed, 8 insertions(+)

#显示第一个存储的详细的改动
#如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p
$ git stash show -p
diff --git a/Dot/DotEditor/NativeDrawer/NativeDrawerObject.cs b/Dot/DotEditor/NativeDrawer/NativeDrawerObject.cs
index 0d2937c..b309db3 100644
--- a/Dot/DotEditor/NativeDrawer/NativeDrawerObject.cs
+++ b/Dot/DotEditor/NativeDrawer/NativeDrawerObject.cs
@@ -59,6 +59,14 @@ public void OnGUILayout()
                EditorGUILayout.EndScrollView();
  ...
}
diff --git a/DotProject/Assets/DotEngine/DotEngine.dll b/DotProject/Assets/DotEngine/DotEngine.dll
index 5ace8d9..dc92d15 100644
...

#应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
$ git stash apply

#命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
$ git stash pop

#丢弃stash@{$num}存储,从列表中删除这个存储
$ git stash drop stash@{$num} 

#删除所有缓存的stash
$ git stash clear

1.14. 重命名文件或文件夹

1.14.1. 基本的重命名(移动)操作

$ git mv <old name> <new name>

1.14.2. 存储库中已有指定文件夹需要覆盖


$ git mv -f <old name> <new name>

1.14.3. 区分大小写的重命名

由于默认的情况下Git不区分大小写,如果需要进行重命名时,需要先将文件或者文件夹命名为其它的名称,再次重命名到指定的名称

$ git mv casesensitive tmp
$ git mv tmp CaseSensitive

关于Git大小写的问题有:

  1. stackoverflow大小写问题描述

1.15. 通过upstream从其它远程仓库同步

当从git上clone一个别人的仓库到本地,因为自己不是仓库的开发者,无法向此仓库提交代码的,此时对于自己的本地仓库来说,这个仓库就是upstream.

当将此仓库fork后,再clone到本地,此时fork到自己的仓库就是本地仓库的origin

此时可以通过设置upstream来获取远程仓库最新的代码.

1.15.1. 查看upstream情况

# 通过如下指令查找后,如果存在upstream的选项,那么表示已经添加好了upstream
$ git remote -v

origin ssh://xxxxx.git(fetch)
origin ssh://xxxxx.git(push)
upstream https://xxxx.git(fetch)
upstream https://xxxx.git(push)

1.15.2. 添加upstream

# 添加upstream
$ git remote add upstream https://xxxxxx.git

1.15.3. 删除upstream

# 删除 Git 远程仓库的 URL
$ git remote rm upstream
# 或者删除 Git 远程地址
$ git remote remove upstream

PS:使用rm与remove有一定的不同,详细的参考:如何删除 Git 远程网址

1.15.4. 从upstream中更新

# 从upstream中拉取
$ git fetch upstream
# 切换到需要的分支
$ git checkout xxxx
# 通过rebase更新,如果有冲突的话,需要解决一下
$ git rebase upstream/main
# 将更新推送到自己的远程仓库
$ git push

1.16. fork相关的操作

1.17. cherry-pick相关的操作

参见资料:https://blog.csdn.net/FightFightFight/article/details/81039050

1.18. 参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值