您的位置:首页 > 其它

Git学习日志

2015-03-19 14:20 141 查看
Git学习文档

1.登录远程服务器 192.168.1.10

2.建立git 目录 /home/git/yu/git

3.切换到git工作目录,创建项目 git init --bare test.git

4.客户端下载 git clone git@192.168.1.10:/home/git/yu/git/test.git

5.免登录设置

  客户端执行 ssh-keygen -t rsa 在.ssh目录生成 id_rsa.pub 文 件 scp 到服务器 cat id_rsa.pub >> /home/git/.ssh/authorized_keys

6.Git提交命令

  git add filename

  git commit -m “注释”

  若执行git push 报错

http://stackoverflow.com/questions/13148066/warning-push-default-is-unset-its-implicit-value-is-changing-in-git-2-0

http://stackoverflow.com/questions/19720711/git-push-warning-questions

7.Git分支相关命令

  查看分支 git branch -a

  创建分支 git branch name

  切换分支 git checkout name

  创建并切换 git checkout -b name

  合并某分支到当前分支 git merge name

  删除分支 git branch -d name

8.普通合并 git merge --no-ff -m “注释” name

9.快速合并

10.普通合并

11.分支管理策略

  主分支 master

  开发分支 develop

  功能分支 feature

  预发布分支 release

  BUG分支 other

12.执行git push 命令时报错

  No refs in common and none specified; doing nothing.

  Perhaps you should specify a branch such as 'master'.

  fatal: The remote end hung up unexpectedly

  error: failed to push some refs 'git@192.168.1.10:/home/git/yu/git/test.git'

  解决办法:

  git push origin branchname

  原因:

  首次提交push,Git 找不到你要提交的版本。

13.服务端执行git命令提示

  fatal: This operation must be run in a work tree

  解决办法:

  git config --unset core.bare

  原因:

http://stackoverflow.com/questions/1456923/why-am-i-getting-the-message-fatal-this-operation-must-be-run-in-a-work-tree

14.Git常用命令

  1>.git pull 更新服务器代码到本地

    git pull origin master是将origin这个版本库的代码更新到本地的

  2>.master主分支

    git tag 给最近一次提交打个标签,git 里面叫“里程碑”。

    git tag -m “hello git”

  3>.git log 查看提交信息

    a). git log -p 查看历次的log信息及更改情况

    b). git log -p -4 查看距现在最近的4次的log信息及更改情况

    c). git log foldername/ 查看关于foldername/目录修改相关的log 信息

    d). git log --stat 查看log显示文件修改情况

    e). git log --stat packages/apps/Contacts/ 查看关于 packages/apps/Contacts/目录修改相关的log显示的文件修改 情况

  4>.git status 查看工作目录和代码仓库的改动情况

  5>.Git fetch
    从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最 新代码)
    相当于从远程获取最新版本到本地,不会自动merge,比Git pull更安 全些。
    使用此方法来获取服务器上的更新。
    例如:如果使用git checkout nov/eclair_rocket (nov/eclair_rocket为 服务器上的 分支名),则是获取上次使用git fetch命令时从服务器上下 载的代码;如果先使        用 git fetch ,再使用git checkout nov/eclair_rocket,则是先从服务器上获取最新的更新信息,然后从 服务器上下载最新的代码。

  6>.git show

    显示对象的不同类型。

  7>.git config

    利用这个命令可以新增、更改Git的各种设置,例如

    git config branch.master.remote origin

    就将master的远程版本库设置为别名叫做origin版本库。

  8>.git revert

    还原某次对版本的修改,例如:git revert commit_id (其中commit_id 为commit代码时生成的一个唯一表示的字符串)
    例如:

    git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (执行此操 作,则还原上一次commit的操作)

15.Git常见问题

  1>.git 修改提交用户名、用户邮箱等信息

    git config --global user.name "Your Name"

    git config --global user.email you@example.com

    全局的通过vim ~/.gitconfig来查看,编辑

    详见 http://blog.chinaunix.net/uid-26997997-id-3231891.html
  2>."remote:error:refusing to update checked out branch:refs/heads/master"问题

    解决办法:

    这是由于git默认拒绝了push操作,需要进行设置,修改.git/config 文件后面添加如下代码:

    [receive]

    denyCurrentBranch = ignore


  3>.无法查看push后的git中文件的原因与解决方法

    在初始化远程仓库时最好使用 git --bare init 而不要使用 git init

  4>.如果使用了git init初始化,则远程仓库的目录下,也包含work tree, 当本地仓库向远程仓库push时, 如果远程仓库正在push的分支上(如果当时不在push的分支,就     没有问题), 那么push后的结果不会反应 在work tree上, 也即在远程仓库的目录下对应的文件还是之前的内 容。

    解决方法:

    必须得使用命令 git reset --hard 才能看到push后的内容.

    研究了很久不得其解,然后找到一条命令凑合着能用了:

    登录到远程的那个文件夹,使用

    git config --bool core.bare true

    详见 : http://www.cnblogs.com/cosiray/archive/2012/06/01/2530967.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: