git 的一些常用命令整理

来源:互联网 发布:学习软件 编辑:程序博客网 时间:2024/05/22 05:07



如何新建版本库 


1, 登录到 137 上面,通过 su git 命令切换到 git账户
2, 到 /home/git/repositories 目录下面 通过 git init --bare test.git 新建版本库
3, 将新加的用户的key写入到 /home/git/.ssh/authorized_keys 中
4, 编辑 /home/git/.gitosis.conf 文件, 将对应的权限付给对应的用户 

git config user.name    // 配置当前用户的名称

   git config user.email   // 配置当前用户的email




   git status  查看在该分支下修改的文件
   git add     将工作区修改的文件add到暂存区

   git commit -a -m "提交的描述信息" 


git add 的文件, 可以通过 git checkout file path 来撤销
   git commit 的文件 git reset HEAD file path 来撤销到 git add 后的状态


 git push origin 本地分支:远程分支, 
   如: git push origin test:master         // 提交本地test分支作为远程的master分支
        git push origin test:test              // 提交本地test分支作为远程的test分支
        git push origin :test  // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心。



关于切换分支
   git branch  查看当前分支
   git push origin master:20130831 将master分支切换到20130831分支上
   git checkout -b 20130831 origin/20130831 将远程的20130831分支checkout到本地


   切换新的分支以后,可以在本地的 .git/config 文件种看到如下信息:


   [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
   [remote "origin"]
        url = ssh://git@10.3.19.75/chewen_tools.git
        fetch = +refs/heads/*:refs/remotes/origin/*
   [branch "newsRebuild"]
        remote = origin
        merge = refs/heads/newsRebuild
   [branch "feed"]
        remote = origin
        merge = refs/heads/feed
   [branch "master"]
        remote = origin
        merge = refs/heads/master


    如果当前分支没有上述的那些文件, 可以用以下命令来设置
    git config branch.master.remote origin  
    git config branch.master.merge refs/heads/master  



关于分支的合并
    加入当前需要将 20130831 分支合并到 master 分支
    1,切换到 master 分支 git checkout master
    2, 先通过 git pull --rebase 更新当前分支
    3,通过 git rebase origin/20130831
    4, rebase 的过程中可能会出现冲突的文件,冲突的文件。出现如下日志:


    。。。。
    Using index info to reconstruct a base tree...


    When you have resolved this problem, run "git rebase --continue".
    If you prefer to skip this patch, run "git rebase --skip" instead. 
    To check out the original branch and stop rebasing, run "git rebase --abort".


    根据提示找到对应的冲突文件, 在上面的例子中是 chewen-service/src/main/java/com/chewen/chewen/dao/CwNewsCommentDAO.java
    然后解决冲突, 解决完冲突以后, 通过命令 git add chewen-service/src/main/java/com/chewen/chewen/dao/CwNewsCommentDAO.java 
    这个文件。 然后继续 git rebase --continue,直到没有再次提示出现冲突文件。


    5,强制覆盖提交原来的分支, 用 git push origin HEAD -f 来强制提交。
    6, 其他同学可以切换到 master 分支, 然后通过 git pull --rebase 命令来更新最新的代码



关于分支的合并 
  打标签
    git tag -a 0.1.3 -m “Release version 0.1.3″
    详解:git tag 是命令
        -a 0.1.3是增加 名为0.1.3的标签
        -m 后面跟着的是标签的注释
    打标签的操作发生在我们commit修改到本地仓库之后。完整的例子
        git add .
        git commit -m “fixed some bugs”
        git tag -a 0.1.3 -m “Release version 0.1.3″
  分享提交标签到远程服务器上
    git push origin master
    git push origin --tags
    –tags参数表示提交所有tag至服务器端,普通的git push origin master操作不会推送标签到服务器端。
  删除标签的命令
    git tag -d 0.1.3
  删除远端服务器的标签
    git push origin :refs/tags/0.1.3




如何新建版本库 


1, 登录到 137 上面,通过 su git 命令切换到 git账户
2, 到 /home/git/repositories 目录下面 通过 git init --bare test.git 新建版本库
3, 将新加的用户的key写入到 /home/git/.ssh/authorized_keys 中
4, 编辑 /home/git/.gitosis.conf 文件, 将对应的权限付给对应的用户



Git 忽略一些文件不加入版本控制


  在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如:

# 此为注释 – 将被 Git 忽略

            *.a       # 忽略所有 .a 结尾的文件
            !lib.a    # 但 lib.a 除外
            /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
            build/    # 忽略 build/ 目录下的所有文件

            doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

    这样设置了以后 所有的 .pyc 文件都不会添加到版本库中去。

    另外 git 提供了一个全局的 .gitignore,你可以在你的用户目录下创建 ~/.gitignoreglobal 文件,以同样的规则来划定哪些文件是不需要版本控制的。

需要执行 git config --global core.excludesfile ~/.gitignoreglobal来使得它生效。

其他的一些过滤条件

    * ?:代表任意的一个字符
    * *:代表任意数目的字符
    * {!ab}:必须不是此类型
    * {ab,bb,cx}:代表ab,bb,cx中任一类型即可
    * [abc]:代表a,b,c中任一字符即可

    * [ ^abc]:代表必须不是a,b,c中任一字符

    由于git不会加入空目录,所以下面做法会导致tmp不会存在 tmp/*             //忽略tmp文件夹所有文件

    改下方法,在tmp下也加一个.gitignore,内容为
                        *
                        !.gitignore
    还有一种情况,就是已经commit了,再加入gitignore是无效的,所以需要删除下缓存
                        git rm -r --cached ignore_file


注意: .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

    正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
    git update-index --assume-unchanged PATH    在PATH处输入要忽略的文件。

    另外 git 还提供了另一种 exclude 的方式来做同样的事情,不同的是 .gitignore 这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。而 .git/info/exclude 这里设置的则是你自己本地需要排除的文件。 他不会影响到其他人。也不会提交到版本库中去。

    .gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件 可以当作是一个 placeholder 。当你需要为项目创建一个空的 log 目录时, 这就变的很有用。 你可以创建一个 log 目录 在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。

0 0
原创粉丝点击