git服务器在linux搭建在window下提交

看了好多文章都是在github上。自己乱整个在linux上,还是阿里云。

一些常用操作:

git config --list 查看当前设置

git config --global user.name 查看设置的用户明

git config --global user.email 查看设置的邮箱

git remote 显示远程库(只是名字)
git remote -v (或者是--verbose)查看远程仓库并显示地址
git remote rm yourremotename 本地删除远程仓库绑定
git remote add remotename [email protected]/yourpath/.git remotename为远程仓库名字,name为你的远程地址登录用户名
========

git log 查看日志
git log --pretty=oneline 只显示commit号 和commit(或者理解为id和备注)


git rest --hard HEAD^ 默认回复上一个版本(恢复之后,git log的显示中最后一次将消失,但是如果你有消失最后一次的commit号,那可以用git reset 613ef5d)再反恢复。基本hard的意思就是,你把hard指向哪个版本,就可以到哪个版本(他实际是由head指针,注意是head,不是hard)
git reflog 上面提到如果最后一次消失,那么log中的也消失,而你又没办法知道commit号码,那就用reflog,这样就可以看到我上面说的HEAD了。
另外:注意一些git在服务器上的目录权限问题以及linux的用户权限问题

比如不想在当前root用户直接sudo git 进入bash,可以vim /etc/passwd  ,找到git用户。

改成:

git:x:503:503::/home/git:/usr/bin/git-shell


usr/bin/git-shell是修改的,其他的可能跟我自己的不同。


另外一个小点:如果初始化服务器端git库的时候,用git git --bare init name.git 和直接在目录下git init是有区别的。
简单说:如果用了后者,需要每次都git reset --hard 才能拿到最新的变化。
而--bare就不用了。
详细点说:
用"git init"初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。
比如有用户在该目录(就称为远端仓库)下执行git操作,且有两个分支(master 和 b1),当前在master分支
下。另一个用户想把自己在本地仓库(就称为本地仓库)的master分支的更新提交到远端仓库的master分支,他就想当然
的敲了git push origin master:master于是乎出现因为远端仓库的用户正在master的分支上操作,而你又要把更新提交

到这个master分支上,当然就出错了。但如果是往远端仓库中空闲的分支上提交还是可以的,比如git push origin 


master:b1   还是可以成功的
解决办法就是使用”git init –bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”)

这个看需求而异吧,
一般建议(git init --bare name.git),但是如果你是init的直接,如果不想删除了从新来的画,建议这样:
ps:如果直接用了git init,可能会出现下面错误
Git: push 出错的解决 master -> master (branch is currently checked out)
在使用Git Push代码到数据仓库时,提示如下错误:
[remote rejected] master -> master (branch is currently checked out)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
...
...
...
 
这是由于git默认拒绝了push操作,需要进行设置,服务器配置修改.git/config添加如下代码:
    [receive]
    denyCurrentBranch = ignore
 
在初始化远程仓库时最好使用 git --bare init   而不要使用:git init
   如果使用了git init初始化,则远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时,   如果远程仓


库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在work tree上,  也即在远


程仓库的目录下对应的文件还是之前的内容,必须得使用git reset --hard才能看到push后的内容.

附个地址很详细参考http://rmingwang.com/using-git-to-deploy-a-web-site.html

猜你喜欢

转载自blog.csdn.net/u010703523/article/details/46561441
今日推荐