git最全操作
git clone http://xxx.com/demo.git 下载工程
git pull origin master 更新
git push origin master 上传
上传工程到gitlab
cd project
git init
git add .
git commit -m 'init commit'
git remote add origin git@example.com:namespace/projectname.git
git push origin master
本地修改后,先add,再提交,再push
git config --global user.email "zh@xx.com"
git config --global user.name "zh"
提交当前修改文件
git add .
git commit -m "hello world"
git push
git status 当前状态
git last 显示最后一次的提交
文件/版本恢复
git log --pretty=oneline 格式化日志显示
git log file 查看文件版本号
git reset 454456645545488.... file恢复文件到某个版本
git reset --hard d60c523b0432608adfcb3a7c59496708c9dae8a1恢复版本
git reset HEAD file 去掉cache中的文件
如:git reset HEAD zh/src/test/resources/mybatis-gen-config.xml
git checkout -- zh/src/test/resources/mybatis-gen-config.xml 恢复到当前版本的文件
git remote -v 查看下载地址
git diff 比对文件
git checkout file 下载某个文件
分支操作
git branch 查看分支
git branch -a 查看远程分支
git checkout master 切换分支到主分支
git pull origin master 拉取master最新数据
git branch develop (创建develop分支)
git checkout develop(切换到develop分支)
git checkout -b develop (创建并切换到develop分支)
git merge master 合并分支 (一次性合并提交)
git push origin develop 提交到远程develop
合并分支
git checkout master
git merge develop --squash
#在这里处理冲突
git commit
git push
分支操作
git branch –d dev2 删除分支
git branch –D dev2 还没合并的话,可强制删除分支
git branch –m oldname newname 修改分支名称
git push origin :branch-name 删除远程分支,冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支
处理冲突(方法一)
git stash 挂起当前修改的文件
git stash list
git pull 拉最新的修改
git stash pop stash@{0} 将挂起的文件合并到当前最新的下载文件
/*处理冲突中...*/
git add .
git commit -m “提交文件修改”
处理冲突(方法二)
git commit -m “提交当前操作”
git pull 拉最新的修改
/*处理冲突中...*/
git add .
git commit -m “提交文件修改”
tag操作(一个只读的分支)
git tag 查看本地tag
git tag v1.0.0/git tag -a v1.0.0 -m "1.0.0版本"/git tag -a v1.0.0 9fbc3d0
git push origin v1.0.0/git push origin --tags(将本地所有标签一次性提交到git服务器)
git checkout v1.0.0 切换版本
git tag -d v1.0 删除本地tag
git push origin :refs/tags/v1.0 用push, 删除远程tag
git push origin --delete v1.0
扩展:
git fetch 相当于是从远程获取最新版本到本地,不会自动merge
git fetch -p /git fetch origin 全局更新
git fetch origin master
git log -p master..origin/master
git merge origin/master
git fetch origin master:tmp
git diff tmp
git merge tmp
git show v1 查 tag:v1 的修改內容
git show v1:test.txt 查 tag:v1 的 test.txt 檔案修改內容
git show HEAD 此版本修改的資料
git show HEAD^ 前一版修改的資料
git show HEAD^^ 前前一版修改的資料
git show HEAD~4 前前前前一版修改的資料
设置别名
git config --global alias.st status git st ==> git status
git config --global alias.co checkout
git config --global alias.ci commit
gitlab设置
ssh-keygen -t rsa -C "dev_gitlab@sina.com"
cat ~/.ssh/id_rsa.pub
git stash apply [--index] [<stash>] 不删除已恢复的进度,其他同git stash pop
git stash drop [<stash>] 删除某一个进度,默认删除最新进度
git stash clear 删除所有进度
git stash branch <branchname> <stash> 基于进度创建分支
撒销一个合并
如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
$ git reset --hard HEAD
或者你已经把合并后的代码提交,但还是想把它们撒销:
$ git reset --hard ORIG_HEAD
但是刚才这条命令在某些情况会很危险,如果你把一个已经被另一个分支合并的分支给删了,那么 以后在合并相关的分支时会出错。
git remote -v 查看远程服务器地址和仓库名称
git remote show origin 查看远程服务器仓库状态
忽略本地的某些文件改动
.gitignore
.git/info/exclude