Clear, practical technology insights BSOD Code Lookup · Windows Error Code Lookup · Wi-Fi Troubleshooting · PC Troubleshooting Checklist

Customize Existing Functions: Update Activity in Git

Understand Customize Existing Functions: Update Activity in Git with clear explanations, practical examples, and useful tips. This updated guide covers the...

Table of Contents

Customize Existing Functions: Update Activity in Git is easier to understand when the core ideas are paired with practical examples. The sections below explain the topic clearly, highlight useful steps, and point out details that can prevent common errors.

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

FAQ

What should you know about 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.

What should you know about add new functions?

Meanwhile, Jerry decided to implement string compare function. So he edited string.c. After customization, the file looks like this:

What should you know about call out the latest changes?

Jerry runs the git pull command to synchronize his local repository with a remote repository.

Discussion

Reader Comments 0

Sign in with email or Google to join the discussion.