目录

一、简介二、基本场景Git用法三、工作区、暂存区、本地仓库、远程仓库四、常用命令用法git clonegit addgit commitgit statusgit diffgit rmgit mvgit loggit blamegit remotegit fetchgit pullgit pushgit checkoutgit tag

五、分支管理 Branch5.1 创建分支5.2 切换分支5.3 删除分支5.4 合并分支

六、撤销与回退6.1 git checkout6.2 git reset6.3 git revert

附录

一、简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。 Git 各平台安装包下载地址为:http://git-scm.com/downloads 安装过程可以参考菜鸟教程:https://www.runoob.com/git/git-install-setup.html 国内访问码云速度快一点,所以使用https://gitee.com/作为远程仓库。

二、基本场景Git用法

基本场景:

使用git init初始化一个Git仓库。使用git add将文件添加到暂存区。使用git commit将文件提交到本地仓库。创建远程仓库并使用git remote add origin命令添加远程仓库地址。使用git push命令将本地仓库代码推送到远程仓库。使用git pull命令可以将远程仓库的文件拉取到本地仓库。

示例:

git init #初始化仓库

touch README.md #创建README.md文件

git add README.md #将README.md文件提交到暂存区

git commit -m "add README.md" #将暂存区的文件提交到本地仓库

接下来在gitee创建仓库: 仓库创建完成后,复制仓库地址: 接下来将远程仓库地址添加到Git本地仓库,然后将本地Git仓库代码推送到刚刚创建的远程仓库中。

git remote add origin https://gitee.com/L1692312138/git-demo.git #添加远程仓库

git push -u origin "master" #将本地仓库的代码推送到远程仓库

git pull #从远程仓库拉取代码

以上就是Git仓库最简单的使用场景,接下来会详细介绍一下Git命令的用法。

三、工作区、暂存区、本地仓库、远程仓库

在使用git init命令初始化一个仓库或者使用git clone克隆一个仓库后,文件夹下的文件就会被Git管理。 仓库可以分四种区域: 工作区(workspace):就是当前这个项目目录或者文件夹下的所有文件。 暂存区(stage/index): 在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),在使用git add命令后,文件被添加到暂存区。 本地仓库(版本库):工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库,可以当做是本地Git仓库,在使用git commit命令后,文件被提交到版本库。 远程仓库:github、gitee等网站所提供的仓库,也可以是个人或公司搭建,使用git push命令将本地仓库文件推送到远程仓库上。

被Git所管理的文件会有四种状态: Untracked: 未跟踪,文件还没有加入到git库,还没参与版本控制。 Unmodified:未更改,文件已经加入git库中,但是还没有被修改过。 Modified:已更改,文件被修改了。显示为蓝色文件。 Staged: 已暂存,在使用add命令后,文件会被添加到暂存区,显示为红色文件。

add commit push

workspace ---> staging area ----> local repository ---->remote repository

工作区 暂存区 本地仓库 远程仓库

当执行 git add 命令时,文件会被添加到暂存区。在IDEA中显示为红色文件。 当执行git commit命令时,文件会被提交到版本库。在IDEA中显示为绿色文件。 当执行git push命令时,文件会被推送到远程仓库中。 此外,在IDEA中,如果文件被删除,在commit提交时显示为灰色;

四、常用命令用法

git clone

git clone [url] 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

git clone https://gitee.com/L1692312138/git-command.git # 将远程Git仓库下载到本地

git add

git add 命令可将该文件添加到暂存区。 添加一个或多个文件到暂存区:git add [file1] [file2] ... 添加指定目录到暂存区,包括子目录:git add [dir] 添加当前目录下的所有文件到暂存区:git add .

git commit

git commit 命令将暂存区内容添加到本地仓库中。 git commit -m [message] : message是备注信息。 git commit [file1] [file2] ... -m [message]:可以提交指定文件到本地仓库。 git commit -am [msg] : 表示修改后的文件,不需要执行git add命令,可以直接提交。

git status

git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。 可以使用 -s 参数来获得简短的输出结果。

git diff

git diff 命令比较文件的不同,使用--stat参数可以显示摘要。 git diff:可以比较工作去和暂存区文件的差异

git diff [commitID] [commitID] :可以比较两次commit提交记录之间的不同

git diff [branchName] [branchName] :可以比较两个分支之间的不同

git rm

git rm 命令用于删除文件。 git rm 删除文件有以下几种形式:

将文件从暂存区和工作区中删除;如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f;如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可;可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件;

git rm

git rm -f # 强制删除

git rm --cached # 把文件从暂存区域移除,但仍然保留在当前工作目录中

git rm –r

# 文件夹递归删除

如果暂存区文件已经被修改,删除则需要强制删除:

将文件从暂存区域移除,但仍然保留在当前工作目录中:

git mv

git mv 命令用于移动或重命名一个文件。

git mv [file] [newfile]

git log

git log 查看历史提交记录。 使用--oneline 选项来查看历史记录的简洁的版本。 使用--graph 选项,查看历史中什么时候出现了分支、合并。 author参数可以查找指定用户的提交日志。 如果要指定日期,可以执行几个选项:--since 和 --before,也可以用 --until 和 --after,使用--no-merges 选项可以隐藏合并提交。

git log

git log --oneline

git log --graph --oneline

git log --author=LiuShihao --oneline -5

git log --oneline --before={3.weeks.ago} --after={2022-11-07} --no-merges

git blame

如果要查看指定文件的修改记录可以使用 git blame 命令

git blame

git blame master.txt

git remote

