首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GitHub版本控制无法按预期工作

GitHub版本控制无法按预期工作
EN

Stack Overflow用户
提问于 2016-02-13 01:33:15
回答 1查看 76关注 0票数 0

底端代码

我正在使用GitHub上的私有回购作为我和合作伙伴之间的版本控制,我在方法上遇到了一些困难。我编写了一些bash脚本,作为简化流程的一种方式。本质上,我设想了三个bash脚本: get最新(GL)、签出(CKO)和commit (CM)。我们都设置了这样的目录结构,usr/documents/opsys/,并以同样的方式在我们自己的独立机器上初始化了一个git。

代码语言:javascript
复制
cd usr/documents/opsys/
git init
git remote add origin https://YOURUSER:YOURPW@github.com/louis-krueger/OpSys.git
git pull origin master

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

代码语言:javascript
复制
cd usr/documents/opsys/

在目录中之后,我想让我们共享/有共同之处。这里有bash脚本。运行ls将返回以下内容:

代码语言:javascript
复制
CKO  CM  GL  README.md  testkill  xinu-hw3

这个想法奏效了,我能够"GL",查看我当前工作期间的一个工作分支,然后当我完成工作时,我可以检查对这个分支的更改。然后,我手动合并了我的个人作品,并删除了死去的分支。这就像我想要的一样,直到我试着给我的搭档看。我认为主要的问题在我最近得到的范围内。在我们登录并将工作目录切换到opsys/之后,我们希望能够运行./GL和目录中没有在最新主提交中的任何内容都应该从本地机器中删除,而ls opsys/看起来应该与您期望从理论上的"ls源主“中得到的完全一样。

代码语言:javascript
复制
CKO  CM  GL  README.md   xinu-hw3

我原以为testkill会消失,但事实并非如此。

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

代码语言:javascript
复制
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签出主服务器时都会看到相同的情况。最好是这两个分支都消失了(或者是否有方法将它们削减并存储在shed?...archive后面)。

需要(批评和建议,==真),我们必须有一个快速的方式分享工作,同时远程工作彼此。

EOT

代码段

总帐

代码语言:javascript
复制
#!/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"

CKO

代码语言:javascript
复制
#!/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"

厘米

代码语言:javascript
复制
#!/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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-13 07:42:55

在我们登录并将我们的工作目录切换到opsys/之后,我们希望能够运行./GL和目录中没有在最新主提交中的任何内容,应该从本地机器中删除.

执行此操作的命令如下:

代码语言:javascript
复制
git fetch;
git reset --hard origin/master;

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

注意:这不会删除未跟踪的文件;要做到这一点,请在rm -rf *之前添加一个git reset。如果存储库包含dotfile,则还需要在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删除本地分支。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35375026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档