git使用

本文是Git教程 By 廖雪峰 的学习笔记
设置git用户名和邮件地址

运行如下命令在编辑器中编辑您的配置文件:
	git config --global --edit
设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:
    git commit --amend --reset-author

创建版本库

mkdir learngit
cd learngit
git init

添加文件

vim readme.txt
	Git is a version control system.
	Git is free software.
git add readme.txt
git commit -m "注释"

修改文件

vim readme.txt
	Git is a distributed version control system.
	Git is free software.
git status	 #查看版本库的状态
git diff readme.txt  #查看文件修改
git add readme.txt
git commit -m "注释"

查看日志

 git log
 	commit f69bf8ce679fdf47b482a1534d98c348afe13f9f (HEAD -> master)
	Author: zhaozhenwei 
	Date:   Wed Oct 2 19:26:04 2019 +0800

    	append GPL

	commit 677fe3c8298fa998ad81efaa48006b5b54d2bcd5
	Author: zhaozhenwei 
	Date:   Wed Oct 2 19:12:00 2019 +0800

    	remove distributed

	commit 7e54e95b076620c445bdf20f6d9978a12a69ac58
	Author: zhaozhenwei 
	Date:   Wed Oct 2 19:10:26 2019 +0800

   		add distributed

	commit 0f14bc33e5dc7279cd67bcc7601c64edf604b538
	Author: zhaozhenwei 
	Date:   Wed Oct 2 19:07:37 2019 +0800

    	write a readme file

git log --pretty=oneline	#简单日志
	f69bf8ce679fdf47b482a1534d98c348afe13f9f (HEAD -> master) append GPL
	677fe3c8298fa998ad81efaa48006b5b54d2bcd5 remove distributed
	7e54e95b076620c445bdf20f6d9978a12a69ac58 add distributed
	0f14bc33e5dc7279cd67bcc7601c64edf604b538 write a readme file

版本

	HEAD^		#上一个版本
	HEAD^^  		#上两个版本
	HEAD~1		#上一个版本
	HEAD~100	#上100个版本

版本回退

git reset --head HEAD ^
git reset --head HEAD~1
git reset --head f69bf8ce67		#回到指定版本

git的版本是由指针进行控制的。
git使用_第1张图片
版本回退2

git reflog		#记录提交的命令

f69bf8c (HEAD -> master) HEAD@{0}: reset: moving to f69bf8ce67
7e54e95 HEAD@{1}: reset: moving to HEAD^
677fe3c HEAD@{2}: reset: moving to HEAD~1
f69bf8c (HEAD -> master) HEAD@{3}: commit: append GPL
677fe3c HEAD@{4}: commit: remove distributed
7e54e95 HEAD@{5}: commit: add distributed
0f14bc3 HEAD@{6}: commit (initial): write a readme file

git reset --hard 677fe3c		#根据前面的版本677fe3c进行版本回退

工作区与暂存区

git add filename		#将文件添加到暂存区。
git commit				#将暂存区内的文件提交到当前分支

git使用_第2张图片
撤销修改

git reset HEAD file	把暂存区的修改撤销掉(unstage),重新放回工作区。
git checkout -- readme.txt	丢弃工作区中的修改

删除文件

rm test.txt			#删除本地文件
git rm test.txt		#删除版本库文件

当本地文件删除之后,版本库中还存在时
	git checkout -- test2.txt 	#用版本库中的版本替换工作区中的版本,无论工作区是修改还是删除,都可以“一键还原”。

远程仓库

1.可以自己搭建一个git服务器,24小时开机,工作人员从该“服务器”上克隆一份到自己的电脑上。
	并把自己的提交推送到服务器仓库中。也可以从服务器仓库拉去别人的提交
2.通过GitHub充当git服务器
	2.1 GitHub上注册账号
	2.2 本地git仓库和GitHub服务器仓库之间的传输是通过ssh加密的。因此需要在本地用户主目录下创建
		.ssh目录,同时又id_rsa(私钥)和id_rsa.pub(公钥)这两个文件。
		ssh-keygen -t rsa -C "[email protected]"
	2.3 登录GitHub,将本地ssh添加到GitHub中

git使用_第3张图片
git使用_第4张图片
git使用_第5张图片
git使用_第6张图片

	2.4 添加远程仓库

git使用_第7张图片
git使用_第8张图片
如果本地没有Git仓库,则通过1进行创建并关联
如果本地已经有了Git仓库,则通过2进行关联
git push #将本地库推送到远程仓库中,第一次推送时,加上参数“u”,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地master分支与远程master分支关联,以后再进行推送时就可以简化命令: git push origin master
git使用_第9张图片
远程库克隆

1.登录GitHub,创建新的仓库:gitskills

git使用_第10张图片

2.从远程仓库进行克隆
	git clone [email protected]:zzw19940201/gitskills.git				#ssh格式
	git clone https://github.com/zzw19940201/gitskills.git				#http格式

git使用_第11张图片
git使用_第12张图片

3.克隆完成之后,可以在本地看到相关目录

git使用_第13张图片

4.克隆地址默认使用的是SSH协议,在使用HTTPS协议时,速度会很慢,每次推送都要输入口令
	有些公司只开放了HTTPS协议,无法使用SSH协议,只能使用https协议。

分支管理

1.创建分支,并切换分支
	git checkout -b dev
	切换到一个新分支 'dev'
		以上命令是以下两个命令的结合
			git branch dev			#创建分支
			git checkout dev		#切换分支
