Create repository.
jesse123@BJSCWL1802 ~ // 将当前进度打包成仓库,供他人分享
$ gitclone --bare /home/jesse123/1_gitAddNode/ /home/jesse123/share/shared.git
Cloninginto bare repository '/home/jesse123/share/shared.git'...
done.
jesse123@BJSCWL1802 ~
$ gitclone file:///home/jesse123/share/shared.git user2
Cloninginto 'user2'...
remote:Counting objects: 16, done.
remote:Compressing objects: 100% (10/10), done.
remote:Total 16 (delta 2), reused 0 (delta 0)
Receivingobjects: 100% (16/16), done.
Resolvingdeltas: 100% (2/2), done.
jesse123@BJSCWL1802 ~
$ ls
1_gitAddNode share user2
jesse123@BJSCWL1802 ~
$ cduser2/
jesse123@BJSCWL1802 ~/user2
$ ls
forNode3_master.txt main.txt onePice.txt
jesse123@BJSCWL1802 ~/user2
$ gitconfig user.name user2
jesse123@BJSCWL1802 ~/user2
$ gitconfig user.email
jesse123@BJSCWL1802 ~/user2
$ gitlog --pretty=oneline
5611a829225e22f250e1679e20b5e6a9fa2d8a7cHello, add onePice.txt.
766b6f563184380d5e794522d79ef6a008533d21Add new forNode3_master.txt.
70519d08e8b251a44698c7aabdcaf9e79c4b1f57Make some changes.
274c5d567af06c67532a306a51fee260e28acd7cAdd a file.
Conflict!
jesse123@BJSCWL1802 ~/user1
$ ls
forNode3_master.txt main.txt onePice.txt
jesse123@BJSCWL1802 ~/user1
$mkdir team
jesse123@BJSCWL1802 ~/user1
$echo "I'm user1." > team/user1.txt
jesse123@BJSCWL1802 ~/user1
$ gitadd team/
jesse123@BJSCWL1802 ~/user1
$ gitcommit -m "user1's profile."
[master4472c99] user1's profile.
1 files changed, 1 insertions(+), 0deletions(-)
create mode 100644 team/user1.txt
jesse123@BJSCWL1802 ~/user1
$ gitpush
Countingobjects: 5, done.
Deltacompression using up to 4 threads.
Compressingobjects: 100% (2/2), done.
Writingobjects: 100% (4/4), 318 bytes, done.
Total4 (delta 1), reused 0 (delta 0)
Unpackingobjects: 100% (4/4), done.
Tofile:///home/jesse123/share/shared.git
5611a82..4472c99 master -> master
jesse123@BJSCWL1802 ~/user1
$ gitlog --pretty=oneline
4472c9932774aaa9f1b1f23adc6b2401f1fc6006user1's profile.
5611a829225e22f250e1679e20b5e6a9fa2d8a7cHello, add onePice.txt.
766b6f563184380d5e794522d79ef6a008533d21Add new forNode3_master.txt.
70519d08e8b251a44698c7aabdcaf9e79c4b1f57Make some changes.
274c5d567af06c67532a306a51fee260e28acd7cAdd a file.
jesse123@BJSCWL1802 ~/user2
$mkdir team
jesse123@BJSCWL1802 ~/user2
$echo "I'm user2." > team/user2.txt
jesse123@BJSCWL1802 ~/user2
$ gitadd team/
jesse123@BJSCWL1802 ~/user2
$ gitcommit -m "user2's profile."
[masterd2c134c] user2's profile.
1 files changed, 1 insertions(+), 0deletions(-)
create mode 100644 team/user2.txt
jesse123@BJSCWL1802 ~/user2
$ gitpush
Tofile:///home/jesse123/share/shared.git
! [rejected] master -> master (non-fast-forward) // 因为冲突,不能 fast-forward
error:failed to push some refs to 'file:///home/jesse123/share/shared.git'
Toprevent you from losing history, non-fast-forward updates were rejected
Mergethe remote changes (e.g. 'git pull') before pushing again. See the
'Noteabout fast-forwards' section of 'git push --help' for details.
Why?
jesse123@BJSCWL1802 ~/user1
$ gitrev-list HEAD
4472c9932774aaa9f1b1f23adc6b2401f1fc6006
5611a829225e22f250e1679e20b5e6a9fa2d8a7c
766b6f563184380d5e794522d79ef6a008533d21
70519d08e8b251a44698c7aabdcaf9e79c4b1f57
274c5d567af06c67532a306a51fee260e28acd7c
jesse123@BJSCWL1802 ~/user1
$ gitls-remote origin
4472c9932774aaa9f1b1f23adc6b2401f1fc6006 HEAD
4ddf4c4cf7e6fc77eff476d9e8d45058153b1595 refs/heads/branchFrom_2
4472c9932774aaa9f1b1f23adc6b2401f1fc6006 refs/heads/master
a49680369aacbaf64557d3a83c1f21aca1224fa5 refs/tags/old_practice
766b6f563184380d5e794522d79ef6a008533d21 refs/tags/old_practice^{}
0ed85278d7ac258912a81ba37a55c634f1967640 refs/tags/one_pice
5611a829225e22f250e1679e20b5e6a9fa2d8a7c refs/tags/one_pice^{}
jesse123@BJSCWL1802 ~/user2
$ gitrev-list HEAD
d2c134cc9c83d85699f0ec443af7e49fbf5433ac // 这里与user1已不同
5611a829225e22f250e1679e20b5e6a9fa2d8a7c
766b6f563184380d5e794522d79ef6a008533d21
70519d08e8b251a44698c7aabdcaf9e79c4b1f57
274c5d567af06c67532a306a51fee260e28acd7c
jesse123@BJSCWL1802 ~/user2
$ gitls-remote origin
4472c9932774aaa9f1b1f23adc6b2401f1fc6006 HEAD
4ddf4c4cf7e6fc77eff476d9e8d45058153b1595 refs/heads/branchFrom_2
4472c9932774aaa9f1b1f23adc6b2401f1fc6006 refs/heads/master
a49680369aacbaf64557d3a83c1f21aca1224fa5 refs/tags/old_practice
766b6f563184380d5e794522d79ef6a008533d21 refs/tags/old_practice^{}
0ed85278d7ac258912a81ba37a55c634f1967640 refs/tags/one_pice
5611a829225e22f250e1679e20b5e6a9fa2d8a7c refs/tags/one_pice^{}
Merge made byrecursive.
jesse123@BJSCWL1802 ~/user2
$ gitpull
remote:Counting objects: 5, done.
remote:Compressing objects: 100% (2/2), done.
remote:Total 4 (delta 1), reused 0 (delta 0)
Unpackingobjects: 100% (4/4), done.
Fromfile:///home/jesse123/share/shared
5611a82..4472c99 master -> origin/master
Mergemade by the 'recursive' strategy.
team/user1.txt | 1 +
1 files changed, 1 insertions(+), 0deletions(-)
create mode 100644 team/user1.txt
jesse123@BJSCWL1802 ~/user2
$ ls
forNode3_master.txt main.txt onePice.txt team
jesse123@BJSCWL1802 ~/user2
$ ls./team/
user1.txt user2.txt
jesse123@BJSCWL1802 ~/user2
$ gitlog --graph --oneline
* 7926606Merge branch 'master' of file:///home/jesse123/share/shared
|\
| * 4472c99user1's profile.
* | d2c134cuser2's profile.
|/
* 5611a82 Hello, add onePice.txt.
* 766b6f5 Add new forNode3_master.txt.
* 70519d0 Make some changes.
* 274c5d5 Add a file.
jesse123@BJSCWL1802 ~/user2
$ gitpush
Countingobjects: 10, done.
Deltacompression using up to 4 threads.
Compressingobjects: 100% (5/5), done.
Writingobjects: 100% (7/7), 652 bytes, done.
Total7 (delta 2), reused 0 (delta 0)
Unpackingobjects: 100% (7/7), done.
Tofile:///home/jesse123/share/shared.git
4472c99..7926606 master -> master
Changes in differentfiles.
jesse123@BJSCWL1802 ~/user1
$ gitfetch
remote:Counting objects: 10, done.
remote:Compressing objects: 100% (5/5), done.
remote:Total 7 (delta 2), reused 0 (delta 0)
Unpackingobjects: 100% (7/7), done.
Fromfile:///home/jesse123/share/shared
4472c99..7926606 master -> origin/master
jesse123@BJSCWL1802 ~/user1
$ gitls-files
forNode3_master.txt
main.txt
onePice.txt
team/user1.txt
jesse123@BJSCWL1802 ~/user1
$ gitmerge origin/master
Updating4472c99..7926606
Fast-forward
team/user2.txt | 1 +
1 files changed, 1 insertions(+), 0deletions(-)
create mode 100644 team/user2.txt
jesse123@BJSCWL1802 ~/user1
$ ls./team/
user1.txt user2.txt

