git参考资料,及自己整理的命令

来源:互联网 发布:windows黑体字体下载 编辑:程序博客网 时间:2024/05/18 03:46

1.入门见:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

2.用git commit提交版本时没有加-m,会进入vim,如何写入提交说明然后退出。见:https://segmentfault.com/q/1010000005979356/a-1020000005980392

------------------------------------

命令

git init:将命令行所在的文件夹创建为仓库

git add readme.txt:把文件添加到仓库(待提交),可多次使用add,添加多个文件

git commit -m "提交的说明":提交

git status:查看仓库状态

git diff readme.txt:比较readme.txt的版本差异

git log:显示仓库提交日志

git log --pretty=oneline:将每次提交的日志显示为一行

------------------

git reset -hard HEAD^:回退到上一版本

git reset -hard HEAD^^:回退到上上一版本

git reset -hard HEAD~100:回退到上100个版本前

git reset -hard 《指定一个已知的版本号(很长一个16进制的字符)》:回到指定版本id的版本。注意:id只需写前几位也可以
---
git reflog:显示每次的操作命令记录


-------------------------------------------------
执行命令:git push -u origin master
报错:
error: failed to push some refs to 'git@github.com:....
原因是本地仓库中没有远程仓库对应的README.md文件
解决办法:
执行命令:git pull --rebase origin master此时仓库下回多一个文件README.md,且其他文件的日期也被修改了
然后再执行push命令即可
见:http://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html

--------------------------------------------------------------------------------

git 命令,需要在git仓库下才能有用
名词说明:
工作区(workspace):我自己创建的目录(E:/GIT_Repositories)
版本库(repository):工作区下隐藏的.git文件夹
index(stage):暂存区命令git add操作时添加到该区
master:分支 命令git commit操作时把缓存区的所有内容提交到该区




git commit <指定文件> -m "提交说明"
这里可以指定提交某个文件,不指定则是提交全部暂存区的内容
git checkout -- <file>
丢弃工作区的修改。分两种情况,1)修改后还未add,则执行命令后回到与版本库一样的状态;2)修改后已add未commit,则回到添加到暂存区的状态;
这里必须有"--",否则是其他命令
如果已经执行了add未执行commit,想要回退,则执行以下命令
>git reset HEAD readme.txt
>git checkout -- readme.txt


git rm <file>
删除指定文件
------------
添加远程仓库
先在github上创建用户
关联一个远程库:git remote add origin git@github.com:linjMaster/learngit.git
第一次推送master分支内容到远程库:git push -u origin master
之后,使用简化命令提交:git push origin master
origin意思:远程
从远程库克隆:git clone git@github.com:linjMaster/anotherpro.git
------------
创建并切换分支dev:git checkout -b dev -b:表示创建并切换
等同于:git brach dev
git checkout dev
查看所有分支:git branch
切换分支:git checkout master
合并dev分支:git merge dev
删除dev分支:git branch -d dev -d:删除,只有当前HEAD不在该分支上时可删除,否则会报错
查看合并情况:git log --graph --pretty=oneline --abbrev-commit
注:在单机上的分支,当前分支上如果有修改并且add了,即添加到暂存区了,则不能切换分支。因为暂存区是共享的,切换前必须保证暂存区是空的才行
------------
关闭Fast forward的合并:git merge --no-ff -m "merge with no-ff" dev
关闭后,就和普通合并一样,可以看到历史合并记录信息
------------
git stash:保存现场(执行后会在.git/refs/下增加一个stash文件)。可多次执行,保存多个现场
git stash list:查看现场列表
git stash apply:恢复现场,但不删除现场记录。需再次执行git stash drop命令才能删除当前现场记录
git stash drop:删除当前现场
git stash pop:恢复现场并删除现场列表。等同于先执行apply,再执行drop命令
------------
git branch -D branch_name:强行删除一个没有被合并的分支branch_name
------------
git checkout -b dev origin/dev:创建本地分支dev,并与远程分支dev关联
------------
git fetch origin/dev:将远程的dev分支获取到本地,但不会自动merge
git diff dev origin/dev:比较本地dev与远程dev差异
git merge dev origin/dev:将远程dev合并到本地dev


git pull:从远程获取最新版本并merge到本地
如:git pull origin/dev,将远程的dev合并到本地(当前分支dev)中
------------
git branch --set-upstream-to=origin/dev dev:将本地dev与远程分支dev建立连接

git branch --set-upstream dev origin/dev
------------
git remote -v:查看远程库信息
------------
git tag v1.0.1:给当前分支添加标签v1.0.1
git tag:查看所有标签
git tag v0.9.9 abe8a57:在commit_id=abe8a57的点打一个标签v0.9.9
git show <tagname>:查看标签详细信息
git tag -a v1.0.1 -m "version 0.9.9 released" abe8a57:给标签指定说明文字(-a指定标签名,-m指定标签说明文字)
git push origin v1.0.1:推送标签到远程库
git push origin --tags:推送所有标签到远程库
git tag -d v0.9.9:删除本地标签
git push origin :refs/tags/v0.9.9:先删除本地标签,再执行本命令,删除远程标签
------------
创建.gitignore文件,在文件中添加要忽略的规则,并add、commit,则在仓库中新的文件如果符合忽略规则,就会被忽略(如.class文件)
git add -f App.class:强制添加该文件到库中
------------
git config --global alias.st status:为status创建别名
还可设置常用别名,如下(待熟练后可设置):
co:为checkout创建别名
ci:为commit创建别名
br:为branch创建别名
unstage:reset HEAD的别名
last:log -1的别名,最后一次提交信息
lg:git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
-----
当前用户(本地)的配置文件存放位置(我的在):C:\Users\Administrator\.gitconfig
------------
git常用命令,见我的百度云盘pub