-----------------------------------------------本地-----------------------------------------------
git config --global user.name "Your Name" 【配置你的github用户名】
git config --global user.email "email@example.com" 【配置你的github邮箱】
git config --global color.ui true 【提示高亮】
git config --global alias.st status 【简化命令】
mkdir mygit 【新建一个文件】
cd mygit 【去到当前文件】
git init 【创建一个版本库】
git add one.txt 【创立一个工作区; (空格之间添加多个文件)】--all
git commit -m"描述文字" 【提交到版本库+版本信息】
git remote add origin git@github.com:you/you.git 【新建并提交到一个自己的远程库】
git status 【检查文件是否被修改过】
git diff 【查看被修改过内容】
git log 【查看提交日志】
git reflog 【查看所有编写过的命令】
git reset --hard HEAD^ 【返回上一个版本】
git reset --hard (版本id) 【穿梭】
cat xxx.txt 【查看文件内容】
vi xxx.txt 【编辑】
wq 【退出】
git checkout -- 文件名 【撤销修改】
git checkout . 【恢复上一个commit的所有文件到工作区】
【删除commit】
git reset --hard~2
git push --force
【修改commit信息】(还没push的情况)
git commit --amend -m "xxxxxx"
gitignore规则不生效的解决办法
【删除本地缓存】
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
-----------------------------------------------github-----------------------------------------------
ssh-keygen -t rsa -C "729494296@qq.com" 【创建远程仓库秘钥】
创建完后会有.shh文件夹,里面有id_rsa和id_rsa.pub这两个文件
id_rsa是公开的公钥,id_rsa.pub是自己的秘钥
打开id_rsa.pub 复制全部内容
登陆github.com 在SSH Keys里的 填上title和key
在本地输入
git remote add origin git@github.com:zhenbinjing/(项目名).git 【建立链接通信】
git push -u origin master 【将本地的所有文件上传上去。 第一次要加 -u】
git push origin master 【以后有新文件直接上传。不加-u了 (推送分支)】
当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
输入yes 就可以了
git clone git@github.com:zhenbinjing/(项目名).git 【从远程复制到本地】
当下载的文件过大的时候会报错,这时就要设置文件大小
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed;curl 56 Recv failure: Connection reset by peer
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
git config --global http.postBuffer 524288000
-----------------------------------------------分支-----------------------------------------------
master分支一般不干活的,主要用来发布版本的,所以我们开发的时候会新建一个分支,专门去写代码的,分支可以用来区分不同类型的代码,例如增加新功能的,有bug的,等等
git checkout -b xxx 【创建并且切换到当前分支中】
git branch xxx 【查看当前分支】
git checkout xxx 【切换分支】
git merge xxx 【当前分支与xxx分支合并】
git branch -d xxx 【删除本地xxx分支】
git push origin --delete xxx【删除远程xxx分支】
分支与主分支合并冲突的时候,文件有<<<<<<<,=======,>>>>>>>标记出不同分支的内容,要手动去更改文件,然后add commit
git log --graph 【查看分支合并图(详细)】
git log --graph --pretty=oneline --abbrev-commit 【查看分支合并图(精简)】
git默认是Fast forward模式,在主干上合并分支,如果删除dev分支,是看不见dev分支上的commit,会丢掉分支信息的。
git merge --no-ff -m "merge with no-ff" dev 【不在Fast forward情况下,进行与dev分支合并,并(保留dev下的commit)写入信息】--no-ff
git merge --squash dev 【当前分支把dev分支上的所有commit 归纳到一个commit描述】
git stash 【保存当前工作区的内容】
git stash list 【查看工作区保存的地方】
git stash apply 【恢复工作区内容】
git stash drop 【删除工作区】
git stash pop 【恢复工作区内容后同时删除工作区】
git stash pop = git stash apply + git stash drop
-----------------------------------------------多人协作-----------------------------------------------
git remote 【查看远程库的信息(远程仓库的默认名称是origin)】
git remote -v 【查看远程库更详细的信息(是否有推送的权限)】
git push origin xxx 【推送xxx分支】
【这是在别人的项目中】
一般在别人的项目下载下来后只能看到本地的master分支,所以我们要创建一个自己的分支。例如:
git checkout -b dev origin/dev
写完后(add commit)
git push origin dev
【这是在自己的项目中】
自己开发完成后,发现提交冲突了,会有好多hint信息,例如:
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
推送失败:是因为贡献者比你提交早,又在同一行代码上有冲突。
第一步:
git pull 【把最新的提交从(别人的分支)抓下来】
如果抓取也失败了,是因为贡献者建立了他的分支,而你本地又没有这个分支
如果你不知道别人的分支路径,git是会告诉你,例如其中两行和最后一行,例如:
From github.com:michaelliao/learngit
fc38031..291bea8 dev -> origin/dev
git branch --set-upstream dev origin/
那行我们在本地建立对应的分支就可以了,例如:
git branch --set-upstream dev origin/dev
然后再 git pull 就可以看到冲突的文件了。
Auto-merging 文件名
CONFLICT (content): Merge conflict in 文件名
Automatic merge failed; fix conflicts and then commit the result.
这是已经pull 成功了
第二步:
修改冲突的文件,然后(add commit)
git push origin dev
这时应该可以推送成功了
-----------------------------------------------tag-----------------------------------------------
git tag 【创建标签】
git tag 标签名 版本号 例如:
git tag v1.0 af1684d
git tag -d xxx 【删除标签xxx】
git tag -d v1.0
git show v1.0 【查看v1.0对应的版本号等信息】
创建带有说明的标签,用-a指定标签名,-m指定说明文字,例如:
git tag -a v0.1 -m "version 0.1 released" af1684d
git push origin v1.0 【推送一个标签】
git push origin --tags 【推送所有标签】
【删除远程标签】
首先要在本地删除标签,然后再push
git tag -d v0.9
git push origin :refs/tags/v0.9