Changes in same file.
jesse123@BJSCWL1802 ~/user2/team
$echo "user2 --> hello." > share.txt
jesse123@BJSCWL1802 ~/user2/team
$ gitadd share.txt
jesse123@BJSCWL1802 ~/user2/team
$ gitcommit -m "share.txt change by user2."
[masterad972c0] share.txt change by user2.
1 files changed, 1 insertions(+), 0deletions(-)
create mode 100644 team/share.txt
jesse123@BJSCWL1802 ~/user2/team
$ gitpush
Countingobjects: 6, done.
Deltacompression using up to 4 threads.
Compressingobjects: 100% (3/3), done.
Writingobjects: 100% (4/4), 379 bytes, done.
Total4 (delta 1), reused 0 (delta 0)
Unpackingobjects: 100% (4/4), done.
Tofile:///home/jesse123/share/shared.git
7926606..ad972c0 master -> master
jesse123@BJSCWL1802 ~/user1/team
$ echo"user1 --> hi." > share.txt
jesse123@BJSCWL1802 ~/user1/team
$ gitadd -u
jesse123@BJSCWL1802 ~/user1/team
$ gitcommit -m "share.txt change by user1."
[mastere374ea5] share.txt change by user1.
1 files changed, 1 insertions(+), 0deletions(-)
create mode 100644 team/share.txt
jesse123@BJSCWL1802 ~/user1/team // 先获取远程分支现状
$ gitfetch
jesse123@BJSCWL1802 ~/user1/team // 再对比,查看与本地分支的区别
$ gitdiff master origin/master
diff--git a/team/share.txt b/team/share.txt
index466ac60..bcb5df9 100644
---a/team/share.txt
+++b/team/share.txt
@@ -1 +1,2 @@
user1 --> hi.
+user2 --> hello.
jesse123@BJSCWL1802 ~/user1/team // 最后合并
$ gitmerge origin/master
Updatinge374ea5..449cb76
Fast-forward
team/share.txt | 1 +
1 files changed, 1 insertions(+), 0deletions(-)
jesse123@BJSCWL1802 ~/user1/team
$ catshare.txt
user1--> hi.
user2 --> hello.
Solve conflict and“git blame”
jesse123@BJSCWL1802 ~/user1/team
$ gitblame share.txt // 查看内容具体由谁改动,神器!
e374ea55(user1 2013-02-17 14:30:39 +0800 1) user1 --> hi.
ad972c01 (user22013-02-17 14:30:03 +0800 2) user2 --> hello.
|