我试图弄清楚为什么我自己的桌面存储库中的代码没有被推送到我在Github中创建的存储库中。
我做了以下事情:
cd "/your/repo/dir"
git clone https://github.com/user_AKA_you/repoName # (creates /your/repo/dir/repoName)
cp "/all/your/existing/code/*" "/your/repo/dir/repoName/"
git add -A
git commit -m "initial commit"
git push origin master
我收到消息:
To https://github.com/skumar225/battleship.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/skumar225/battleship.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
错误是什么,如何解决?
答案 0 :(得分:1)
您想要获取并检出您的github存储库而不是克隆它。
如果你还没有告诉git你是谁,你现在应该这样做。您可以按存储库或全局执行此操作。为了最小化问题,这应该与您的github信息相匹配。我更喜欢全球化,所以我不必再这样做了......
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
设置本地存储库
# make a directory for your working tree and git repository
mkdir -p ~/projects/{src,git}/battleship
# change directory to the git repository directory
cd ~/projects/git/battleship
# init the git repository (bare)
git --git-dir ~/projects/git/battleship --work-tree ~/projects/src/battleship init
添加远程存储库,以便可以将其拉/推到
# add your remote (github) repository (upstream)
git remote add github git@github.com:skumar225/battleship.git
从上游(github)获取并结帐
要使这部分工作,您必须拥有an SSH key setup and assigned to ssh。它不必通过github设置来提取公共存储库,但需要推送它。
# fetch from upstream
git fetch github
# checkout the master branch
git checkout master
# the files are all now in your working tree and ready to play with
验证您的工作树是否已填充
ll ~/projects/src/my-project
# your local repo is now ready
git status
对工作树进行更改
现在,您已在github上与存储库同步了本地存储库。为了这个答案,我将添加一个文件,并在我们可以提交的工作树中修改一个文件。
注意:这是整晚,咖啡因加油,编码补习班会正常进行的地方。
echo '** A new file has been created!' > ~/projects/src/battleship/newfile.md
echo '- [x] Add new file' >> ~/projects/src/battleship/README.md
暂存更改
在提交文件之前,您必须暂存它们。如果你在分期之前和之后做了一个状态,你可以看到差异。
注意:您必须仍然在git目录中才能执行此操作而不包括--git-dir
git status
git add .
git status
提交本地存储库
最后,您可以提交到本地存储库!
注意:如果您有更长的消息,请省略-m位,它会打开vim,以便您添加更长的消息。
git commit -m "This is a test commit"
推送上游(github)
此时剩下的就是向上游推进。这部分我不能做,因为它不是我的存储库,但它是一个简单的命令:
注意:要使这部分工作,您必须先setup your credentials in github,以便知道您是谁。
git push github
让git更容易在本地使用的技巧
我喜欢为我维护的每个本地存储库设置别名。这允许我使用git而不必每次都输入--git-dir或将我的目录更改为存储库。
alias gitbs='git --git-dir ~/projects/git/battleship'
现在你可以使用别名(从任何地方)。
gitbs status
gitbs add .
gitbs push github
# etc
直到你下次登录为止。要使其永久化,请将命令添加到〜/ .bashrc文件中。
答案 1 :(得分:-2)
确保您已正确设置远程路径(您的github repo ssh url)。
跳转到终端
上的项目文件夹$ cd path_to_your_project_folder
检查存储库的远程信息的状态
$ git remote show origin
如果没有设置,请在此处设置
$ git remote add origin paste_your_github_repo_ssh_url
现在是时候提交/推送你的项目了
$ git push -u origin master