自己的文件(电脑上的)--git add <file>-->添加到暂存区 --git commit -m "<修改信息>"-->提交到本地库 --git push <origin> <master>-->推送到远程仓库
1、提交
- git add <file> (缓存file文件,file为文件名)
- git add . (缓存所有文件)
- git add -u (将修改、删除的文件添加到暂存区)
- git add -A (将修改、删除、新建的文件添加到暂存区)
- git commit -m "<修改信息>" (将暂存区的代码提交到本地库)
- git commit -am "<修改信息>" (相当于:git add . + git commit -m "<修改信息>")
- git push origin master (推送 origin:远程仓库名称 master:远程分支名称)
2、分支
- git branch (查看本地分支列表)
- git branch -r (查看远程分支列表)
- git branch a (创建本地分支a)
- git checkout a (本地分支切换到分支a)
- git checkout -b a (创建并切换到分支a)
- git merge a (合并分支 a 到当前分支,与rebase的区别见ps1)
- git rebase a (合并分支a到当前分支,与merge的区别见ps1)
- git branch -d a (删除分支a)
- git branch -D a (强制删除分支a,如当a分支有未提交代码)
- git push origin :develop (删除远程develop分支)
- git push origin --delete <develop> (删除远程develop分支)
- git checkout <develop> origin/<develop> (把远程origin仓库下的develop分支拉取到本地,第一个develop是本地分支名称)
- git checkout -b <develop> origin/<develop> (把远程origin仓库下的develop分支拉取到本地并切换到develop分支,第一个develop是本地分支名称)
- git log (查看提交的历史记录)
3、标签
- git tag (查询所有的标签)
- git tag <a> (当前位置添加标签a)
- git tag -a <v1.0> -m '<附注信息>' (创建带附注的标签)
- git push origin --tags (推送本地标签到远程仓库)
- git push origin <v1.0> (推送本地v1.0标签到远程仓库)
- git tag -d <v1.0> (删除本地v1.0标签)
- git push origin :refs/tags/<v1.0> (推送空的同名版本到线上,来删除远程标签,需要先把本地的v1.0标签删除)
- git fetch origin tag <v1.0> (获取远程v1.0版本)
- git checkout a (切换到标签a,与切换分支命令相同)
4、拉取
- git pull <origin> <master> (拉取远程master分支)
- git remote add origin git@github.com:stormzhang/test.gi (关联远程仓库)
- git remote remove origin (删除本地关联的仓库)
- git pull <origin> <master> --allow-unrelated-histories (初次关联本地与远程仓库,本地与远程有冲突时拉取远程文件并关联)
- git push -u origin <remote-branch-name> (将本地分支与远程分支关联起来,<remote-branch-name> 为远程分支名称)
5、配置别名
- git config --global alias.psm 'push origin master' (git push origin master <==> git psm)
- git config --global alias.c checkout (git checkout <==> git c)
6、暂存 stash (stash是本地的,不会通过git push
命令上传到git server上)
- git stash (把所有未提交的修改(不包括untracked files和ignored files)都保存起来,用于后续恢复当前工作目录)
- git stash <-u (or) --include-untracked> (可以暂存untracked files)
- git stash <-a or --all> (暂存所有文件)
- git stash save “xxx” (添加暂存记录, xxx:为添加的记录)
- git stash pop (恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区)
- git stash pop [--index] (恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区))
- git stash pop [stash_id] (恢复指定的进度到工作区。stash_id是通过git stash list命令得到的)
- git stash apply [--index] [stash_id] (除了不删除恢复的进度之外,其余和git stash pop命令一样。)
- git stash list (查看现有stash)
- git stash drop [stash_id] (移除stash@{0}这个暂存,stash_id通过git stash list命令得到的)
- git stash clear (清除所有stash)
- git stash show (查看指定的diff,后面可以跟着stash名字,在该命令后面添加-p或--patch可以查看特定stash的全部diff)
- git stash branch [newversion] (从stash创建分支,newversion为分支名称)
7、账户信息
- git config user.name 查看自己的用户名
- git config user.email 查看自己的git账号
- git config --global user.name "xxx" 修改自己的用户名
- git config --global user.email "xxx" 修改自己的git账号
8、其它
- git remote -v (查看当前项目有那些远程仓库)
- git fetch (刷新)
- mkdir test (创建test文件夹)
- cd test (切换到test目录下)
- touch a.md (创建a.md文件)
- git init (将当前文件夹初始化为git仓库)
- git status (显示工作目录和暂存区的状态)
- git diff (比较当前文件和暂存区文件差异)
- git config –global http.postBuffer 524288000 (修改git缓存大小限制为500M,默认为1M)
ps1:rebase跟merge的区别:
你们可以理解成有两个书架,你需要把两个书架的书整理到一起 去,第一种做法是merge,比较粗鲁暴力,就直接腾出一块地方把另一个书架的书全部放进 去,虽然暴力,但是这种做法你可以知道哪些书是来自另一个书架的;第二种做法就是 rebase,他会把两个书架的书先进行比较,按照购书的时间来给他重新排序,然后重新放置 好,这样做的好处就是合并之后的书架看起来很有逻辑,但是你很难清晰的知道哪些书来自 哪个书架的。