作者: littleboy 2023-09-30 20:31:20

Git-入门

Git

下载&安装

Git - Downloads (git-scm.com)

打开Git

右键-Open git bash here

菜单/程序-git bash

cmd命令提示符

1
pwd 查看程序允许的目录位置

配置Git

1
2
git config --global user.name "<你的用户名>"
git config --global user.email "<你的注册邮箱>"

查看配置

1
git config --list

初始化仓库

需要Git服务器进行代码托管,可以自建Git服务器,也可以使用Github或Gitee的免费服务器。本文章以Gitee为例进行演示,

远端初始化仓库

本地初始化仓库

绑定远端仓库

git remote add

1
git remote add origin https://gitee.com/littleboy97/git-practice

修改仓库

克隆仓库

将远端仓库克隆到本地

1
2
3
git clone <链接>
方式1:HTTPS
方式2:SSH

查看当前仓库状态

1
git status

添加暂存文件

添加git缓冲区

1
2
3
4
添加指定文件
git add <指定文件>
添加全部文件
git add .

添加版本评论

添加版本评论

1
2
git commit
git commit -m "<commit>"

文件在评论过程会形成一次log记录,然后可通过git log查看记录来获取

1
git log

git reset评论记录里的那串数字,可以找到每次的提交

1
2
3
git reset --hard <commitID>
git reset --mixed <commitID>
git reset --soft <commitID>

是否能删除评论?

查看文件差异

查看文件差异

1
git diff <commit ID1> <commit ID12>

推送至远端仓库

推送更新到远端仓库

1
git push

分支

分支,创建用于功能的编写和功能的测试使用的环境。

设计流程:首次生成的main主分支,在设计过程会需要进行功能develop分支的开发(这样就不会动到原先的main主分支)。这个有点类似我们在复制一版文件进行修改。开发分支设计好后,会合并到main主分支里。

查看

1
git branch

创建

这只是创建,没有直接检出切换到新建的分支的,需要checkout检出

1
git branch <分支名>

切换

切换不同分支,其文件夹内容显示和分支是有关系的(图),不同分支有不同的内容的。

1
git checkout <分支名>

上传

分支也是可以上传到远端仓库的,可以按前面操作。git push将本地分支推送到远端仓库。

1
git push

如果远端无分支则设置下面方法上传推送

1
2
3
git push -u <远端仓库名> <分支名>
示例:
git push -u github master

下载

将远端仓库拉取到本地分支。

1
git pull

如果远端无分支则

1
git pull <remote> <branch>

合并

作为完成分支功能开发的分支,可将设计完成的功能分支进行合并汇总到主分支上。

在分支做好的内容有两种处理:

1、上传分支后,切换到需要汇总的分支,输入如下代码,将其他分支合并进来

1
2
3
4
5
6
7
8
切换汇总分支
git checkout <分支名>

合并
git merge <分支名>

提交代码至主干(master)
git push origin master

2、git staus将当前分支暂存起来

1
git staus

删除

删除本地分支

1
git branch -d <分支名>

更新远端分支,并删除远端分支

1
git push -u origin -d <分支名>

文件复制

<分支1>:

1
2
3
4
5
6
7
8
├── README.md
├── cpp
│ ├── include
│ │ └── test.hpp
│ └── src
│ └── test.cpp
└── python
└── setup.py

<分支2>:

1
2
3
4
├── README.md
└── java
└── test.java
└── main.java

假设我们当前在<分支1>, 目录为仓库根目录,想要复制<分支2> java/test.java 到当前目录,执行下面的语句:

1
git checkout <分支2> -- java/test.java

⚠️注意:这里还是会创建一个java目录,而不是把test.java放到根目录下。

如果当前进入了cpp 子目录,后面的路径也需要改成相对路径:

1
git checkout <分支2> -- ../java/test.java

如果想要复制整个目录,也是一样的:

1
git checkout <分支2> -- java/

此外还可以利用提交的hash值来复制文件,这样就会复制当次提交时候的文件内容:

1
git checkout 941b6dd java/test.java

协同

代码冲突

revert回退版本

本地回退版本,revert会按照某个commit版本,并会当作新版本使用。

1
2
3
4
5
6
7
git revert HEAD^

git revert HEAD^^

git revert HEAD^2

git revert <版本ID>

reset回退版本

本地回退版本,reset会回退到某个commit版本,并会删除后续版本。

1
2
3
4
5
6
7
git reset HEAD^

git reset HEAD^^

git reset HEAD^2

git reset <版本ID>

rebase切换提交

Q&A

切换分支

当我们正常使用Git切换分支时,会出现以下提示(请在切换分支之前提交您的更改或隐藏它们)Please commit your changes or stash them before you switch branches.

方法:

  1. 因为当前的分支dev 最初也是从master 分支上衍生出来的。而此时你要再从该分支上切换到其主分支。那么你需要先把该dev分支上的改动提交后才能切换,但是该dev分支上还没有完成全部的修改,你不想提交。那么此时你就要选择 stash (存放)它们(你在当前分支上改动的却没有提交commit的内容)。
    所以第一步,在当前分支上执行 git stash 命令。将当前分支存起来,id为 807be186826

  2. 这时候再执行 git status 命令,显示没有东西需要提交,接着就可以在主分支master上创建并切换到新的分支去修复另一个Bug了。

  3. 那修改完那个Bug也提交后,就该回到dev 分支上去继续修改那个未完成的Bug。
    执行 git checkout dev 切换到 dev 分支,这个时候执行 git status 命令仍旧显示没有东西需要提交。毕竟我们前边已经成功将dev上未提交的改动给“隐藏“了,这时,用 $ git stash list 命令去查看我们“存储”的列表。

参考

菜鸟教程:https://www.runoob.com/git/git-tutorial.html

Git - 书籍 (git-scm.com)

vim编辑器

标签