初始化
git init
添加新单位
git add .
提交单位
git commit
查看git状态
git status
查看提交历史
git log
回到上一个版本 HEAD^ 上上个版本是HEAD^^ ,前十个版本是HEAD~10
git reset --hard HEAD^
如果后悔,还想回到刚才的最新版本(只需要输入几位就好了,git会自动去找)
git reset --hard 345435
如果命令行已经关闭了, 则可以输入以下命令查看
git reflog
如果想放弃本次add 和commit的内容,回到上一个add 或者commit的状态
git checkout -- a.txt
如果修改已经add到了stage , 则先将信息拉回工作区,再从工作区撤销修改
git reset HEAD a.txt
如果你已经发布到了本地版本库, 还可以通过前面的版本回退回到过去..
删除
rm c.txt
本地已经删除,但是git没有更新,所以
1.确认删除
git rm c.txt
git commit -m 'remove c'
2.取消删除 , 可以还原
git checkout -- c.txt
git 工作区/暂存区概念详见
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000
工作区如果有更改, 一定要先git add到缓存区 , 保证缓存区最新之后在git commit .
远程库
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
创建新分支,并切换
git checkout -b dev
其实相当于两句代码,创建:git branch dev
切换:git checkout dev
查看当前分支,和所有分支情况
git branch
回到master分支, 合并dev分支的最新修改内容
git merge dev
删除分支
git branch -d dev
分支冲突
git merge 出现冲突之后, 可以找到冲突的文件,进行修改 ,修改之后再重新add commit , 后面变为下图所示
加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git merge --no-ff -m "merge with no-ff" dev
bug 分支
手头工作做到一半,需要去改一个bug,切换到一个bug分支
现在dev分支提交缓存
git stash
在切换到bug分支,解决完毕bug以后,切换到dev
查看当前的缓存目录
git stash list
选择以何种方式应用缓存
1.git stash apply
此方式恢复后stash的内容不会删除 需要使用 git stash drop
来手动删除
2.git stash pop
此方式恢复之后,stash的内容会自动删除
多人模式下的分支开发和推送远端:
首先,可以试图用git push origin branch-name
推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull
试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name
推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
commit 的版本号码太过于无序 , 可以使用tag标签来管理 一个tag标签对应一个标记~
给当前版本打标记
$ git tag v1.0
对过去的commit号码6224937打标签
git tag v0.9 6224937
显示标签对应的信息
git show v0.9
标签部分未完待续…..