从头学Git--(封捷)

版本控制工具(两类区别)

集中式:svn采用增量式管理
分布式:git采取文件系统快照的方式。	

获取帮助

git help <verb>
git <verb> --help
man git-<verb>

例如:输入git help config获取config命令的手册,这些命令很棒,
	因为你随时随地可以使用而无需联网。

初始化

git init
该命令将创建一个名为.git的子目录,这个子目录含有你初始化的
Git仓库中所有的必须文件,这些文件是git仓库的骨干。

签名

项目/仓库级别:仅在本地库中有效
系统用户级别:登陆当前操作系统的用户范围

采用就近原则,两者都有时采用项目级别。

具体命令:
	git config --global user.name "your name"
	git config --global user.email "your@example.com"

三种状态

1.工作区:在这里写文件,使用git status查看为红色。
2.暂存区:使用git add <file>将工作区的文件添加到此,为绿色。
3.Git仓库:使用git commit <file> -m "注释"将暂存区内容提交。

查看状态:git status

日志

使用git log查看完整的日志信息,但是信息条数太多看着就很费劲。
使用git log --pretty=oneline在一行中显示一条信息(完整hash值)。
使用git log --oneline更简单的显示,hash值截取前七位。
使用git reflog比上一个多显示了到某版本需移动几步。

版本控制

1.基于索引值
	git reset --hard [局部索引值]
	索引值显示:git reflog 
	
2.使用^符号(只能后退)
	git reset --hard HEAD^^  后退几步则几个^

3.使用~符号(只能后退)
	git reset --hard HEAD~3  后退几步写数字几

reset三个参数对比

1.--soft
	仅仅在本地库移动HEAD指针。
	
2.--mixed
	在本地库移动HEAD指针;重置暂存区。
	
3.--hard
	在本地库移动HEAD指针;重置暂存区;重置工作区。

删除文件的找回

1.git restore [file]     Git仓库->暂存区->工作区
2.git reset --hard HEAD  跳到指针指定位置

比较文件

1.git diff [file]
	将工作区文件和暂存区比较。
	
2.git diff [索引hash] [file]
	将工作区文件与本地库历史记录比较。
	不带文件名则比较多个文件。

分支

1.好处:
	Ⅰ.同时进行多个功能的开发,提高效率。
	Ⅱ.各个分支开发过程中,若某分支开发失败,对其他分支不影响。

2.创建分支:git branch [分支名]
3.查看分支:git branch -v
4.切换分支:git checkout [分支名]

5.合并分支:
	Ⅰ.切换到接受合并的主分支
		git checkout [被合并分支名]
	Ⅱ.执行合并命令
		git merge [有新内容的分支名]


6.解决冲突:
Ⅰ.当多个分支更改同一文件时,会产生冲突,需要手动合并。
Ⅱ.打开冲突文件,"<<HEAD"和"="中间的内容为当前分支修改的;
"
=“和”>>[分支名]"中间的内容为另一个分支修改的内容。
Ⅲ.手动保留一方修改的内容,另一方的内容和特殊符号全部清除。
Ⅳ.然后执行git add [file]将文件添加到暂存区。
Ⅴ.最后使用git commit -m "note"添加到仓库,注意不需要文件名。

hash算法

1.输入不同数据,若使用同一个hash算法,其结果长度相同。
2.输入的数据不变,可以保证其输出不变。
3.输入的数据有变化,其输出有变化,通常变化较大。
4.哈希算法不可逆。

远程操作

1.给远程库起别名	
	git remote add <name> https://github.com/haobye		
		查看:git remote -v  
		含义:fetch指取回,push指推送

1.1.补充
	git remote show <远程库别名>     查看该库详细信息
	git remote add <别名> <git网址>  对远程库设置别名
	git remote rm <远程库别名>	     删除其远程库别名
	git remote rename <旧名> <新名>  重新设置别名
	
2.推送
	git push <name> master
		推送master分支

3.克隆
	git clone https://github.com/haobye		
邀请成员加入团队,才可以共同进行操作,即以下几步。
邀请成员的方法请移步查看

远程库的拉取

1.将远程库的更新全部取回到本地:
	git fetch <远程库别名> <远程分支名>

1.1.查看取回的内容:
	git checkout <远程库别名/远程分支名>
		切换到内容更新的分支,查看其下文件即可。
	
2.在本地分支上合并拉取的远程分支:
	git merge <远程库别名/远程分支名>
	
3.远程库更新拉取并与本地合并:
	git pull <远程库别名> <远程分支名>
		关系为pull=fetch+merge,相当于合并执行。

协同开发的冲突

如果不是基于最新版的修改,不能推送push,必须先拉取pull。
拉取下来如果进入冲突状态MERGING,则按照<p id="clash">分支冲突</p>解决即可。

SSH登陆

如果没有凭据管理器,可以设置使用ssh,不用每次push都需要用户名密码,
为我们简化操作。

进入家目录:cd ~
删除.ssh目录:rm -rvf .ssh
生成.ssh密钥目录:ssh-keygen -t rsa -C git@github.com:haobye/test.git
将其目录下的id_rsa.pub的内容复制到GitHub上
	(用户头像-Settings-SSHandGPGkeys-New SSH key):
	cat .ssh/id_rsa.pub (title为标题,Key则放入复制的内容)
加入别名:git remote add ssh_test git@github.com:haobye/test.git
即可使用ssh连接:git push ssh_test master
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hao难懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值