奇怪的知识又增加了3——git

Git简介

开源的分布式版本控制系统

# 安装
	sudo apt install git

常用的基本操作

# 下载远程库代码
	git clone <网址>  			# 当http连不上时,把http改成git
	git clone -b <分支名> <网址>
	git clone --recursive <网址> # 子模块一并下载


# 查看、更新、切换、新建与删除分支
	git branch -av						# 查看所有分支
	git remote update origin -p			# 更新远程分支列表
	# 选项
	# -a, --all             list both remote-tracking and local branches
	# -v, --verbose         show hash and subject, give twice for upstream branch
	
	git branch branchName				# 创建分支
	git checkout branchName				# 切换分支
	git checkout -b branchName			# 创建并切换到分支,等同于上面两条
	git branch -d branchName			# 删除本地分支

# 添加新文件到工程
	git add <file1> <file2>  			# 可添加一个或多个文件到

# 查看是否有未提交的修改(包括新建文件和修改文件)
	$ git status

# 查看具体的修改内容,删除的内容为红色减号,增加的内容为绿色加号	以行为单位,提示
	git diff			# 所有修改
	git diff <file1>

# 提交修改
	git commit <file1> <file2> -m "message" 	# 提交一个或多个文件的修改  -m 注释提交的原因
	git commit -a -m "message" 					# 提交所有修改

# 查看提交日志
	git log 
	git log --pretty=oneline					# 每条commit用一行显示	分布式控制,避免版本冲突,因此commitID不是1234
	git reflog									# 记录每一次的命令,可以查看干掉的日志,查看历史版本号/命令

# 回退
	# 方式一:reset	
		git reset --hard HEAD^  				# 回退:HEAD表示当前版本 一个^表示上一个,两个^表示上上个,HEAD~100表示上100个
		git reset --hard <刚干掉的版本号>			# 回退到指定版本号,比如错误回退后,可以根据版本号再还原回去
	# 方式二:revert
		git revert -n <版本号>

# 上传远程与更新本地
	git push [选项] origin <分支名>				# 将<分支名>推送到origin主机的对应分支
	# 选项
	# -f	强推
	# -u	如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push

	# 拉取
	git fetch <远程主机名,如origin> <分支名> 		# 拉取
	git pull <远程主机名,如origin> <分支名>		# 拉取并merge

# 合并分支
	git merge <要合并到本分支的分支名> 

# 恢复误删分支
	git branch <分支名> <hash_val>

创建与配置本地仓库

# 创建仓库目录
	$ mkdir repo_test1 && cd repo_test1

# 初始化
	$ git init 
		# 这时,会在该目录下创建一个 .git 目录用于跟踪管理版本库,并提示
		Initialized empty Git repository in [自己的目录]/git_test/repo_test1/.git/
	
# 配置仓库所有者信息
	# Omit --global to set the identity only in this repository.
	$ git config --global user.email "you@example.com"
	$ git config --global user.name "Your Name"

关联本地与远程仓库

先有远程仓库

  1. 建立远程仓库
  2. git clone 到本地仓库

先有本地仓库
( 待补充… )
关联本地仓库与远程仓库

关于回退

  1. 回退方式一:git reset,适用场景:最近几个错误版本全部舍弃
    在这里插入图片描述
  2. 回退方式二 :git revert,适用场景:回退中间某个版本,保留最近版本
    在这里插入图片描述
    !!! git reset --hard 撤销到某次提交,git revert 撤销某次提交,一般建议用revert
# 查看提交日志
	git log --pretty=oneline
	
# 回退方式一 git reset	
	$ git reset --hard <版本号>
# 推上去,使用reset时,如果用不加选项“-f”会报错,因为本地库HEAD指向的版本比远程库的要旧
	$ git push -f origin <分支名> 

# 回退方式二 git revert
	$ git revert -n <版本号>
# 推上去
	$ git push origin <分支名>	
		
# 更新本地
	$ git pull

修改历史commit

https://blog.csdn.net/lxf0613050210/article/details/52525083 每一个commit都要单独修改。迫不得已不要修改,需要强制commit

摘抄

master & origin/master

在 clone 完成之后,Git 会自动为你将此远程仓库命名为 origin(origin 只相当于一个别名,运行 git remote –v 或者查看 .git/config 可以看到 origin 的含义),并下载其中所有的数据,建立一个指向它的 master 分支的指针,我们用 (远程仓库名)/(分支名) 这样的形式表示远程分支,所以 origin/master 指向的是一个 remote branch(从那个 branch 我们 clone 数据到本地),但你无法在本地更改其数据。
同时,Git 会建立一个属于你自己的本地 master 分支,它指向的是你刚刚从 remote server 传到你本地的副本。随着你不断的改动文件,git add , git commit,master 的指向会自动移动,你也可以通过merge(fast forward)来移动 master 的指向。
————————————————
原文链接:https://blog.csdn.net/weixin_34075268/article/details/85869357

pull & clone & fetch

从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
git pull相当于是从远程获取最新版本并merge(合并)到本地 git pull = git fetch + git merge,git fetch更安全一些
————————————————
版权声明:本文为CSDN博主「zhou_xiaomiao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhou_xiaomiao/article/details/53185712

git fetch 将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
git pull 将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

参考

  1. https://blog.csdn.net/lvsehaiyang1993/article/details/80821976
  2. GitHub进行版本回退
  3. git checkout 命令详解
  4. Git恢复之前版本的两种方法reset、revert(图文详解)
  5. git clone、git pull和git fetch的用法及区别
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值