Git使用

git

分布式版本控制系统

版本控制系统分类:

  • 本地版本控制

    对文件的每次更新做记录,可以对每个版本做一个快照(适合个人使用)

  • 集中版本控制

    所有版本的数据都存储在服务器上,协同开发者同步更新/上传自己的修改。代表的有:SVN等

  • 分布式版本控制

    代表有:git

    所有的版本信息仓库全部同步到本地的每个用户。

Git和SVN区别:

​ SVN是集中式版本控制系统。版本库集中放在中央服务器上,工作时,用自己的电脑从中央服务器得到最新版本,然后工作,工作完成之后,把自己做的推送到中央服务器上。必须联网才可以工作

​ Git是分布式的版本控制系统。没有中央服务器,每个人的电脑就是一个完整的版本库。

李纳斯 托沃滋(Linus Benedic Torvalds):Linux和Git之父。

配置

# 配置用户名
git config --global user.name "zhangsan"

# 配置email
git config --global user.email "[email protected]"

# 显示当前git的配置信息
git config --list

Git使用_第1张图片

WorkSpace:工作区,平时工作存放代码项目的地方。

Index/Stage:暂存区,存放临时改动。

Respository:仓库区(或本地仓库),这里有提交的所有版本的数据。

Remote:远程仓库,托管代码的服务器。比如:GitHub 、Gitee。有时候公司会自己搭建自己的git服务器(可以使用gitlab搭建)

git项目的创建及克隆

1、创建仓库

# 在当前目录新建一个Git仓库
git init
# 执行之后多出一个.git目录,版本信息在这个目录中。

2、克隆远程仓库

git clone URL

git文件操作

1、文件的四种状态:

  • Untracked:未跟踪。没有加入到git库,不参与版本控制
  • Unmodify:文件已入库,未修改
  • Modify:文件已修改
  • Staged:暂存状态

2、添加所有文件到暂存区

# 添加所有文件到暂存区
git add .

3、提交暂存区的内容到本地仓库

# 提交暂存区的内容到本地仓库 -m “提交的信息”
git commit -m

4、查看文件状态

# 查看指定文件状态
git status [filename]

# 查看所有文件状态
git status

5、忽略上传文件

.gitignore文件中添加信息,表示需要忽视上传的文件。

# 为注释
*.txt 		 # 忽略所有.txt文件
!lib.txt  # lib.txt除外
# 在前在后的区别,在前代表往上忽略,在后代表往后忽略
/temp      # 仅仅忽略根目录下的到temp文件夹,不包括其他目录
build/ 		 # 忽略build/目录下的所有文件
doc/*.txt  # 忽略doc/notes.txt,但不忽略doc/server/arch.txt

git一般操作

1、 创建本地git仓库

在某个文件夹中执行命令,将这个文件夹作为本地git仓库

(base) MacBook-Pro gitdemo % git init
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示:	git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main''trunk''development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示:	git branch -m <name>
已初始化空的 Git 仓库于 /Users/gitdemo/.git/

2、 添加所有文件到暂存区

git add .

commit之前比较比较文件的不同(比较暂存区和工作区的不同)

git diff filename

3.、将暂存区文件提交到本地仓库

git commit -m '提交信息'

4、(第一次需要)在本地仓库上将本地仓库和远程库关联

# 本地库关联一个叫做origin的(指向gitee)远程库
git remote add origin https://gitee.com/xixihahahahaha/git  

# 查看所有远程库信息
git remote -v
# 查看某个远程库信息
git remote show [remote]

# 删除远程仓库
git remote rm name

# 修改仓库名
git remote rename old_name new_name

# 一个本地库可以同步到多个远程库

5、将本地分支的版本上传到远程仓库并合并

# 命令格式
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master:master
# 本地分支和远程分支名相同,可以省略冒号
git push <远程主机名> <本地分支名>
# 例子
将本地分支develop push到远程仓库origin wrw_fp16_2D_RS1x7_pad0x3的分支

Git使用_第2张图片

git分支管理

# 列出分支(列出本地分支)
git branch

# 列出所有分支(包括本地/远程分支)
git branch -a

# 列出远程分支的名字
git branch -r

# 创建分支
git branch (branchname)

# 切换分支
git checkout (branchname)
# 创建新分支的同时切换到该分支
git checkout -b (branchname)
git switch (branchname)

# 删除远程仓库的分支
# 表示删除origin主机的master分支
git push origin --delete master
# 删除本地的分支
git branch -d newbranch

git clone项目不全问题:

使用一下命令clone项目时会出现项目中的子模块(submodule)不能完整clone

git clone github/gitee链接

解决方案:

第一步:

首先执行git clone命令,但是不要加–recursive将项目主体clone下来。不用管报错,执行完成就OK

git clone github/gitee项目链接

第二步:

cd到git clone的主目录下(因为有.git文件),然后执行:

git submodule update --init --recursive

查看被人的合并(merge)信息

1 查看合并提交

(1)正在进行合并(merge)操作的情况下
git log –merge
(2)没有正在进行合并操作的情况下
git log –merges

2 查看特定合并提交的详细信息

git show

解决地址合并冲突

当不同人对相同文件的相同行进行不同的更改时,会发生合并冲突。只有解决所有冲突,才能合并github上的拉取(pull)请求
(1)git clone URL
Git使用_第3张图片Git使用_第4张图片
git clone下来得本地内容:
Git使用_第5张图片
被别人修改后得远程仓库内容
Git使用_第6张图片
在这里插入图片描述
Git使用_第7张图片
Git使用_第8张图片
在这里插入图片描述
Git使用_第9张图片
在这里插入图片描述
Git使用_第10张图片
Git使用_第11张图片

你可能感兴趣的:(git,学习,github,gitee)