Git分支的小小实践

$ mkdir /tmp/example
$ cd /tmp/example
$ git init
Initialized empty Git repository in /tmp/example/.git/
$ echo "Hello, world" > README.txt
$ git commit #默认不会提交
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	README.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add README.txt #纳入版本管理 
$ git commit -m "Added README.txt"  #提交并带说明
[master (root-commit) 0dd1f35] Added README.txt
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 README.txt
$ echo "Hello, solar system" > README.txt #修改README文件
$ git commit
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   README.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git commit -a -m "Updated README.txt"
[master 9b1939a] Updated README.txt
 1 files changed, 1 insertions(+), 1 deletions(-)
$ git log --graph --oneline # 图形化显示日志,下面合并分支,图形化就更明显了
* 9b1939a Updated README.txt
* 0dd1f35 Added README.txt
$ git checkout -b french 0dd1f35 # 创建并切换至分支french,注意0dd1f35为一天提交记录的id,每个人实践会不一样。
Switched to a new branch 'french'
$ cat README.txt 
Hello, world
$ echo "Bonjour, tout le monde" > README.txt
$ git add README.txt #或者使用git commit -a -m "Ajouté README.txt"
$ git commit -m "Ajouté README.txt"
[french 66a644c] Ajouté README.txt
 1 files changed, 1 insertions(+), 1 deletions(-)
$ git log --graph --oneline
* 66a644c Ajouté README.txt
* 0dd1f35 Added README.txt
$ git checkout -b web 0dd1f35 # 创建并切换至分支web,0dd1f35与上述french已有
$ echo '<a href="http://git.eclipse.org">git.eclipse.org</a>' > index.html
$ git add index.html
$ git commit -m "Added homepage"
[web d47e30c] Added homepage
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 index.html
$ git checkout master
$ git branch #查看拥有哪些分支
  french
* master
  web
$ git merge web # 把web归并进master分支上
Merge made by recursive.
 index.html |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 index.html
$ git checkout french # 切换至分支french
Switched to branch 'french'
$ git merge web #跟上述归并类似
Merge made by recursive.
 index.html |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 index.html
$ git log --graph --oneline  #现在可以图形化显示日志,多么形象的展示分支和归并
*   e974231 Merge branch 'web' into french
|\  
| * d47e30c Added homepage
* | 66a644c Ajouté README.txt
|/  
* 0dd1f35 Added README.txt
$ git checkout master
$ git log --graph --oneline
*   e3de4de Merge branch 'web'
|\  
| * d47e30c Added homepage
* | 9b1939a Updated README.txt
|/  
* 0dd1f35 Added README.txt
$ (mkdir /tmp/other;cd /tmp/other;git init) 
$ (cd /tmp/other;git config --bool core.bare true) #该命令告诉git,/tmp/other为裸库,我可以“push”进去。 
Initialized empty Git repository in /tmp/other/.git/
$ git remote add other /tmp/other # 可以使用URL http或git,如github提供那样
$ cd /tmp/example
$ git push other master # 将master分支推送到远程版本库'other'
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (11/11), 981 bytes, done.
Total 11 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (11/11), done.
To /tmp/other
 * [new branch]      master -> master
$ git push --all other # 推送所以分支到远程版本库‘other’
Counting objects: 8, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 567 bytes, done.
Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
To /tmp/other
 * [new branch]      french -> french
 * [new branch]      web -> web
$ cd /tmp/other #切换回目录/tmp/other
$ git config --bool core.bare false # 允许这个库可以被checkout文件
$ ls # 查看现在other目录下有哪些文件
$ git branch
  french
* master
  web
$ git checkout web #获取other库下面的web分支
$ ls #现在再查看下other目录下有哪些文件
README.txt index.html
$ echo '<h1>Git rocks!</h1>' >> index.html
$ git commit -a -m "Added Git Rocks!"
[web 510621a] Added Git Rocks
 1 files changed, 1 insertions(+), 0 deletions(-)
$ cd /tmp/example # 倒回刚刚那目录
$ git pull other web # Pull回在other下修改的web分支,注意,此时是example目录(库)所处的分支为master,即之前和web归并过得master,现在又和修改后的web归并。(此处该结合下面的log图形化日志慢慢思考,相信我,你会想通的。)
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /tmp/other
 * branch            web        -> FETCH_HEAD  #FETCH_HEAD为example目录(库)的最新状态
Merge made by recursive.
 index.html |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
$ git log --graph --oneline  #嗒哒,重头戏~
*   146932f Merge branch 'web' of /tmp/other
|\  
| * 510621a Added Git Rocks
* |   e3de4de Merge branch 'web'
|\ \  
| |/  
| * d47e30c Added homepage
* | 9b1939a Updated README.txt
|/  
* 0dd1f35 Added README.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值