2.git branch		#查看分支,git branch会列出所有分支,当前分支使用"*"标识
	* dev
	  master
3.git merge dev	#将制定分支合并到当前分支
4.git branch -d dev		#删除指定分支

小结:
	查看分支:git branch
	创建分支:git branch branch_name
	切换分支:git checkout branch_name
	创建+切换分支:git checkout -b branch_name
	合并分支:git merge branch_name
	删除分支:git branch -d branch_name

解决冲突

1.打开冲突的文件
	<<<<<<< HEAD
	qqqqqqqqqqqqqqqqqqqqqq
	=======
	issssssssssssssssssssssssssss
	>>>>>>> feature
2.将发生冲突的地方修改掉,修改方法和发生冲突的分支的提交人进行商议(怎么解决自己看着办)
	qqqqqqqqqqqqqqqqqqqqqq
	issssssssssssssssssssssssssss
3.将修改后的文件进行提交
	git add fileName
	git commit -m "注释"

命令总结
	git checkout -b feature1			# 创建并切换分支
	git checkout master					# 切换分支
	git merge feature1					# 将feature1内容合并到当前分支
	git log --graph --pretty=oneline --abbrev-commit		#查看分支情况
	git branch -d feature1				# 删除分支feature1
	git log --graph							# 查看分支合并图

分支管理策略

1.git merge --no-ff -m "merge with no-ff" dev
	--no-ff 	# 禁用Fast forward,提交时dev分支会是一个新的commit
				# 普通模式合并,合并后的历史有分支,fast forward看不出曾经做过合并。

git使用_第14张图片
Bug分支

1.git stash			# 将分支保存起来,可以恢复继续使用
2.git checkout master			# 切换到要修改bug的分支
3.git checkout -b issue-101		# 创建修改bug的分支
4.git checkout master				# 切换回要修改bug的分支
5.git merge --no-ff -m "merged bug fix 101" issue-101		#合并分支
6.git checkout dev					# 切换回原来工作的分支
7.git stash list							# 查看保存的分支
8.1. git stash apply					# 恢复保存,stash内容不删除,	
		git stash drop					# 删除保存的分支
8.2. git stash pop						# 恢复保存的分支的同时,将保存的分支删除
8.3. git stash apply stash@{0}		# 恢复指定的保存分支

强行删除分支

1.git branch -d feature-vulcan			# 删除分支feature-vulcan,在该分支的内容未进行合并时,会报错,不允许删除
	git branch -D feature-vulcan		# 强行删除分支

多人协作

1.git remote				# 查看远程库的信息
2.git remote -v				# 显示更详细的信息
3.git push origin master	# 将本地分支上的提交推送到远程库
	git push origin dev
		master是主分支,时刻与远程同步
		dev是开发分支,团队所有成员要在上面协调工作,因此要与远程同步
		bug分支用于本地修复bug,没有必要推送到远程
		feature分支取决于是否在该分支上协同开发
4.git checkout -b dev origin/dev			# 创建远程origin的dev分支到本地,记得去项目目录下
5.git add filename	
	git commit -m "注释"						# 将dev分支上的提交推送到远程
6.git pull				# 拉取最新的分支
7.git branch --set-upstream dev origin/dev	# 设置本地分区和远程origin/dev分支的链接

总结:多人协作的工作模式
	a.首先,通过git push origin branch_name 推送自己的修改
	b.如果推送失败,那么远程分支比本地更新,先用git pull进行合并
	c.如果合并有冲突,解决冲突,在本地进行提交
	d.如果没有冲突或者冲突解决,在使用git push origin branch_name进行推送
	
	本地新建的分支不推送到远程,他人不可见。
	本地创建和远程分支对应的分支,git branch -b branch_name origin/branch_name,本地分支个远程分支最好一致
	建立本地分支和远程分支的联系,git branch --set-upstream branch_name origin/branch_name

标签管理

1.标签,指向某个commit的指针
2.标签管理
	2.1 切换到要打标签的分支
		git checkout master
	2.2 打标签
		git tag	v1.0
	2.3 查看标签
		git tag
	2.4 默认标签是打在最新提交的commit上的,
			如果想在历史提交的commit上打标签,找到历史提交的commit,打上标签即可
				git log --pretty=oneline --abbrev-commit
				git tag v0.9 6224937	# 6224937 提交时的版本号
	2.5 标签不是按照时间顺序列出,而是按照字母序排序的。
		可以通过git show tagName查看标签信息。
	2.6 创建带有注释的标签
		git tag -a v0.1 -m "注释" 		# -a:标签名		-m:注释
	2.7 删除标签
		git tag -d v0.1 	# 删除本地标签
	2.8 将标签推送到远程
		git push origin tagname		# 推送某个标签到远程
		git push origin --tags		# 推送所有未推送的标签到远程
	2.9 删除远程
		2.9.1 先删除本地分支
			git tag -d v0.2
		2.9.2 删除远程分支
			git push origin :refs/tags/v0.9
	
	3.0 总结
		git push origin tagname						# 见分支tagname推送到远程
		git push origin --tags						# 将所有未推送的标签推送到远程
		git tag -d tagname 							# 删除指定标签
		git push origin :refs/tags/tagname 			#删除远程标签

你可能感兴趣的:(Mac,git,git)