在本地使用Git的基础知识

时间:2019-03-20 01:10:27

标签: git

公开,这是一项作业。

该分配要求在HPC(高性能计算机?)上创建本地存储库,将现有的外部存储库克隆到此计算机,然后允许本地用户从该本地主存储库分支。我确定了以下内容:

在HPC上创建一个用于存储项目的文件夹:

mkdir path/to/project_folder

在项目文件夹内克隆现有的仓库:

git clone https://github.com/janesmith/projectXYZ.git

这会将github存储库中的所有文件带入本地文件夹。我现在有本地版本的在线仓库,但这不一定是仓库本身。

再次在本地项目文件夹中,输入:

git init

这会将文件夹放在裸存储库中。然后,我添加文件:

git add *

这将添加所有文件。然后,我提交文件:

git commit -m 'first commit'

分配非常模糊,我不确定这些用户如何访问相同的HPC,所以我假设的是,我知道他们在我刚刚创建的存储库中。那么每个用户都会从主存储库中克隆吗?

git clone path/to/project_folder/projectXYZ.git user/projectXYZ

这将创建回购版本的副本到用户更本地的文件夹。

但是每个用户如何将更改推回主仓库?

1 个答案:

答案 0 :(得分:2)

如果我正确地理解了您的任务,任务是1)创建一个本地存储库(用作祝福存储库或中央存储库),以及2)允许登录同一计算机的用户克隆此中央存储库,创建其自己的本地工作存储库,在中央存储库和自己的存储库之间进行推拉。

1。从github创建中央存储库:

 git clone https://github.com/janesmith/projectXYZ.git --bare -- /path/to/local/repo

在大多数情况下,中央存储库只是一个空库。确保/path/to/local/repo对所有用户都是可读和可写的。

2。您作为管理员执行一些初始化工作。

# create your own work repository
git clone /path/to/local/repo -- myrepo
cd myrepo
git checkout master
# edit files
git add .
git commit -m foo and bar
git push origin master

3。通知其他用户/path/to/local/repo上的中央存储已准备就绪,他们现在可以使用它。

4。用户A登录并创建自己的存储库。

git clone /path/to/local/repo -- userarepo
cd userarepo
git checkout master
# edit files
git add .
git commit
git push origin master
# oh, an error says push fails because of non-fast-forward
git pull origin -r master
# oh, merge conflicts encountered
# edit and solve the conflicts
git add .
git rebase --continue
git push origin master

5。用户B希望从feature_007开始创建新分支master

git clone /path/to/local/repo -- userbrepo
cd userbrepo
git checkout -b feature_007 origin/master
# edit files
git add .
git commit -m "feature_007 is good"
git push origin -u feature_007

6。用户A对feature_007感兴趣。

cd userarepo
git fetch origin feature_007
git checkout feature_007
# edit files
git add .
git commit -m "fix a bug"
git push origin feature_007