繁体   English   中英

GitHub版本控制无法正常工作

[英]GitHub version control not working as expected

底部的代码

我正在GitHub上使用一个私有存储库作为我和合作伙伴之间的版本控制,但是我的方法遇到了一些困难。 我已经写了一些bash脚本来简化流程。 本质上,我设想了三种bash脚本:获取最新(GL),签出(CKO)和提交(CM)。 我们都建立了目录结构,如usr/documents/opsys/并以相同的方式在我们自己的独立计算机上初始化了git repo。

cd usr/documents/opsys/
git init
git remote add origin https://YOURUSER:YOURPW@github.com/louis-krueger/OpSys.git
git pull origin master

我的想法是能够登录到我们的机器并运行

cd usr/documents/opsys/

进入目录后,我打算让我们共享/拥有共同之处。 这里有bash脚本。运行ls返回以下内容:

CKO  CM  GL  README.md  testkill  xinu-hw3

这个想法行得通,我能够“ GL”,在当前工作期间签出一个工作分支,然后在完成后可以签入对分支的更改。 然后,我手动合并了我的个人作品,并删除了无效分支。 在尝试向我的伙伴展示之前,它的工作方式就像我想要的一样。 我认为主要问题在于我的最新消息。 登录并将工作目录切换到opsys/我们希望能够运行./GL,并且目录中所有不在最新master提交中的内容都应从本地计算机上删除,而ls opsys/应该看起来像您期望从理论上的“ ls起源大师”那里得到什么

CKO  CM  GL  README.md   xinu-hw3

我以为testkill会消失,但是没有。

归根结底,理想情况下这将是我设想的工作流程(ASCII图形)

Day 1
AM                         Noon                   3am(stuck here)

me             ----function1.c--------------------- 
              /
master ------/------------shared unmodified files-- 
                   \
partner             \ -------function2.c-----------


Day 2
        3am     morning  (**action here, see below)           

me      --(f1)---------------\ 
                              \
master  --unmodified common----|--all common---master--------- 
                              /
partner --(f2)---------------/

**操作:完成单独的工作后,我希望能够将分支手动合并回主服务器,以便下次登录时可以使用./GL和BAM,当GL检查时,我们都看到相同的内容高手。 最好两个分支都消失(或是否有办法将它们剪下来并存储在棚屋后面?……存档)。

需要(批评和建议== true)时,当我们彼此之间远程工作时,我们必须有一种快速的方法来共享工作。

EOT


代码段

GL

#!/bin/bash
# @author Louis Krueger - 01/2016
#
# Get latest script
#

REMOTE_VERIFY="git remote -v"

echo "Git Latest"
echo "Please enter username:"
read user
if [ -n "$user" ]; then
        echo "enter pw:"
        read pw
else
        echo "username is nothing, exiting..."
        exit 1;
fi
if [ -n REMOTE_VERIFY ]; then
        git remote set-url origin https://$user:$pw@github.com/louis-krueger/Opsys.git
else
        git remote add origin https://$user:$pw@github.com/louis-krueger/OpSys.git
fi
git pull origin master
echo "$USER  up-to-date"

首席技术官

#!/bin/bash
# @author Louis Krueger - 01/2016
# Check out/create branch for current work
#


echo "Ready to work? Checking out branch"
echo "Please enter branch name:"
read branch
if [ -n "$branch" ]; then
        echo "creating branch!"
else
        echo "invalid branch name, exiting..."
        exit 1;
fi
git checkout -b $branch
git push origin $branch
echo "new branch ($branch) has been created"

厘米

#!/bin/bash
# @author Louis Krueger - 01/2016
#
# Commit branch script
#
error="0"
echo "Are you sure you would like to commit and switch to master?(y/n)"
read confirm
if [ $confirm = "y" ]&&[ $error="0" ]; then
        echo "enter commit message:" 
        read message
        if [ -n "$message" ]&&[ $error="0" ]; then
                echo "enter branch name:"
                read branch
                if [ -n "$branch" ]; then
                        git pull
                        git add ./
                        git commit -m "$message"
                else
                        error="1"
                fi
        else
                error="1"
        fi
else
        error="1"
fi
if [ "$error" = "1" ]; then
        echo "You seem unsure Sire. Perhaps its time to get some fresh air... exiting. No changes have been made"
        exit 1;
fi
git push origin $branch
echo "switching to master"
git checkout master
echo "your branch ($branch) has been commited to the repo, contact admin for master&branch merge"

登录并将工作目录切换到opsys/我们希望能够运行./GL,并且该目录中任何不在最新master提交中的内容都应从本地计算机上删除...

执行此操作的命令是:

git fetch;
git reset --hard origin/master;

git fetch从远程检索存储库的最新副本,并且git reset --hard origin/master将存储库中的所有文件重置为该状态,破坏所有更改。

注意:这不会删除未跟踪的文件; 为此,在git reset之前添加rm -rf * 如果您的存储库包含点文件,则还需要在rm命令中说明它们(请注意不要删除.git !)。

另外,您也可以rm opsys/git clone https://YOURUSER:YOURPW@github.com/louis-krueger/OpSys.git 这将丢弃所有本地文件,并为您提供存储库的全新副本,但是如果您的存储库很大,则可能会很慢。


在完成单独的工作之后,我希望能够手动将分支合并回主服务器。

最好两个分支都消失...

要将分支合并到master中,只需git checkout master然后git merge branchname 然后,您可以使用git branch -d branchname删除本地分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM