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 删除远程分支,冒号前面的空格不能少,原理是把一个空分支pushserver上,相当于删除该分支

 

处理冲突(方法一)

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

 

 

 

 

 

 

 

 

posted @ 2016-04-15 01:19  圣雄1990  阅读(156)  评论(0编辑  收藏  举报