Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitHub版本控制未按预期工作_Git_Bash_Github_Version Control - Fatal编程技术网

GitHub版本控制未按预期工作

GitHub版本控制未按预期工作,git,bash,github,version-control,Git,Bash,Github,Version Control,底部代码 我在GitHub上使用私有回购协议作为我和合作伙伴之间的版本控制,我在方法上遇到了一些困难。我已经编写了一些bash脚本来简化流程。基本上,我设想了三个bash脚本:getlatest(GL)、check-out(CKO)和commit(CM)。我们都建立了一个目录结构,usr/documents/opsys/,并以同样的方式在我们各自的机器上初始化了一个git repo cd usr/documents/opsys/ git init git remote add origin ht

底部代码

我在GitHub上使用私有回购协议作为我和合作伙伴之间的版本控制,我在方法上遇到了一些困难。我已经编写了一些bash脚本来简化流程。基本上,我设想了三个bash脚本:getlatest(GL)、check-out(CKO)和commit(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,并且目录中不在最新主提交中的任何内容都应该从本地计算机中删除,
ls opsys/
应该与理论上的“ls origin master”完全相同

我原以为
testkill
会消失,但它没有消失

在一天结束时,理想情况下,这将是我设想的工作流程(ASCII图形)

**措施:完成单独的工作后,我希望能够手动将分支合并回主机,以便下次登录时。/GL和BAM我们都可以在GL签出主机时看到相同的情况。最好是两个分支都消失了(或者有没有办法把它们砍掉并保存在棚子后面?…存档)

需要(批评和建议==正确),我们必须在远程工作的同时快速分享工作

EOT
代码片段

德国劳埃德船级社 CKO 厘米 登录并将工作目录切换到
opsys/
后,我们希望能够运行/GL,并且目录中任何不在最新主提交中的内容都应该从本地计算机中删除

执行此操作的命令有:

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

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

或者,您可以选择
rm opsys/
git克隆https://YOURUSER:YOURPW@github.com/louis krueger/OpSys.git
。这将丢弃任何本地文件并为您获取存储库的新副本,但如果存储库很大,则速度可能会很慢


在我们完成各自的工作后,我希望能够手动将我们的分支合并回主分支

最好两个分支都消失

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

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

执行此操作的命令有:

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

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

或者,您可以选择
rm opsys/
git克隆https://YOURUSER:YOURPW@github.com/louis krueger/OpSys.git
。这将丢弃任何本地文件并为您获取存储库的新副本,但如果存储库很大,则速度可能会很慢


在我们完成各自的工作后,我希望能够手动将我们的分支合并回主分支

最好两个分支都消失

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

#!/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"
git fetch;
git reset --hard origin/master;