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. 发生冲突时,分支的形状
2. 冲突的解决方式:
总结
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 前六位过程码 -->返回某一过程