git--笔记
git add 文件时,出现报错
LF will be replaced by CRLF in 文件夹
这是由于windows中的换行符为CRLF,而linux中为LF
所以需要首先,删除git:
$ rm -rf .git //删除.git
$ git config --global core.autocrlf false//禁用自动转换
然后重新执行
$ git init
$ git add 文件
第一步是
$ git add
——————add每次一个
第二步是
$ git commit
—————commit一次可以提交很多文件
git commit
一般跟一个-m"说明在此"
$ git status
查看状态
$ git diff
查看不同
$ git diff HEAD -- 文件
可以查看工作区和版本库的最新版本的区别
$ git log
查看日志------从最近到最远-----可以加上参数--pretty=oneline
(漂亮的一行展示)
日志内可以看到commit id(版本号)
重点来啦
HEAD表示当前版本
HEAD^上一个版本
HEAD^^上上个版本
HEAD~100——上100个版本
版本回退:$ git reset --hard HEAD^
$git reset --hard 3553634(某个版本号)
$ git reflog 展示了commit id
第一次修改-->git add -->第二次修改-->git commit
第二次的修改没体现在commit中
第一次修改-->git add -->第二次修改-->git add-->git commit
第二次的修改体现了
$ git checkout --filename
注意,checkout还有别的功能
丢弃工作区的修改,2种情况:
1、修改后还未放到暂存区,撤销,工作区变为和版本库一模一样
2、修改添加至暂存区后,又修改,撤销,则目前和暂存区一样
总之,是回到最近一次 git commit ####或者####git add 的状态
$ git reset HEAD filename
(HEAD表示最新的版本)
撤销暂存区的修改
接下来再加一步, $ git checkout -- filename 清理工作区
删除操作 $ rm filename
------删除的是工作区
A/ $ git rm filename
-------将删除操作提交至暂存区
$ git commit
-----提交修改,此文件版本库内页被删除了
B/$ git checkout -- filename
把误删的文件恢复到最新版本(还原操作)
本地库链接至远程仓库:
- github上创建新项目
- 在本地仓库运行命令进行关联
$ git remote add origin git@github.com:名字/项目名字.git
3.把本地内容推送上去
$ git push -u origin master
此处遇到一个问题,由于我新项目创建了readme,然而本地没有,git push失败了,加一个命令:
git pull --rebase origin master
把远程仓库的readme加载到本地,然后就可以了
4 . 以后有修改,就可以简化提交
$ git push origin master
克隆远程库
$ git clone git@github.com:名字/项目名字.git
地址还有http格式: http://github.com/名字/项目.git
创建与合并分支
git checkout -b dev ——新建分支dev并切换到该分支
git branch dev——新建分支dev
git checkout dev——切换到该分支
git branch——查看分支
在该分支上工作,git add --git commit
接下来切换到主干, $ git checkout master
把分支工作合并到主干 $ git merge dev
删除分支 $ git branch -d dev
删除一个没有被合并过的分支 $ git branch -D dev
有冲突时git log --graph可以看到分支合并图
git log 查看日志信息后,按 q退出
合并分支时,禁用Fast forword可以看出分支信息
git merge --no-ff dev
git stash 把当前工作现场 “储藏” 起来
git stash list 查看储藏的内容--git stash apply stash@{0}
git stash apply 恢复,git stash drop扔掉stash内容
或者,git stash pop 恢复后同时删除stash
查看远程仓库信息 git remote / git remote -v(更详细)
推送到远程master ------git push origin master
推送到远程dev ------git push origin dev
另一个小伙伴,首次操作时:
- git clone git@github.com:名字/项目.git
- 查看本地时只有master分支 因此要创建远程origin的dev分支到本地
git chckout -b dev origin/dev
小伙伴提交了更新的dev后,我本地推送上去会失败,因为进度落后了
因此,先git pull 把最新进度从origin/dev上抓下来,
但是要指定本地dev与远程origin/dev的链接,设置:
git branch --set-upstream-to=origin/dev dev
然后在本地合并,解决冲突,再推送git pull origin dev
可能会遇到奇怪界面:请输入提交消息来解释为什么这种提交是必要的什么的
解决:按esc ----- 输入 :wq
接下来就可以 git pull origin dev了
标签
git tag v1.0
git tag v0.9 +commitid 打在某个版本上
git tag 查看标签
标签按字母排序,查看标签信息:git show v0.9
-a 指定标签名 -m指定说明文字
git tag -a v1.0 -m"说明" commitid
git show v1.0
删除标签 git tag -d v1.0
推送标签到远程: git push origin v1.0
一次推送所有标签 git push origin --tags
删除远程标签 :先删除本地:git tag -d v1.0 再删远程 : git push origin :refs/tags/v1.0
参与开源项目
在别人的项目上,fork一个到自己的账号
然后在本地 git clone +地址
可以pull request 给官方仓库贡献代码
配置别名
git config --global alias.st status 用st代表status
co---checkout
ci----commit
br-----branch
last----log -1
lg------log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"