一、搭建git服务器

安装git

apt-get install gi

在Ubuntu上创建git用户

sudo adduser git

这样在/home目录下就多了一个git目录

在git用户下创建.ssh 目录

cd /home/git
mkdir .ssh
cd .ssh
vi authorized_keys

将本地~/.ssh 里的id_rsa.pub中的内容添加到服务器端的authorized_keys


初始化一个git仓库

在opt下建一个git目录,以后git的仓库都放在这个目录

cd /opt
mkdir git
chown -R git:git git  //修改git目录的拥有者
chmod 777 git
cd git

// chown将指定文件的拥有者改为指定的用户或组
chown -R 用户名:组名 文件

初始化一个project仓库,一般以.git结尾进行命名

mkdir project.git 
cd project.git
git --bare init

本地进行代码推送

# 在 本地 的电脑上
cd myproject
git init
git add .
git commit -m 'initial commit'
git remote add origin git@gitserver:/opt/git/project.git
git push origin master

若因权限问题推送失败,则可能是文件夹所有者问题

# 修改服务器project.git仓库的所有者
chown -R git:git project.git

保存工作现场

git stash

使用git stash会将工作现场保存起来,用git status查看工作区,就是干净的(除非有没有被Git管理的文件,如新添加的文件)

git fetch

git fetch的四种用法

  1. git fetch →→ 这将更新git remote 中所有的远程仓库所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中

  2. git fetch remote_repo →→ 更新名为remote_repo 的远程仓库上的所有branch的最新commit-id,将其记录(只有origin仓库的话,2就和1一样了)

  3. git fetch remote_repo remote_branch_name →→ 将更新名为remote_repo 的远程仓库上的remote_branch_name分支

  4. git fetch remote_repo remote_branch_name:local_branch_name →→ 在3的基础上再创建一个local_branch_name。

# git pull和git pull --rebase

git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
参考1

git merge和git rebase

git merge :有分叉
git rebase :没有分叉
参考1
参考2
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用git-add命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:git rebase --continue

你可能感兴趣的:(一、搭建git服务器)