Git经常使用指令记录

简介

git有漂亮的WEB界面css

很是自由的本地commit(不用担忧是否影响到他/她人) 操做稍微复杂了一点点。html

git属于分布式的版本管理工具。每一个人都有所有的提交历史。git

经过git push 和 git pull 将更新提交到远端github

git的使用参考

参考: http://www.bootcss.com/p/git-guide/编辑器

入门分布式

  1. 安装客户端(https://git-scm.com/downloads)
  2. 建立一个仓库 其中一种方法 建立一个目录 your-project 在目录下面执行命令 git init 第二种方法 git clone <仓库的地址>
  3. 添加与提交 git add * git commit -m “add some file"

1.4 推送改动 添加仓库的地址(若是不是clone出来的仓库,须要初始化下origin的地址)ide

git remote add origin <git-repo-server-addr>

推送svn

git push origin master

git的默认分支就是master(经过git branch能够查看当前的分支) 这句命令的意思就是将master分支里的内容,推送到名叫origin的远程仓库去。工具

工做流

  • working dir(工做目录):持有实际文件
  • index(暂存区):临时保存你的改动
  • HEAD:指向最后提交的结果

如何回退

从工做目录到暂存区fetch

git add <file-name>

从暂存区到HEAD

git commit
git reset HEAD~   # 执行后,就行没有commit同样
git reset --hard HEAD~  # 这个有点暴力,执行后,就像你全部的修改也都没了

改动没有提交

git checkout <your-filename>

改动已经提交

git reset --hard HEAD~ # 放弃一次提交
git reset --hard HEAD~2  # 放弃两次提交
git reset --hard <sha-版本号> # 回滚到某个版本号

还有一种办法处理以及提交的问题(最新研究出来的)

# 查看历史,找到须要回滚到的版本
git log

# 回到那个版本, 注意后面那个 "."
git checkout <sha> .

# 而后commit就行了
git commit -am "...."

冲突的处理

使用文本编辑器,打开冲突的文件

处理完冲突后,

git add <冲突的文件>  # 跟svn比,没有svn resolved这一步
git commit -m “提交记录”

若是执行了git merge,可是想放弃一次代码合并

git merge --abort

分支管理

建立,并却换到新的分支(如dev分支)

git checkout -b dev

却换回来(默认的分支是master)

git checkout master

合并分支的内容

git merge dev

若是有冲突,参考上面的,人肉处理就行了 删除远程分支(删除test)

git push origin :test

git的经常使用配置

git config --global color.ui true

设置忽略文件列表

ref: http://git-qa.gz.netease.com/gzleiyingfeng/git_course/tree/master

直接把须要忽略的文件列表放到.gitignore文件里就能够了

$ cat .gitignore
# frameworks/base    # 此为注释,被git忽略
*.a                  # 忽略全部.a结尾的文件
!lib.a               # 但lib.a除外,!
build/               # 忽略build目录下的全部文件
doc/*.txt            # 忽略doc目录下的全部.txt结尾文件,但不包含doc/notes/*.txt
/TODO                # 仅忽略项目根目录下的TODO文件,但不包含subdir/TODO

提交pull request

如何为一个commit提交pr

参考

  1. fork 一份代码(假定为 myfork ),myfork的主干始终和oschina-url的主干保持一致。

    1. 如何保持和主干的代码一致

      1. 设置upstream remote:git remote add upstream oschina-url
      2. 直接pull upstream remote: git pull upstream master
    2. 查看变动后更新

      git fetch upstream master
      git diff master FETCH_HEAD
      git merge FETCH_HEAD
  2. 新建 feature 分支,有任何修改都在该分支上进行开发。

  3. 从 upstream 的主干新建一个要 pr 的分支(假定为 pr-example),提取 feature 分支中要 pr 的修改。

    查看 feature 分支要pr的提交: git log (假定hash为 e1ad54d)

    # 建立pr-example分支
    git checkout -b pr-example upstream/master
    # 分支提取提交
    git cherry-pick e1ad54d
    # 提交到远程仓库
    git push -u origin pr-example
  4. 经过 pr-example 分支向 upstream 的主干发起 pull request。

  5. pr被接受以后,删除该分支

    git branch -d pr-example
    # 删除远端分支
    git push origin :pr-example

cherry-pick 使用:

  • 提取指定分支的 HEAD 提交:git cherry-pick totoro
  • 提取指定分支的 HEAD 往前 n 个提交:git cherry-pick totoro~n
  • 提取多个连续提交:git cherry-pick A..B,如 git cherry-pick totoro~4 totoro 会提取 totoro * 分支上 HEAD 前4个和 HEAD 自己共5个 commit,git cherry-pick e296145..a649050 会提取 e296145 和 a649050 之间(含)的全部 commit。

更多用法请参考git help cherry-pick

(注: pr是pull request的简称)

其余

ref: http://www.yangzhiping.com/tech/github.html

修行之道 关注大师的言行, 跟随大师的举动, 和大师一并修行, 领会大师的意境, 成为真正的大师。

其余优秀的资料

相关文章
相关标签/搜索