神奇的 Git--https://github.com/Gitzhengbin(坑*的gitHub,突然就登不上去了,帐号密码错误,邮箱找不到,真坑)
害的又申请了一个:https://github.com/zhengbingit
基本配置:
1.本地仓库管理者用户名与 Email,用于版本备注,与生成 SSH key
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2.创建版本库 ->git init
把当前目录编程 Git 可以管理的仓库
(mkdir abc)创建名为 abc 的文件夹
(rm -rf abc)删除名为 abc 的文件夹
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
(pwd)查看当前所在路径
(ls -ah)查看文件夹所有文件,包括隐藏域
基本操作:
查看仓库当前状态->git status
查看仓库当前做了哪些修改->git diff
查看工作区与版本库里面最新版本的区别->git diff HEAD -- readme.txt
查看命令历史->git reflog
查看提交历史->git log
信息简略版->git log --pretty=oneline
将文件向Git版本库中更新->
1.git add 把文件修改添加到暂存区
2.git commit 提交更改,把暂存区的所有内容提交到当前分支
注意:
要注意工作区与暂存区的概念
* 第一次修改 -> git add -> 第二次修改 ->git commit
Git管理的是修改,当用 git add 命令后,在工作区的第一次修改被放入暂存区中,等待被提交(commit),但是,第二次的修改并没有放入暂存区中(也就 是没有执行 git add 命令),所以,git commit 只负责把暂存区的修改提交,也就是说仅提交了第一次的修改,而第二次的修改并没有提交
版本回退:
回到之前版本->git reset --hard HEAD^
回到指定版本->git reset --hard commit_id
本地仓库的版本回退后,-> git push -f,来强制覆盖掉远程仓库
远程仓库:
从GitHub克隆一个仓库到本地Git
->git clone git@github.com:Gitzhengbin/gitskills.git
把本地Git仓库与GitHub中的Git仓库进行远程同步
1.在GitHub中创建新仓库,以仓库名为 learngit 为例
2.->git remote add origin git@github.com:Gitzhengbin/learngit.git
这一步算是添加一个origin(远程库)
3.->git push -u origin master
这一步算是将origin,推送到远程(GitHub)
也就是把当前分支master推送到远程
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master 分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
以后若再向这个仓库更新,则用->git push origin master 即可
删除远程 branch(分支)、tag(标签,对某一时间点上的版本打上标签)
git push origin --delete tag <tagName>
git push origin --delete branch <branchName>
删除远程仓库中文件:
git rm -r --cached target/ //删除远程仓库中的target文件夹中所有内容
git commit -m "删除远程仓库多余文件"
git push
本地同步远程仓库
更新当前分支
->git pull
从远程(origin)获取最新版本并merge(合并)到本地
->git pull origin master
获取服务器端的改动,比如其他用户新建了一个分支并push到了服务器,运行这个命令之后会得到这个分支的信息
->git fetch
从远程获取最新版本到本地,不会自动merge(合并)
->git fetch origin master
分支管理:
创建分支并切换到分支'dev'
->git checkout -b dev
等价于
->git branch dev
+git checkout dev
查看当前所有分支
->git branch
(* 代表当前所在分支)
删除分支
->git branch -d dev
合并分支dev到当前master的版本
->git merge dev
切换分支(dev)与主线(mester)
->git checkout [dev/master]
查看分支合并图
->git log --graph
遇到的问题:
问题1:fatal: remote origin already exists.
解决:git remote rm origin
问题2:error: failed to push some refs to 'git@github.com:Gitzhengbin/mxbc.git'
解决:由于向远程仓库提交的本地代码,与远程仓库的代码不一致(远程仓库比本地仓库多,比如远程仓库多一个 README.md,遇到这个问题就由我在远程添加这个文件造成的)
所以首先将远程仓库与本地仓库进行合并后,再进行推送
git pull --rebase origin master(注:pull=fetch+merge)
------------16.10.25更新------------
问题3:fatal: Authentication failed for 'http://********.git/'
解决:
git config --global user.name "***" git config --global user.email "***@***.com"
并按提示输入 git 仓库的密码。
------------17.03.25更新------------
问题4:push 时需要输入账户名和密码
原因:原因是添加远程仓库的时候使用了 https 的方式,所以每次都使用 https 的方式 push 到远程库。
解决:
首先确定当前使用的传输协议是否为 https:
git remote -v
如果如下所示:
origin https://github.com/***/chapter1 (fetch) origin https://github.com/***/chapter1 (push)
那么就说明当前的传输协议为 https,下面命令将其修改为 ssh 的方式:
git remote rm origin git remote add origin git@github.com:***/chapter1.git git push -u origin master
------------17.07.03更新------------
修改前一次 commit 的备注内容
git commit --amend
删除还没有 add 的文件
git clean -df、-n
感谢:廖老师的博客教程