版本控制 - git创建分支失败,无法提交,难以理解分支的用途
高洛峰
高洛峰 2017-04-28 09:05:49
0
4
890

疑惑

对git分支不了解,今天测试使用git分支,本地创建了一个 new分支,commitpush报错了,且远程并没有看到new分支。

截图

远程截图bitbucket.org,只看到默认的master分支,看不到new分支

命令

Welcome to Git (version 1.9.5-preview20141217)


Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.

Administrator@NSGRZQBMHMHTYQF /E
$ mkdir test

Administrator@NSGRZQBMHMHTYQF /E
$ cd test

Administrator@NSGRZQBMHMHTYQF /E/test
$ touch "d" > 1.txt

Administrator@NSGRZQBMHMHTYQF /E/test
$ ls
1.txt  d

Administrator@NSGRZQBMHMHTYQF /E/test
$ git init
Initialized empty Git repository in e:/test/.git/

Administrator@NSGRZQBMHMHTYQF /E/test (master)
$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        1.txt
        d

nothing added to commit but untracked files present (use "git add" to track)

Administrator@NSGRZQBMHMHTYQF /E/test (master)
$ git add --all

Administrator@NSGRZQBMHMHTYQF /E/test (master)
$ git commit -m "head version"
[master (root-commit) 22a9e38] head version
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 1.txt
 create mode 100644 d

Administrator@NSGRZQBMHMHTYQF /E/test (master)
$ git remote add origin git@bitbucket.org:myacc/br.git

Administrator@NSGRZQBMHMHTYQF /E/test (master)
$ git push -u origin --all # pushes up the repo and its refs for the first time
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 214 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@bitbucket.org:myacc/br.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

Administrator@NSGRZQBMHMHTYQF /E/test (master)
$ git branch new

Administrator@NSGRZQBMHMHTYQF /E/test (master)
$ git checkout new
Switched to branch 'new'

Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ git status
On branch new
nothing to commit, working directory clean

Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ touch "2" > 2.txt

Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ git status
On branch new
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        2
        2.txt

nothing added to commit but untracked files present (use "git add" to track)

Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ git add --all

Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ git status
On branch new
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   2
        new file:   2.txt


Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ git commit -m "branch new head version"
[new 4429a97] branch new head version
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 2
 create mode 100644 2.txt

Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ git push -u origin:new
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

In Git 2.0, Git will default to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

ssh: Could not resolve hostname origin: no address associated with name
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Administrator@NSGRZQBMHMHTYQF /E/test (new)
$ git status
On branch new
nothing to commit, working directory clean

对分支的理解

1.创建了分支之后,再 git add . 就添加了,然后git commit -m ""就提交到了当前的分支?
2.如果运行了 git checkout new,那么是不是会从远程下载new分支到本地,直接自动合并?
3.如果运行了 git checkout new,然后关闭git bash再打开git bash,默认的就是new分支了
4.git 默认的分支就是master分支?

分支的用途

假如开发ubuntu,A程序员在开发LTS12.04分支,然后B程序员却继续开发 V13 版本?
然后某一次B程序员需要去帮A程序员开发LTS12.04,那B应该先将项目V13的所有文件git push V13分支,再 git checkout LTS12.04,再git pull拉取所有的LTS12.04分支。修改后,再git push LTS12.04分支,再checkout V13分支,再 git pull V13所有程序,才返回到了V13的分支?
是这样吗?但git pull不是合并了B项目文件夹下的V13和LTS12.04两个版本的代码了吗

难以理解……

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(4)
迷茫

Ralat sintaks. . . Tidakkah anda membaca mesej ralat yang jelas

ssh: Could not resolve hostname origin: no address associated with name
fatal: Could not read from remote repository.

Menolak cawangan baru harus ditulis seperti ini (di mana anda melihat kolon =.=)

git push -u 远端仓库名称 远端仓库分支名称
git push -u origin new

===========================================

Pemahaman dahan

1. Selepas mencipta cawangan, git add akan menambahnya, dan kemudian git commit -m "" akan memasukkannya ke cawangan semasa?

