Git笔记摘要

在本地环境下,如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器

私服使用如下命令

git remote add origin yzhang@coopens.com:ShangYun/sy.git

GitHub 使用如下命令

git remote add origin yzhang@github.com:zyfmix/AssetManager.git

使用以下命令添加项目到 coding.io 上

git remote add origin https://git.coding.net/coam/coam.git

提示以下错误

fatal: remote origin already exists.

因为已将本地目录提交到其它 git 服务器,可先使用命令删除本地的配置

git remote rm origin

如此你就能够将你的改动推送到所添加的服务器上去了。

注:应先在远程服务器端建立 git 库,使用 git 私服建立 git 库使用如下命令:

mkdir ShangYun
cd ShangYun
git --bare init sy.git

添加与提交

你可以计划改动(把它们添加到缓存区),使用如下命令:

git add <filename>
git add *

这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:

git commit -m "代码提交信息"

现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

推送改动

你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:

git push origin master

可以把 master 换成你想要推送的任何分支。

git服务器,使用命令 git push origin master 将本地项目同步到远程时,提示以下错误:

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:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To yzhang@coopens.com:ShangYun/sy.git
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'yzhang@coopens.com:ShangYun/sy.git'

这是由于 git 默认拒绝了push 操作,需要在git服务器端进行设置,修改 .git/config 添加如下代码:

[receive]
denyCurrentBranch = ignore

或执行:

git config receive.denyCurrentBranch ignore

达到相同作用。

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

如果使用了git init 初始化,则远程仓库的目录下,也包含 worktree,当本地仓库向远程仓库 push 时,如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在 worktree 上, 也即在远程仓库的目录下对应的文件还是之前的内容,必须得使用 git reset–hard 才能看到 push 后的内容.

创建一个叫做 “feature_x” 的分支,并切换过去:

git checkout -b feature_x

切换回主分支:

 git checkout master

再把新建的分支删掉:

 git branch -r -d feature_x

除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的

git push origin <branch>

从分支切换回主分支时,出现错误不能切换回主分支,可使用命令强制切换,然后再次尝试切换到主分支 master

 git checkout -f
使用命令 git branch -r -d <branchName> 删除一个分支,如果提示有错误,可将参数 -d 改为 -D 强制删除该分支

 

 

参考列表

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注