git, strange upstream entry which i cant get rid of - windows

if i do
git remote -v
i get
origin https://..../foo.git (fetch)
origin https://..../foo.git (push)
upstream
this last upstream line there prevents me from adding a real upstream which i wanna merge from.
my config file looks like this:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = https://..../foo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
when i do
git fetch upstream
i get this error:
fatal: 'upstream' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
how can i get rid of that upstream?

Git has several scopes where config is set : system ($(prefix)/etc/gitconfig), global (~/.gitconfig) and local (.git/config of the current repository).
Since there is nothing about upstream in your local scope, you have to check the system and global scopes. It could simply be a write access permission to associated files.

Related

Managing personal and organisation GitHub accounts on the same machine(HTTPS)

So i have a mac given to me by organistaion for company work. My mac os verison is macOS Monterey version 12.6
Now i have one github account setup here for my company (2FA enabled and using HTTPS with Personal access token)
git version 2.37.0 (Apple Git-136)
Adding .git/config file output here (local file inside repo path).
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/<<company_name>>/<<repo_name>>.git
fetch = +refs/heads/*:refs/remotes/origin/*`
Adding global config file output (~/.gitconfig)
[credential]
helper = osxkeychain
[url "https://company_username#github.com"]
and inside keychain there are two enteries for github.com
Internet password
application password
Both having my personal access token for the company id.
This all works fine as PAT is saved in keychain.
Now i have created a new github account under my name (for personal projects) and following is the local .git/config file output there.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
name = <<personal_username>>
email = <<personal_email_id>>
[remote "origin"]
url = https://<<PAT>>#github.com/<<personal_username>>/<<repo_name>>.git
fetch = +refs/heads/*:refs/remotes/origin/*
[credential]
helper =
i have added PAT here so that it does not copies the one from keychain (as i tried different solutions online)
However, when i try to clone or push in this repo it gives error.
remote: Repository not found.
fatal: repository 'https://github.com/<<personal_user>>/<<repo>>.git/' not found
what i understand is it is taking PAT from keychain and that one is for my company's PAT so giving this error. However i might be wrong.
Adding output for my .netrc
machine github.com login <<company_username>> password <<company_PAT>>
I am able to think of two ways to do this
enable keychain for only company's repo and not for personal repo so that i can add PAT personal each time
Add different PAT for different account in keychain
However i am not able to come up with any solution after trying everything online.
Again, i am using HTTPS
(most of solution online are .SSH)
Thank you in advance.
https://<<PAT>>#github.com: you do not put the token when you work with credential helper.
You put your GitHub user account, the one you need to access that repository.
And you record in the credential helper the right PAT for that user.
I would recommend installing the Microsoft cross-platform GCM (Git Credential Manager), which will update osxkeychain.
Then record your personal user account and associated PAT:
printf "host=github.com\nprotocol=https\nusername=you\npassword=PAT" | git credential-manager store
# replace 'you' and 'PAT' with your own GitHub account and token
Using https://you#github.com/... (instead of https://company_username#github.com)will force Git to extract the right token from the credential helper.

Can I get the upstream remote branch by ruby-git

I'm using ruby-git to operate my Git repo. I can get the local branch that checkout from remote branch, how can I get it upstream remote branch? This's the code:
require 'Git'
repo = Git.open("xxxpath.git")
localbranch = repo.branches["localbranchnamexxx"]
The same way you would do it in normal git
remote_branch = repo.branches["origin/localbranchnamexxx"]
Counter-intuitively (to me, at least), the branch tracking information is stored in the git config, not in any branch or ref structures.
require 'git'
repo = Git.open("xxxpath.git")
localbranch = repo.current_branch
upstream_remote = repo.config["branch.#{localbranch}.remote"]
upstream_ref = repo.config["branch.#{localbranch}.merge"]
upstream_branch = upstream_ref.split('/').last
upstream = "#{upstream_remote}/#{upstream_branch}"

Hugo not using local git config

I'm trying to use a private theme/module with a personal access token. I can get this working by adding the following to my global git config.
git config --global url."https://{USER}:{TOKEN}#github.com".insteadOf "https://github.com"
Then running hugo mod get -u it will pull changes as expected.
I don't want this set in my global config and if I set it locally I get an error, because Go doesn't seem to be using the local config.
Set my configurations locally within the root of the site/repository:
git config --local url."https://{USER}:{TOKEN}#github.com".insteadOf "https://github.com"
Then running hugo mod get -u I get the following error:
go get: module github.com/USER/REPOSITORY: git ls-remote -q origin in /var/folders/26/gqnv01_55p964v8yz39d51fw0000gn/T/hugo_cache/modules/filecache/modules/pkg/mod/cache/vcs/b410fc7b91fbc1121b5f6ec2bb2711c27cd172b4084c213e1430a33cde552597: exit status 128:
remote: Repository not found.
fatal: repository 'https://github.com/USER/REPOSITORY/' not found
How can I get Go/Hugo to use my local git config rather than the global?
From the hugo mod source code, hugo will look for a go.mod in your project:
filepath.Walk(dirname, func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
return nil
}
if info.Name() == "go.mod" {
// Found a module.
dir := filepath.Dir(path)
fmt.Println("Update module in", dir)
Check where your go.mod is, and do (in that go.mod parent folder):
git config -l --show-origin --show-scope
That will tell you if your expected local config is actually there or not.
Look for any .git folder which would indicate a nested git repository/submodule, which would ignore your initial git config --local command
An issue like 34513 seems to suggests though that go mod won't take into account the local repository:
The git configuration only affects operations on the underlying git repo.
The error that you're seeing is coming from before that, when the go command is attempting to resolve the repo for the requested package path.
The official documentation only references the global config .gitconfig.
I solved this by adding a directory replacement mapping to the site’s config, instead of modifying the git url. This points to my locally cloned theme and updates the served site whenever I modify the theme.
module:
imports:
path: 'github.com/[USER]/[REPO-NAME]'
replacements: 'github.com/[USER]/[REPO-NAME] -> ../../[REPO-NAME]/'

Fatal: unable to update url base from redirection when pull code

$ git pull origin develop-Avaya
fatal: unable to update url base from redirect: asked for: https://gitlab.com/Tuong_Nguyen1/OCMT.git/info/refs?service=git-upload-pack
redirect: https://192.168.10.200:1003/fgtauth?00c1271d2684a541
****i can't set proxy git...what should i do ?****
Check what git remote -v returns for the entry origin:
The URL should be just: https://gitlab.com/Tuong_Nguyen1/OCMT.git

Problems SourceTree listing files in local repository as deleted

We are two developers working on a large project which involves 30 small satelllite web sites from two differente stations. We have been experiencing problems with SourceTree in the sense that sometimes in the OSX station the area "Work Copy Changes" lists many files as deleted and reques
A. Main issue:
Sometimes, before committing or pushing any changes on the repository, on the MAC station SourceTree shows on the working changes area that many files have been deleted. But when we check if the files still exist on the project folder of the MAC, they are still there.
We cannot proceed to pull or pushing any more changes until we go file by file ignoring the changes for each file or we make another commit confirming the deletion of the files.
This seems to be happening erratically when one of us pushes changes onto the repository.
Although we don’t know if it may be related to this, another issue that has been happening as well is that the folders requested to be ignored on the gitignore file are not ignored.
B. Configuration
A Samsung laptop running on Windows 7 and a MAC with OSX
For managing (pushing, pulling, committing) contents on the repository, we are using the latest versions of SourceTree (1.5.2 for Windows and 1.9 for OSX)
We are using the same software for development (PhpStorm)
We are using one master repository and branch for managing all the changes on the satellites
The configuration of the GIT config files is below:
Windows station:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = dlaggit#dev.dreamit.de:lotto-satellites
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
OSX station:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
url = dlaggit#dev.dreamit.de:lotto-satellites
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
C. What we have tried so far
Discarding the changes on the files. The problem has arisen again weeks later with different files
Reinstalling SourceTree and making the changes below (highlighted) to the git config file on the OSX machine:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = dlaggit#dev.dreamit.de:lotto-satellites
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
After trying the solution above, some of the files on the working copy changes area no longer appear as deleted but as modified (even though they had not been modified by us), some of them appear recently added and some remain as deleted. When we check the files in the local folder, the files are still there.
Thanks for any help you can provide.

Resources