Mencipta cawangan baharu tidak bermakna bertukar kepada cawangan git branch new_branch hanya mencipta cawangan baharu daripada keadaan semasa cawangan semasa Walau bagaimanapun, pengubahsuaian langsung dan komit pada masa ini hanya pada cawangan semasa 🎜> akan bertukar ke cawangan Baharugit checkout new_branch

adalah bersamaan dengan jumlah dua perintah di atas git checkout -b new_branch

2. Jika anda menjalankan git checkout baru, adakah cawangan baharu akan dimuat turun dari alat kawalan jauh ke tempatan dan digabungkan secara automatik?

Hanya

berinteraksi dengan hujung jauh push/pull/fetch dan seumpamanya adalah operasi tempatan semata-mata commit/checkout
hanya bertukar dari cawangan yang sedang digunakan ke cawangan tempatan yang lain cawangan. Semua kandungan fail dalam ruang kerja bertukar kepada keadaan cawangan lain checkout

"Muat turun cawangan baharu dari alat kawalan jauh ke tempatan dan terus gabungkannya secara automatik" ialah kesan

pada cawangan baharugit pull

3. Jika anda menjalankan git checkout new, kemudian tutup git bash dan kemudian buka git bash, lalai ialah cawangan baharu

Ya, status cawangan kekal dan semua maklumat disimpan dalam direktori .git

4. Cawangan lalai git ialah cawangan induk?

Ya

Tujuan cawangan

Andaikan semasa membangunkan Ubuntu, pengaturcara A sedang membangunkan cawangan LTS12.04, dan kemudian pengaturcara B terus membangunkan versi V13?

Kemudian satu masa, pengaturcara B perlu membantu pengaturcara A membangunkan LTS12.04, kemudian B harus terlebih dahulu git tolak semua fail projek V13 ke cawangan V13
, kemudian git checkout LTS12.04, dan kemudian git pull untuk menarik semua LTS12 .04 cawangan 不需要push,但必须commit/stash 否则修改内容会丢失. Selepas pengubahsuaian, 这里应该描述为拉取1204分支上所有的远端变更 kemudian git tolak cawangan LTS12.04, kemudian semak cawangan V13, dan kemudian git tarik semua program V13 先git commit sebelum kembali ke cawangan V13? 同样不需要pull adakah begitu? Tetapi bukankah git pull menggabungkan kod versi V13 dan LTS12.04 dalam folder projek B?

pull只会从远端拉取其他人push上去的变更,合并到本地“对应”的分支,跨分支的合并只能在本地通过git merge完成

phpcn_u1582

Git sedang memanggil anda untuk melihat mesej ralat orang lain! Selesai

git config --global push.default matching

akan menjadi perkara biasa, dan perintah push ialah

git push origin new

Ah! Bilakah ia menjadi origin:new?

仅有的幸福

Sepatutnya push Terdapat masalah dalam proses ini: git push origin new

S: Selepas mencipta cawangan, git add menambahkannya, dan kemudian git commit -m "" memasukkannya ke cawangan semasa?

J: Serahkan kod secara setempat

S: Jika anda menjalankan git checkout baru, adakah cawangan baharu akan dimuat turun dari alat kawalan jauh ke tempatan dan digabungkan secara automatik secara terus?

J: Tidak akan memuat turun cawangan new dari jauh ke setempat melainkan panggilan eksplisit git pull origin

S: Jika anda menjalankan git checkout new, kemudian tutup git bash dan buka git bash, lalai ialah cawangan baharu

J: Betul

S: Adakah cawangan lalai git cawangan master?

J: git Cawangan lalai ialah master cawangan

Adalah disyorkan untuk mempelajarinya dari awal: https://github.com/numbbbbb/progit-zh-pdf-epub-mobi

我想大声告诉你

Untuk menolak cawangan baruBranch, anda perlu menggabungkan cawangan baharu pada induk: git merge newBranch
Langkah keseluruhan:

git checkout master
git merge newBranch
git add .
git commit -a -m "新分支"
git pull origin master
git push origin master

如果你只想单单提交自己的newBranch分支, 那么按照以下方法操作:
git checkout -b newBranch
git status
# modified a.txt
git add a.txt
git commit a.txt -m "新分支"
git push origin newBranch
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan