Git 使用手册

Git官方文档 https://git-scm.com/book/zh/v2

简单git操作可以分以下五部(提交到master,不是分支)

-----------------------------------------------------------

1. git clone https://github.com/HongChao6/algorithm.git ->从自己仓库获取代码

2. git add . ->将修改添加至本地缓存 3. git commit -m 'msg' ->将本地缓存保存到本地仓库中  4.1 git pull origin master ->将服务器的代码更新到本地仓库中

4.2 git pull origin master --rebase  ->更新到本地(并融合)

git add -u 重新添加融合的文件 -u 是只提交融合的文件

git rebase --continue  这样git会继续apply余下的补丁

5. git push origin HEAD:refs/for/master ->将本地仓库推送至服务器

-------------------------------------------------------------------

二、不提交 拉取

$ git stash --> 将当前修改从本地移植到缓存区

或者 $ git stash save "work in progress for foo feature" -->增加message

$ git stash list --> 查看缓存区 存放的版本

$ git pull origin master --rebase --> 拉取

$ git stash pop --> 将缓存栈区 栈顶版本 移回 本地

 

扔掉缓存区版本

$ git statsh clear --> 删除所有缓存的stash

$ git statsh drop stash@{0} --> 删除缓存 stash@{0}

 

查看指定stash的diff

$ git stash show -->后面可以跟着stash名字,显示该版本中文件的差异

-------------------------------------------------------------------

git add 的几种使用方法

git add -A 保存所有的修改

git add . 保存新的添加和修改,但是不包括删除

git add -u 保存修改和删除,但是不包括新建文件。

如果只想提交某个文件,可以使用git add 路径/文件名 或者 git add 路径/

----------------------------------------------------------------------

git pull –rebase 理解

这个命令做了以下内容:

a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)

b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突

c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并

所以 rebase 在拉代码前要确保你本地工作区是干净的,如果你本地修改的内容没完全 commit 或者 stash,就会 rebase 失败。

-----------------------------------------------------------------------

简单对比git pull和git pull –rebase的使用

1. 假设有3次提交A,B,C,在远程分支origin的基础上创建一个名为"mywork"的分支并提交了,同时有其他人在"origin"上做了一些修改并提交了。

2. git pull = git fetch + git merge

用git pull命令把"origin"分支上的修改pull下来与本地提交合并(merge)成版本M,但这样会形成图中的菱形,让人很困惑

3. git pull –rebase = git fetch + git rebase

创建一个新的提交R,R的文件内容和上面M的一样,但我们将E提交废除,当它不存在(图中用虚线表示)。由于这种删除,小李不应该push其他的repository.rebase的好处是避免了菱形的产生,保持提交曲线为直线,让大家易于理解

图示:

merge

rebase

区别:

1. 发生冲突时,分支的形状

  1. rebase 是一条分支线
  2. merge 是菱形分支

2. 冲突的解决方式:

  1. rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令git add -u ## git rebase --continue ## 继续后才会出现第二个冲突,直到所有冲突解决完
  2. merge 是所有的冲突都会显示出来

总结

rebase 工作流:

git pull --rebase 
while(存在冲突) {
    git status
    找到当前冲突文件,编辑解决冲突
    git add -u
    git rebase --continue
    if( git rebase --abort )
        break; 
}

git push origin HEAD:refs/for/master

merge工作流 :

git pull  (或fetch && merge) 
编辑冲突文件
git pull

git push origin HEAD:refs/for/master

-------------------------------------------------------------------------------

其他命令

git mergetool   --> 使用可视化工具解决冲突

git diff readme.txt --> 若 readme.txt文件被改了,查看改了什么内容

gitk  --> 使用可视化工具 gitk 查看修改状态

git status  ->命令是查看所有信息(提交状态)

git status -s(--short)  ->查看短信息

git checkout –readme.txt --> 把readme.txt文件在工作区做的修改全部撤销

rm b.txt --> 从版本库中删除 b.txt 文件

------------------------------------------------------------------------------------------------------------

反悔 重置 功能

git log   -->查看修改的过程( 信息比较多 )

git reset 前六位过程码  -->返回某一过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值