公开,这是一项作业。
该分配要求在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
这将创建回购版本的副本到用户更本地的文件夹。
但是每个用户如何将更改推回主仓库?
答案 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