git

注意:所有文章除特别说明外,转载请注明出处.

1.git rebase

git合并代码主要有两种方式:

1.merge处理,这是我们比较能理解的方式。
2.rebase处理,中文此处翻译为衍合过程。

2.git update-index –assume-unchanged PATH

表示手动设置不要检查特定文件的更改情况。

注意:另外git提供了另外一种exclude的方式来完成同样的事情,不同的是.gitignore这个文件本身会提交到版本库中去。用来保存公共的需要排除的文件。.git/info/exclude设置的是我们自己本地需要排除的文件。这不会影响到别人,也不会提交到版本库中去。

$ git update-index --assume-unchanged /path/to/file   #忽略跟踪

$ git update-index --no-assume-unchanged /path/to/file  #恢复跟踪

3.Git工作流程

git -
    commit -a 将workspace程序提交到local repository
    add (-u) 将workspace程序提交到index(暂存区)
    commit 将index程序提交到local repository
    push 将local repository程序推到remote repository

    pull/rebase 将remote repository程序拉到workspace
    fetch 将remote repository程序拉到local repository

    checkout head 将local repository到workspace
    checkout 将index到workspace
    diff head 将local到workspace
    diff 将index到workspace

注:

4.git命令

4.1 创建与合并分支

1.git branch 查看当前分支
2.git checkout -b <name> 创建并切换到dev分支
3.git checkout <name> 切换分支
3.git merge dev 将dev分支合并到master,当然首先需要切换回到master分支

4.git merge 该命令表示合并指定分支到当前分支

5.git branch -d <name> 删除分支

4.2 解决冲突

如果两个分支上的程序出现冲突,即就是两个分支上的程序都被改动之后,那么在两者合并的过程中就会产生冲突。

1.git status 了解冲突的文件

注意:在git无法自动合并分支的时候,首先应该解决冲突,然后再提交合并。

2.git log --graph 该命令可以看到分支合并图

4.3 分支管理策略

1.git merge --no-ff <name> 该命令表示禁用fast forward 快速合并 分支

提示:分支策略,在实际开发过程中,按照几个基本原则进行管理,平时不在master分支上干活,这分支是用来发布新版本。

4.4 多人协作

1.git remote -v 查看远程库信息
2.git push origin <name> 从本地推送分支,推送失败 git pull 抓取远程的新提交

3.git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联

4.5 标签管理

1.命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id
2.命令git tag -a <tagname> -m "blablabla..."可以指定标签信息
3.命令git tag可以查看所有标签

4.命令git push origin <tagname>可以推送一个本地标签
5.命令git push origin --tags可以推送全部未推送过的本地标签
6.命令git tag -d <tagname>可以删除一个本地标签
7.命令git push origin :refs/tags/<tagname>可以删除一个远程标签

4.6 自定义git

如果想要忽略到一些文件的时候,可以在.gitignore文件中填写,同时该文件可以被版本管理。

不上传LocalController.java和local文件夹文件

1.找到 E:projectsWebOA.gitinfo 路径
2.修改该路径下的语句:

    # git ls-files --others --exclude-from=.git/info/exclude
    # Lines that start with '#' are comments.
    # For a project mostly in C, the following would be a good set of
    # exclude patterns (uncomment them if you want to use them):
    # *.[oa]
    # *~
    src/main/java/cn/edu/xidian/see/controller/LocalController.java
    src/main/webapp/WEB-INF/views/local/*