Git仓库命令总结

目录

三个区四个状态

配置git账户

创建本地git库

把文件添加到版本库的(3步)

初始化

add 添加

commit提交

status状态

diff查看文件修改后的差异

rm删除文件

mv重命名文件

log 日志

reset撤销版本

恢复

二、分支管理

查看分支命令:

删除分支命令:

创建分支命令:

切换分支命令:

合并分支命令:

列出分支

列出分支基本命令:

创建并切换

分支合并

合并冲突

三、远程仓库

创建远程仓库

克隆仓库

SSH配置

添加远程仓库add

克隆远程仓库clone

推送push

创建远程分支

删除远程分支

拉取pull

忽略文件


三个区四个状态

1.工作区 (Working Directory)

工作时的目录

2.暂存区(Staging area)

暂存区保存了下次将要提交的文件列表信息。

3.版本库

不同版本库的历史记录

为什么要搞一个暂存区,先git add到暂存区,再git commit版本库?

通常一个版本是若干的新增代码源文件,现有源代码的修改或删除。这一系列操作也不是一下子完成,这时他们就暂存起来,等全部完成后,就一并提交。

四个状态:

工作区文件的四个状态,分别为:

modified: 已修改,提交已经暂存的更改,不会提交没有暂存的更改。(提交已经暂存的更改[绿色],不会提交没有暂存的更改)

deleted:已删除,不会提交。要add到暂存区

Untracked:未跟踪,表示没有暂存的新文件,不会被提交。

new:已添加索引,表示已经暂存的新文件,会提交。

配置git账户

$ git config --global  user.name "你的姓名"
$ git config --global user.email "email地址"
#查看
$ git config --list

创建本地git库

1.创建或准备项目工程文件夹

$ mkdir 文件名
$ cd 文件名
$ pwd
$ ls

2.初始化仓库

$ git init

把文件添加到版本库的(3步)

任意编写一个文件,保存到项目中。

1.创建或准备一个文件:readme.txt

hello git

注意:不能使用记事本,你可使用notepad++,vsCode,eclipse等

2.添加到仓库的暂存区

git add "添加的文件名"

你可以一次添加多个文件

3.提交更新

git commit -m "自定义提交上去的名字"

初始化

创建一个新的 git 版本库。这个版本库的配置、存储及一系列的操作信息会被保存到 .git 文件夹中,便于用户跟踪、管理。

#方法一:进入一个空目录,执行以下命令,这样就可以创建一个空的版本库(仓库)
$ git init
#方法二:创建一个指定名称的版本库
$git init 名称
#方法三:克隆远程仓库,git clone <url>
$ git clone https://gitee.com/mchpony.test1.git
#查看
$ ls -A

add 添加