git remote 命令用于在远程仓库的操作。

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

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

git remote add [shortname] [url]# 添加远程版本库

git push -u origin master # 将本地仓库代码推送到远程仓库

git remote rm name # 删除远程仓库

git remote rename old_name new_name # 修改仓库名

git fetch

git fetch 命令用于从远程获取代码库。

git fetch origin

git merge origin/master # 如果远程仓库有更新,可以使用merge命令进行合并

git pull

git pull 命令用于从远程获取代码并合并本地的版本。

git pull

git pull origin

git pull origin master:brantest # 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。

git pull origin master #如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git push

git push 命令用于从将本地的分支版本上传到远程并合并。 如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:

git push origin master #将本地的 master 分支推送到 origin 主机的 master 分支

git push --force origin master # 强制推送到远程仓库

git checkout

git checkout [branchName] :表示切换分支。 git checkout --file [fileName] :表示会用暂存区的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。 git checkout HEAD : 表示会用 HEAD 指向的 master 分支中的文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

git tag

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。 使用-a选项会添加一个标签的注解,可以当做备注,推荐使用。 使用git log --decorate --oneline命令就可以看到打的标签。 也可以给之前版本追加标签,只需要在最后加上版本号即可git tag -a v0.9 63007d5。 可以使用git tag命令查看所有的标签。

git tag v1.0

git tag -a v1.0

git tag -a v0.9 63007d5 # 给指定版本打标签

git log --decorate --oneline -5 #查看带标签日志

git tag # 查看所有标签

git tag -d v1.1 # 删除标签

git show v0.9 # 查看该版本修改的内容

Git有commit,为什么还要引入tag? “请把上周一的那个版本打包发布,commit号是6a5819e…” “一串乱七八糟的数字不好找!” 如果换一个办法: “请把上周一的那个版本打包发布,版本号是v1.2” “好的,按照tag v1.2查找commit就行!” 所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

五、分支管理 Branch

使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

5.1 创建分支

使用git branch (branchname) 可以创建一个分支。 使用git branch可以查看本地所有分支。

5.2 切换分支

使用git checkout (branch)命令切换分支。 使用git checkout -b (branchname) :表示创建分支并立即切换到新分支。

5.3 删除分支

使用git branch -d (branchname)命令删除分支:

注意:在当前分支上不能删除当前分支:

5.4 合并分支

使用git merge命令可以进行分支合并,示例: 首先我们创建出dev分支,切换到dev分支并修改text.txt文件,修改后commit提交。然后切换到master分之,执行git merge dev命令,即:将dev分支合并到当前分支(master),最后我们就可以在master分支看到在dev分支修改的内容。

git checkout -b dev #创建并切换到dev分支

git commit -m "create dev branch & update text.txt" # 在dev分支修改test.txt并commit提交

git checkout master # 切换回master分支

git merge dev #将dev分支合并到master分支

git branch -d dev # 合并完成之后将dev分支删除

六、撤销与回退

有关于Git的撤销与回退,一般就以下几个核心命令:

git checkoutgit resetgit revert

6.1 git checkout

未添加到暂存区的文件(但是是已被追踪的文件)(还未使用git add命令),可以使用git checkout命令将文件已修改的部分全部撤销(上次已经提交的部分不会被撤销)。已经添加到暂存区的文件(已经使用了git add命令),也可以使用git checkout命令进行撤销,是在使用了git add 命令之后改变的内容会被撤销。

git checkout 1.txt # 撤销1.txt所有修改的东西

git checkout . # 撤销当前目录所有操作

6.2 git reset

git reset HEAD --file #回退暂存区里的某个文件,回退到当前版本工作区状态

git reset –-soft 目标版本号 #可以把版本库上的提交回退到暂存区,修改记录保留

git reset –-mixed 目标版本号 #可以把版本库上的提交回退到工作区,修改记录保留

git reset –-hard #可以把版本库上的提交彻底回退,修改的记录全部revert。

如果代码已经添加到暂存区(已经使用了git add命令),但是还未commit提交,可以回退:git reset HEAD file #取消暂存,文件内容不变,只是文件状态改变

git checkout file #撤销修改,在使用add命令之后的内容的改变会被撤销

代码已经git commit了,但是还没有push,想要退回:git log --oneline -3 # 查看版本号

git reset --hard 67f2414 #回退到67f2414版本

另外,也可以使用git rm -r --cached 1.txt 命令,将文件从本地仓库回退到工作区,停止追踪文件,文件内容不变。如果代码已经push到远程仓库了,也可以使用reset回滚:git log --oneline -3

git reset --hard 9c5be25

git push origin HEAD --force

git reset --hard HEAD

git reset --hard HEAD~3 # 回退上上上一个版本

git reset –-hard bae128 # 回退到某个版本回退点之前的所有信息。

git reset --hard origin/master # 将本地的状态回退到和远程的一样

注意:谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。 HEAD 说明:

HEAD 表示当前版本

HEAD^ 上一个版本

HEAD^^ 上上一个版本

HEAD^^^ 上上上一个版本

可以使用 ~数字表示

HEAD~0 表示当前版本

HEAD~1 上一个版本

HEAD^2 上上一个版本

HEAD^3 上上上一个版本

git reset HEAD 命令用于取消git add 添加到暂存区的文件,内容不会改变。

6.3 git revert

如果代码已经推送到远程的话,还可以考虑revert回滚:

git log --oneline -4

git revert -n 62d6ac3

附录

https://www.runoob.com/git/git-basic-operations.html https://www.cnblogs.com/konglxblog/p/15216646.html

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: