git技巧

Posted by Chris on July 7, 2016

1.最常用的命令

git clone git@github.com:PPDman/PPDman.github.io.git  (git@域名或ip:用户名/项目.git) //clone项目到本地
git config --global user.name "test"        //配置用户名
git config --global user.email "test@test.com"  //配置邮箱
ssh-keygen -t rsa -C your email address    //生成密钥
git pull =git fetch+git merge               //拉取并合并
git add .                                   //添加所有
git commit -m   '注释'                       //提交
git status                                  //查看状态
git push                                    //推送
git diff <file>                             //查看不同

2.关联分支

git checkout new (origin同名会自动关联)    //新建分支并切换
git branch --set-upstream new origin/new //本地关联远程分支

3.冲突

git pull 
git mergetoll //一般在git push后判断是否冲突

4.提交前的回退

在工作区

git checkout .    //撤销所有
git checkout --new.java  //撤销某个文件

在暂存区

git reset HEAD  . //撤销所有

5.查看

git branch -a                //查看远程的所有分支
git remote -v //显示所有关联的服务器. 
git log 
q   //退出
git log --author //过滤log
git reflog        //查看后面的log
git diff  <file>   
git diff HEAD --<file> //查看工作区中的某文件和上一版本库中的区别

6.贮藏

git stash save 'note'                //切分支之前清理工作区
git stash  list                      //查看保存多少个
git stash apply //应用最新不删除
git stash pop   //应用最新并删除

7.reset(回退),慎用会影响到协同开发的人

回退到某次提交,后面的记录会不在.git log不行,git reflog可以.

git reset --soft HEAD^          //本地代码还在
git reset --hard HEAD^			//丢弃本地没提交的代码
git push  -f origin master //强制覆盖远程仓库(远程的log会不见,但是通过git reflog能看到)

8.revert(反做),慎用会影响到协同开发的人

放弃最后一次提交,但是会再次提交一次,记录还在

git revert HEAD       //放弃最后一次
git push origin master   //同步到远程
git log        //可以看到提交了一次

9.rebase(变基)

删除历史某次提交

 git rebase -i "commit id"^

 git push origin master -f

修改历史某次提交

这个有点复杂,一般少用

注意当前的分支
git merge <branch> //把branch分支合并到这里 

git rebase <branch> //从branch中变基出来

git仓库变干净

git checkout --orphan latest_branch
git add -A
git commit -am "commit message"
git branch -D master
git branch -m master
git push -f origin master

gerrit

git push origin stable:refs/for/rom/stable/P/os6.0