Update activity in Git

Tom performs the simulation operation and sees a new file string.c. He wants to know who added this file to the repository and for what purpose, so he runs the git log command.

Customize existing functions

Tom performs the simulation operation and sees a new file string.c. He wants to know who added this file to the repository and for what purpose, so he runs the git log command.

 [tom @ CentOS ~] $ git clone gituser@git.server.com: project.git 

This command will produce the following result:

 Initialized empty Git repository in /home/tom/project/.git/ 
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

Add new functions

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.

Call out the latest changes

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

4 ★ | 1 Vote