git 常用命令


git学习地址: http://backlogtool.com/git-guide/cn/intro/intro1_1.html    http://sfsheng0322.github.io/2016/02/29/git-branch.html   代码回滚参考地址    http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html 可以在 .bash_profile中添加别名命令或者别名脚本   配置信息: 1.git log --decorate --graph --oneline -10   提交成功后用decorate变为一行,

2.git prelog 可以查看之前所有本地的commit信息 ,git cherry-pick 提交号  可以取回来

 

3..git/logs/refs/heads  里面含有所有的分支,和各自本地的commit记录,第二列为commit号,可以通过git cherry-pick 提交号  可以取回来   

 

4. git config --global alias.st status        git config --global alias.co checkout   git config --global alias.ci commit  

 

   git config --global alias.br branch

  5. git config --global color.ui true   6. git config -l 可以查看所有的配置信息    git config user.name 查看用户名  git config user.email 查看电子邮箱 
   git commit -m "comment" 避免打开commit模板 7. git commit -am "messages "  一条命令,包含add和commit  操作信息: 1.  删除远程分支:
$ git push origin --delete 

      删除远程tag:

git push origin --delete tag 
    删除本地tag     git tag -d       创建tag     git tag -a -m "create tag commit message"       把本地建立好tag推送到远程     git push origin       创建本地分之     git branch       将本地分之推送到远程     git push origin       把本地某个分之代码 提交 到远程库中某个分之     git push origin :       把远程库中某个分之代码 拉取 到本地某个分之     git pull origin    // 将远程RemoteBranchName分之拉取到本地当前分之上面       将其它人仓库的developer分之拉取到本地当前分之上面     git pull https://github/wutianlong/demo developer         把提交从index中拿回来到本地,就是在git add 之后再拿回来    git reset operationfile      本地已经commit了修改,并且push 到远程仓库了,此时意识到没有修改完全,但是又不想在远程仓库的commit message中再追加一条,如下操作:    本地开始二次修改   |      git add .       |       git commit  --amend  -m “second commit mesage ,will replace first commit message”          git push origin :   --force        撤销某次已经提交到远程仓库的提交, 这样会撤销之前的commit,作为一个新的commit提交,commit message中会继续追加一条    git revert  将要撤销提交的SHA提交号    git push origin :            根据之前提交的commit号来拉取分之    git   checkout   SHA-1    git   branch                  只是查看某个人的提交信息       git   log   --pretty=oneline    --author="wutianlong"    如果 忽略 已经在远程库中已经追踪的文件    (if you are trying to ignore changes to a file that's already tracked in the repository (e.g. a dev.properties file that you would need to change for your                                                                              local environment but you would never want  to check in these changes) than what you want to do is: )  git update-index --assume-unchanged       如果 开始 追踪远程库中忽略的文件   git update-index --no-assume-unchanged    
   
异常信息处理: 1. 出现 The remote end hung up unexpectedly 异常,做如下处理:   git config --global http.postBuffer 524288000   合并分之: 从developer 合并到master 时候,默认会有很多条commit message 在master 的log里面,可用--squash 来只留一条 git checkout master git merge --squash developer git commit -m “将dev”  
冲突解决方法 :
git pull  时候出现共同修改的文件 pull不下来 
应该本地先提交 :1.git add   2.git commit  
再进行git pull 重新更新下来,如果更新下来则说明没有冲突,因为共同修改的不在同一行,会自动merget成功。如果没有pull下来,则说明有共同修改同一行   git pull== git fetch + git merge      忽略文件无法进行忽略处理: 1.git rm -r project/bin  删除bin整个文件夹东西 2. git commit -m  "comment 信息"  只会提交HEAD最新一次commit代码   如果是-am   则是将本地全部的修改都提交上了,包括没有在index中的,非常危险 3. .gitignore文件 ,如果要忽略的内容已经在远程库repositories中了,则无法进行忽略,需要在创建库时删除掉或者git rm -r project/folder才可以   pull的流程: Git中从远程的分支获取最新的版本到本地有这样2个命令:   1.  git fetch:相当于是从远程获取最新版本到本地,不会自动merge           git fetch origin master                        // 获取远程master分之到本地临时origin/master分之
        git log -p master..origin/master         // 比较本地master分之和 临时origin/master分之 区别
        git merge origin/master                     // 将临时origin/master分之合并到本地master分之上

   上述过程其实可以用以下更清晰的方式来进行:
   
        git fetch origin master:tmp                // 获取远程master分之到本地临时tmp分之
        git diff tmp                                         // 比较本地master分之和 tmp分之 区别
        git merge tmp                                    // 将tmp分之合并到本地master分之上


2. git pull:相当于是从远程master分之上获取最新版本并merge到本地当前分之
   
       git pull origin master                          //上述命令其实相当于git fetch 和 git merge

    在实际使用中,git fetch更安全一些, 因为在merge前,我们可以查看更新情况,然后再决定是否合并  

假设要合并最后的2个提交

1. git rebase –i HEAD~2

2. 将第二个pick修改为squash或者s,然后输入":wq”退出。

3. 这时git会自动第二个提交合并到第一个中去。并提示输入新的message(就是我们常说的comments)

4. 编辑输入新的message,然后输入":wq"退出

5. 此时本地的(HEAD中)最后两次提交已经被合并为一个。git log可以查看。

6. 如果需要提交到远端,运行git push  origin master --force即可。

===========================================

虽然xcode内置强大的git 工具。但是当你工程文件冲突时,就不得不在xcode外合并。

1 2 3 4 5 6 git config --global merge.tool diffmerge git config --global mergetool.diffmerge.cmd "/Applications/DiffMerge.app/Contents/MacOS/diffmerge --merge --result=\$MERGED \$LOCAL \$BASE \$REMOTE" git config --global mergetool.keepBackup false   git config --global diff.tool diffmerge git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.app/Contents/MacOS/diffmerge \$LOCAL \$REMOTE"

 安装diffmerge

 在git仓库目录下运行 git mergetool 就可以了 

master 分之上之行merge命令,merge developer时,如果出现冲突

1.想要全部保留developer 分之  则  git checkout --theirs  file-name     

2. 想要全部保留master分之  则  git checkout --ours  file-name     


Git