#添加文件
$ git add .
#添加一个文件
$ git add "文件名"
#添加一个子目录中的文件
$ git add /path/to/file/HelloWorld.c
#支持正则表达式
$ git add ./*.java

commit提交

  • 工作区的文件是否通过git add命令添加到暂存区中;

  • 提交时必须使用-m选项添加提交的描述信息

# 提交时附带提交信息
$ git commit -m "添加Xxxx文件"
#直接提交,跳过添加暂存区,使用`-a`选项(不建议)
$ git commit -a -m "修改Xxxxx文件"

status状态

#显示分支,未跟踪文件,更改和其他不同
$ git status

可以通过-s选项,实现简洁方式查看状态。如:git status -sgit status --short

#简洁方式查看状态
$ git status -s
# $ git status --short
 M README				#文件在工作区已修改但未暂存
 MM Rakefile			#文件已修改暂存后又修改
 A lib/git.rb		#新添加到暂存区
 M lib/simplegitrb	#已修改且已暂存
 ?? LICENSE.txt		#新添加的文件,但未跟踪

diff查看文件修改后的差异

#查看工作目录中当前文件和暂存区域快照之间的差异
$ git diff
#查看已暂存文件与最后一次提交的文件差异
$ git diff --cached
#显示工作目录和最近一次提交不同
$ git diff HEAD

工作区&暂存区不一样,你可怎么处理

git add.

git rm | reset....

暂存区&版本库,你可怎么处理

git commit

git reset

工作区&版本库,你可怎么处理

git commit -a 同步到版本库

git reset 回退到上一版本,取消工作区的更新

rm删除文件

#删除工作区中指定文件
git rm 文件
#删除已经添加到暂存区的文件,要强制删除
git rm -f 文件
#从暂存区删除,但工作区保留
git rm --cached 文件
#递归删除,及如果后面跟的是一个目录作为参数,则会递归删除整个目录中的所有子目录和文件
git rm -r *

mv重命名文件

#重命名
$ git mv 文件名 新文件名

其实运行 git mv就相当运行了下面三条命令:

$ mv 1.txt ont.txt		#改名
$ git rm 1.txt			#删除原文件
$ git add one.txt		#添加one.txt

移动文件

# 移动
$ git mv 文件 路径/新文件

log 日志

# 显示所有提交
$ git log
# 显示某几条提交信息
$ git log -n 10
# 显示一行一个版本
$ git log --online 10

reset撤销版本

  • --soft:这个参数表示在版本库中回退到旧的版本。而最新的版本内容会移到暂存区保存。

  • --mixed: 这个参数表示在版本库中进行版本回退,同时重 置暂存区。(默认选项)

  • --hard:这个参数表示在版本库中进行版本回退,同时重置暂存区和工作区。

# 表示在版本库的master分支中回退到上一个版本
$ git reset --soft HEAD^

HEAD说明:

  1. HEAD表示回退到当前最新版本

# 回退到当前最新的版本,并重置暂存区
$ git reset --mixed HEAD
  1. HEAD表示回退到上一个版本

# 回退到上一个版本,并重置暂存区
$ git reset --mixed HEAD^

3.HEAD~N表示回退到上N个版本

#回退到上两个版本,并重置暂存区
$ git reset --mixed HEAD~2

4.回退指定版本

$ git reset 版本号

5.将本地的状态回退到和远程的一样

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

恢复

如果希望把销毁的版本恢复回来,首页使用git reflog命令,查询所有的操作记录,然后再根据撤销的提交编号,恢复回来即可。

# 查看操作记录
$ git reflog
353cab2 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^1
ef427a2 HEAD@{1}: reset: moving to ef427a2
353cab2 (HEAD -> master) HEAD@{2}: reset: moving to HEAD~1
ef427a2 HEAD@{3}: commit: 33
353cab2 (HEAD -> master) HEAD@{4}: commit: 22
df4cfa7 HEAD@{5}: commit (initial): 11
# 根据撤销的提交编号,恢复撤销的版本
$ git reset --hard ef427a2

查看本地仓库中的文件

git ls-tree --full-tree -r --name-only HEAD

二、分支管理

查看分支命令:

git branch

删除分支命令:

git branch -d (branchname)

创建分支命令:

git branch (branchname)

切换分支命令:

git checkout (branchname)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

合并分支命令:

git merge 分支名

你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。

列出分支

列出分支基本命令:

git branch

没有参数时,git branch 会列出你在本地的分支。

$ git branch
* master

此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。

创建并切换

git chexkout -b (branchname)

删除分支

删除分支命令:

git branch -d (branchname)

分支合并

git merge
$ git branch
* master
  newtest
$ ls
README        test.txt
$ git merge newtest
Updating 3e92c19..c1501a2
Fast-forward
 runoob.php | 0
 test.txt   | 1 -
 2 files changed, 1 deletion(-)
 create mode 100644 runoob.php
 delete mode 100644 test.txt
$ ls
README        runoob.php

1.创建分支newtest,并切换过来

2.在newtest分支新建一个文件,并删除文件

3.提交

4.切回master主分支

5.合并

以下是操作:

git beanch newtest
git branch
git branch -d testing
git branch
#去删除文件;新建
git add .
git commit -m ""
git log
ls
git checkout master
ls
#合并
newtest
git merge newtest
ls
git checkout newtest
ls
git checkout master

合并完后就可以删除分支:

$ git branch -d newtest
Deleted branch newtest (was c1501a2).

删除后, 就只剩下 master 分支了:

$ git branch
* master

合并冲突

合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

$ git branch
* master
$ cat runoob.php

案例:

1.确认合并,两个分支是否一样

2.在主分支修改Demo.java(添加一行,写xxx)并提交

3.切换newtest分支下,也修改Demo.java(添加一行,写yyy)并提交

4.合并,冲突会产生

#1.
ls
git branch
git checkout newtest
git branch
#2.
git checkout master
git commit -a -m "在java文件中添加xxx"
#3.
git checkout newtest
git commit -a -m "在newtest分支下打开java文件中添加yyy"
git checkout master
git checkout newtest
git log
git checkout master
git log
#4.
git checkout master
git merge newtest
git commit -a -m "解决了冲突"
git merge newtest
git branch
git checkout newtest
git checkout master
git merge newtest

案例:

#第一步
#创建文件
touch test1.txt
touch test2.txt
touch test3.txt
ls
git status
git add .
git status
cat test1.txt
cat test2.txt
cat test3.txt
git add .
git commit -a -m "主分支第一次创建"
git checkout -b branch1
git branch
ca test.txt
cat test2.txt
cat test3.txt
#第二步
#新建文件
touch test4.txt
git status
git add test4.txt
git status
#删除第二个文件
rm test1.txt
git status
git add test1.txt
git status
#重命名test2.txt
git status
git add t2.txt
git status
git add .
git status
#修改test3.txt
cat test3.txt
git status
git add test3.txt
git status
touch test6.txt
git status
git commit -m "在branch1中删除了test1,新增test4,重命名test2 -> 修改test3"
git diff
#第三步
git branch master
git branch
git checkout master
git status
git branch
git add test2.txt
git commit -m "主分支中修改test2"
ls
git checkout branch1
ls
#第四步
#切换主分支 合并
git branch
ls
cat test3.txt
cat test2.txt
cat t2.txt

三、远程仓库

创建远程仓库

克隆仓库

#基于HTTP协议
$ git clone 地址链接
#基于SSH协议
$ git clone 地址链接

SSH配置

创建SSH key

ssh-keygen -t ed25519 -C "邮箱号"

查看公钥

ssh -T git@gitee.com

添加远程仓库add

# 添加远程仓库
$ git remote add [shortname] [url]
# shortname : 别名,一般默认使用origin为远程仓库的别名
# url:远程仓库的URL地址

# 查看远程仓库
$ git remote

# 详细查看远程仓库
$ git remote -v
$ git remote --verbose

# 更详细查看:git remote show <remote>
# 可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息
$ git remote show origin
# 详细查看远程仓库
$ git remote -v

已经本地仓库,添加远程仓库

# 进入已存在仓库
$ cd existing_git_repo

# 添加远程仓库
$ git remote add origin git@gitee.com:zing168/test.git

# 推送
$ git push -u origin master

克隆远程仓库clone

# 克隆远程仓库、以及传递资料时,需要遵循一些网络协议
$ git clone <URL>

##

$ git pugh -v orgin masetr

推送push

$ git push -u origin "master"

通过git push命令,可以把本地仓库的内容提交/更新到远程仓库中。

1)推送内容到远程仓库的某个分支上

  • 语法一:git push <远程主机名> <本地分支名>:<远程分支名>

    • 远程主机名:一般使用远程主机的别名,默认的远程主机的别名为origin

  • 语法二:git push <远程主机名> <本地分支名>

    • 如果本地分支名与远程分支名相同,则可以省略冒号

# 把本地的master分支 推送到 origin主机的master分支上
$ git push origin master
$ git push origin master:master		# 同上

# 把本地当前分支 推送到 远程主机同名的的分支上
$ git push

# 如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
$ git push --force origin master

创建远程分支

# 基于指定的本地分支来创建的远程分支
$ git push <远程主机名> 本地分支名称:远程分支名称

# 基于master,创建远程分支testing
$ git push origin master:testing

删除远程分支

$ git push <远端> :远程分支名称
$ git push <远端> --delete 远程分支名称

$ git push yaya :test02
$ git push yaya --delete test02

拉取pull

# git pull <远程主机名> <远程分支名>:<本地分支名>
# 更新操作
$ git pull
$ git pull origin

# 把远程主机origin的master分支拉取过来,与本地的的testing分支合并
$ git pull origin master:testing


# 如果拉取的远程分支与当前分支合并,则可以省略冒号
# 把远程主机origin的 testing 分支拉取过来,与本地的的testing分支合并
$ git pull origin testing

#如果本地与远程都做更改了,从远程拉取时要带参数
git pull 远程名 远程分支名:本地分支名 --allow-unrelated-histories

忽略文件

$ cat .gitignore
*.[oa]	# 忽略所有以.o或.a结尾的文件
*~			# 忽略所有以~结尾的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值