remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (6/6), 726 bytes, done.
remote: Total 6 (delta 0), reused 0 (delta 0)
The simulation operation will create a new folder inside the current working directory. He changed the directory to the newly created folder and ran the git log command.
[tom @ CentOS ~] $ cd project /
[tom @ CentOS project] $ git log
The above command will produce the following result:
commit d1e19d316224cddc437e3ed34ec3c931ad803958
Author: Jerry Mouse
Date: Wed Sep 11 08:05:26 2013 +0530
Changed return type of my_strlen to size_t
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
After observing the log, he noticed that the file string.c was added by Jerry to perform basic string operations. He wants to know about Jerry's code. So he opens string.c in the text editor and immediately finds a bug (error). In the function my_strlen, Jerry does not use a constant pointer. Therefore, he decided to edit Jerry's code. After editing, the code looks like this:
[tom @ CentOS project] $ git diff
The above command will produce the following result:
diff --git a / string.cb / string.c
index 7da2992.32489eb 100644
--- a / string.c
+++ b / string.c
@@ -1,8 +1,8 @@
#include
-size_t my_strlen (char * s)
+ size_t my_strlen (const char * s)
{
- char * p = s;
+ const char * p = s;
while (* p)
++ p;
}
After checking, he commits his changes.
[tom @ CentOS project] $ git status -s
M string.c
?? string
[tom @ CentOS project] $ git add string.c
[tom @ CentOS project] $ git commit -m 'Changed char pointer to const char pointer'
[master cea2c00] Changed char pointer to const char pointer
1 files changed, 2 insertions (+), 2 deletions (-)
[tom @ CentOS project] $ git log
The above command will produce the following result:
commit cea2c000f53ba99508c5959e3e12fff493b
Author: Tom Cat
Date: Wed Sep 11 08:32:07 2013 +0530
Changed char pointer to const char pointer
commit d1e19d316224cddc437e3ed34ec3c931ad803958
Author: Jerry Mouse
Date: Wed Sep 11 08:05:26 2013 +0530
Changed return type of my_strlen to size_t
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Tom uses git push command to push his changes.
[tom @ CentOS project] $ git push origin master
The above command will produce the following result:
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 336 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To gituser@git.server.com: project.git
d1e19d3.cea2c00 master -> master
Meanwhile, Jerry decided to implement string compare function. So he edited string.c. After customization, the file looks like this:
[jerry @ CentOS project] $ git diff
The above command will produce the following result:
index 7da2992.bc864ed 100644
--- a / string.c
+++ b / string.c
30Git Tutorials
@@ -9,9 +9,20 @@ size_t my_strlen (char * s)
return (p -s);
}
+ char * my_strcpy (char * t, char * s)
+
{
+
char * p = t;
+
+ while (* t ++ = * s ++)
+;
+
+
return p;
+
}
+
int main (void)
{
int i;
+
char p1 [32];
char * s [] =
{
"Git tutorials",
"Tutorials Point"
@@ -20.5 +31,7 @@ int main (void)
for (i = 0; i <2; ++ i)
printf ("string lenght of% s =% lun", s [i], my_strlen (s [i]));
+
printf ("% sn", my_strcpy (p1, "Hello, World !!!"));
+
return 0;
}
}
After checking, he is ready to push this change.
[jerry @ CentOS project] $ git status -s
M string.c
?? string
[jerry @ CentOS project] $ git add string.c
[jerry @ CentOS project] $ git commit -m "Added my_strcpy function"
[master e944e5a] Added my_strcpy function
1 files changed, 13 insertions (+), 0 deletions (-)
Before performing the push operation, he modifies the commit by observing the log messages.
[jerry @ CentOS project] $ git log
The above command will produce the following result:
commit e944e5aab74b26e7447d3281b225309e4e59efcd
Author: Jerry Mouse
Date: Wed Sep 11 08:41:42 2013 +0530
Added my_strcpy function
commit d1e19d316224cddc437e3ed34ec3c931ad803958
Author: Jerry Mouse
Date: Wed Sep 11 08:05:26 2013 +0530
Changed return type of my_strlen to size_t
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Jerry is happy with these changes and he wants to push those changes.
[jerry @ CentOS project] $ git push origin master
The above command will produce the following result:
To gituser@git.server.com: project.git
! [rejected]
master -> master (non-fast-forward)
error: bị lỗi khi push một refs để 'gituser@git.server.com: project.git'
Để đặt bạn từ history sử dụng, non-fast-forward updates bị bỏ qua
Merge những thay đổi xa trước khi gỡ bỏ lại. See the 'Note about
fast-forwards' section of 'git push --help' for details.
But Git does not allow Jerry to push his changes. Because Git identifies that remote repository and Jerry's local repository are asynchronous. Because of that, he can lose the history of the project. To avoid this mess, Git forgot this activity. Now, Jerry must first update the local repository and only after that, can he push but change it separately.
Jerry runs the git pull command to synchronize his local repository with a remote repository.
[jerry @ CentOS project] $ git pull
The above command will produce the following result:
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From git.server.com:project
d1e19d3.cea2c00 master -> origin / master
First, rewinding đầu vào lại lại công việc của bạn ở đầu của nó .
Applying: Added my_strcpy function
After performing the pull operation, Jerry checks the log messages and finds Tom's commit details with the commit ID cea2c000f53ba99508c5959e3e12fff493ba6f69.
[jerry @ CentOS project] $ git log
The above command will produce the following result:
commit e86f0621c2a3f68190bba633a9fe6c57c94f8e4f
Author: Jerry Mouse
Date: Wed Sep 11 08:41:42 2013 +0530
Added my_strcpy function
commit cea2c000f53ba99508c5959e3e12fff493ba6f69
Author: Tom Cat
Date: Wed Sep 11 08:32:07 2013 +0530
Changed char pointer to const char pointer
commit d1e19d316224cddc437e3ed34ec3c931ad803958
Author: Jerry Mouse
Date: Wed Sep 11 08:05:26 2013 +0530
Changed return type of my_strlen to size_t
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Now Jerry's local repository is fully synchronized with the remote repository. So he can push changes safely.
[jerry @ CentOS project] $ git push origin master
The above command will produce the result:
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 455 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To gituser@git.server.com: project.git
cea2c00.e86f062 master -> master
According to Tutorialspoint
Previous post: Push operation in HTML
Next lesson: Stash operation in Git