Git基本操作命令



**

创建仓库

**,用于被git管理

第一步:

bash 复制代码
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

第二步:

通过git init命令把这个目录变成Git可以管理的仓库:

bash 复制代码
$ git init

**

提交代码

**:

第一步,用命令git add告诉Git,把文件添加到仓库:

bash 复制代码
$ git add readme.txt

执行上面的命令,没有任何显示,这就对了,Unix的哲学是"没有消息就是好消息",说明添加成功。

第二步,用命令git commit告诉Git,把文件提交到本地仓库:

bash 复制代码
$ git commit -m "备注信息"

多处修改提交:多次add,最后一次commit

第三步,git push 命令用于从将本地的分支版本上传到远程并合并。

命令格式如下:

git push <远程主机名> <本地分支名>:<远程分支名>

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

git push <远程主机名> <本地分支名>

实例

以下命令将本地的 master 分支推送到 origin 主机的 master 分支。

bash 复制代码
$ git push origin master

相等于:

bash 复制代码
$ git push origin master:master

**

下载代码:

**

下载1. git clone将其他仓库克隆到本地

bash 复制代码
$ git clone <版本库的url>     #这样就会在本地生成一个目录,该目录与远程仓库同名
bash 复制代码
$ git clone <版本库的网址> <本地目录名>    #本地目录与远程仓库不同名怎么办??将目录名作为git clone命令的第二个参数

下载2. git pull

git pull是拉取远程分支更新到本地仓库的操作。比如远程仓库里的学习资料有了新内容,需要把新内容下载下来的时候,就可以使用git pull命令。事实上,git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)。

即:git pull = git fetch + git merge

bash 复制代码
注:git fetch不会进行合并,执行后需要手动执行git merge合并,而git
pull拉取远程分之后直接与本地分支进行合并。更准确地说,git pull是使用给定的参数运行git fetch,并调用git
merge将检索到的分支头合并到当前分支中。

git pull的用法:

bash 复制代码
$ git pull <远程主机名> <远程分支名>:<本地分支名>
bash 复制代码
$ git pull origin master:branchtest   # 举例:将远程主机origin的master分支拉取过来,与本地的branchtest分支合并。

如果将冒号和后面的branchtest去掉,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并。

以上的git pull操作如果用git fetch来表示:

bash 复制代码
$ git fetch origin master:brantest
$ git merge brantest

**

冲突解决:

**
1.冲突产生场景:

当两个分支(不是父子关系)对同一个文件进行了修改(不论修改的什么地方),提交到本地仓库后进行合并,会产生冲突,只要两个分支有合并操作就可能冲突,具体来说,本地和本地分支合并或本地和远程分支pull或push都有可能产生冲突

如果分支是父子关系,那么合并时不会产生冲突,会合并成功,比如基于master分支创建a分支,在master分支和a分支对同一个文件进行修改,进行merge操作,不会产生冲突。

下面介绍常见的两类冲突解决步骤:本地和本地分支冲突,本地和远程分支冲突

1.1本地和本地分支冲突:

bash 复制代码
#####构造本地冲突########
1、创建本地仓库
    mkdir test_git
    cd test_git
    git init
2、在master分支新建a和b分支
    git checkout -b a
    git checkout -b b
3、在b分支新建f.txt文件,修改保存,提交本地仓库    
    vim f.txt
    输b,wq保存退出
    git add .
    git commit -m 'b'
3、在a分支新建f.txt文件,修改保存,提交本地仓库
    git checkout a
    vim f.txt
    输a,wq保存退出
    git add .
    git commit -m 'a'
4、合并b分支,提示产生冲突
    git merge b

#######解决本地冲突######
1、进入产生冲突的文件
	vim f.txt
2、修改文件内容,wq保存退出
3、git add标记冲突已解决,将解决后的版本commit提交到本地仓库
	git add .
	git commit -m 'fix conf'
4、此时a分支已经是解决完冲突后的版本,而b分支还是冲突前版本,不是最新版,所以还需要切换到b分支,合并a分支
	git checkout b
	git merge a

合并完成b和a分支内容一样都是解决完冲突后的版本

1.2本地和远程分支冲突:

这种冲突指本地分支与远程分支pull或push时出现。

bash 复制代码
####1、构造本地和远程冲突#####
1、在本地b分支新建f.txt文件,输入内容bbb并保存,提交到本地仓库
	touch f.txt
	echo bbb >> f.txt
	git add .
	git commit -m 'b'	
2、在远程仓库b分支也新建一个f.txt文件,输入内容aaa保存(目的是模拟其他用户更改相同文件)

3、push本地仓库b分支代码,出现报错,原因是远程有一部分内容在本地没有,解决办法git提示了:需要先使用git pull同步一下远程分支代码

####2、解决本地远程冲突#####
1、按照提示,先pull到本地,这时会提示f.txt文件有冲突
	git pull
2、打开冲突文件f.txt,修改冲突并保存
	vim f.txt
3、git add标记冲突已解决
	git add .
4、提交冲突解决,commit完成后相当于冲突解决快照已保存,此时冲突处理完成
	git commit -m 'fix conflix'	
5、推送到远程
	git push

注:上面以push为例介绍了本地远程分支冲突解决过程,如果是pull时的冲突,更简单,过程包含在push产生冲突的解决步骤里了

另外补充:

bash 复制代码
$ git reset --hard HEAD^    

HEAD^的意思是上一个版本,也可以写成HEAD~ 1 ,如果你进行了2次commit,想都撤回,可以使用HEAD~2

相关推荐
SiYuanFeng12 小时前
新手学Git:如何把本地 Git 项目上传到 GitHub
git·github
前端若水14 小时前
git回退并合并分支操作
git
程序员鱼皮19 小时前
Git WorkTree 是什么?凭什么能让 AI 编程效率翻倍?
git·ai·程序员·编程·ai编程
懵逼的小黑子21 小时前
git与远程仓库创建连接
git
前端若水1 天前
Git 撤销与恢复完全指南(超级详细版)
大数据·git·elasticsearch
golang学习记1 天前
Git 2.54 来了,这个新命令让我终于敢重写历史了
git·后端
其实防守也摸鱼1 天前
AWVS下载和安装保姆级教程
linux·服务器·git
前端若水1 天前
Git 可以做的所有操作(完整分类)
大数据·git·elasticsearch
叹一曲当时只道是寻常1 天前
Reference 工具安装与使用教程:一条命令管理 Git 仓库引用与知识沉淀
人工智能·git·ai·开源·github
前端若水1 天前
Git 仓库管理命令完全指南(超级详细版)
大数据·git·elasticsearch