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.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
所以 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的好处是避免了菱形的产生,保持提交曲线为直线,让大家易于理解
- rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令git add -u ## git rebase --continue ## 继续后才会出现第二个冲突,直到所有冲突解决完
- merge 是所有的冲突都会显示出来
git pull --rebase
while(存在冲突) {
git status
找到当前冲突文件,编辑解决冲突
git add -u
git rebase --continue
if( git rebase --abort )
break;
}
git push origin HEAD:refs/for/master
git pull (或fetch && merge)
编辑冲突文件
git pull
git push origin HEAD:refs/for/master
-------------------------------------------------------------------------------
git diff readme.txt --> 若 readme.txt文件被改了,查看改了什么内容
git status -s(--short) ->查看短信息
git checkout –readme.txt --> 把readme.txt文件在工作区做的修改全部撤销
------------------------------------------------------------------------------------------------------------