Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Git ʵ¼ù²Ù×÷¼¼ÊõÏê½â
 
  2152  次浏览      27
 2019-9-16
 
±à¼­ÍƼö:

±¾ÎÄÀ´×Ô21CTO£¬ÔÚ±¾ÆªÎÄÕÂÖУ¬ÎÒÏëͨ¹ý¹¹ÔìËüµÄÊ÷µÄ½Ç¶ÈÀ´²é¿´Git´æ´¢¿â£¬¹²Í¬Á˽âGitÊÇÈçºÎ¹¤×÷µÄ¡£

ÔÚ¿ªÊ¼Ö®Ç°£¬ÎÒÃÇÒ»ÆðÎÂϰһÏÂVCS£¬¼´°æ±¾¿ØÖÆÏµÍ³¡£Á÷ÐеÄÈí¼þ°æ±¾¿ªÔ´¹ÜÀíÈí¼þ£¬ÓÐCVS¡¢SVN¡¢TFS¡¢GitÒÔ¼°Mercurial µÈ¹¤¾ß¡£

GitÓëÆäËûVCSÓÐʲô±¾Öʲ»Í¬£¿¿ÉÄÜ×îÃ÷ÏÔµÄÇø±ðÊÇGitÊÇ·Ö²¼Ê½µÄ£¨ÕâºÍSVN»òTFS²»Í¬£©¡£ÕâÒâζ×Å£¬Ä㽫ӵÓÐÒ»¸ö±¾µØ´æ´¢¿â£¬¸Ã´æ´¢¿âλÓÚÃûΪ.gitµÄÌØÊâÎļþ¼ÐÖУ¬Í¨³££¨Ò²²»Ò»¶¨£©»áÓÐÒ»¸öÔ¶³ÌÖÐÑë´æ´¢¿â£¬²»Í¬µÄЭ×÷Õß¿ÉÒÔ¹±Ï×ËûÃǵĴúÂë¡£Çë×¢Ò⣬ÕâЩ¹±Ï×ÕßÖеÄÿһλ¶¼ÔÚ×Ô¼ºµÄ±¾µØ¹¤×÷Õ¾ÉϾßÓд洢¿âµÄ¾«È·¿Ë¡¡£

Git±¾Éí¿ÉÒÔ±»ÏëÏó³ÉλÓÚÎļþϵͳ²ãÖ®Éϲ¢²Ù×÷ÎļþµÄ¶«Î÷¡£ÄãÒ²¿ÉÒÔ½«GitÏëÏó³ÉÒ»ÖÖÊ÷½á¹¹£¬ÆäÖÐÿ´ÎÌá½»¶¼ÔÚÕâ¿ÃÊ÷Öд´½¨Ò»¸öнڵ㡣

¼¸ºõËùÓеÄGitÃüÁîʵ¼ÊÉ϶¼ÓÃÓÚÔÚÕâ¿ÃÊ÷Éϵ¼º½²¢ÏàÓ¦µØ²Ù×÷¡£ GitÔÚÆóÒµÖÐÓëÈÎºÎÆäËûVCSÒ»ÑùÊÜ»¶Ó­¡£

Ϊ´Ë£¬ÎÒ½«½éÉÜÒÔÏÂһЩ³£¼ûÖ®ÓÃÀý£º

1.Ìí¼Ó/ÐÞ¸ÄÐÂÎļþ

2.´´½¨ºÍºÏ²¢ÓкÍûÓкϲ¢³åÍ»µÄ·ÖÖ§

3.²é¿´ÀúÊ·¼Ç¼»ò¸ü¸ÄµÄÈÕÖ¾

4.Ö´Ðлعöµ½Ä³¸öÌá½»

5.½«´úÂë¹²Ïíͬ²½µ½Ô¶¶Ë»òÖÐÑë´æ´¢¿â

GitÊõÓï

ÒÔÏÂÕâÊÇʹÓÃGitµÄ³£ÓÃÊõÓ

master - ´æ´¢¿âµÄÖ÷·ÖÖ§¡£¸ù¾Ý¹¤×÷Á÷³Ì£¬ËüÊÇÒ»¸öÈ˹¤×÷»ò¼¯³É¿ª·¢µÄÖ÷Ïß¡£

clone - ¸´ÖÆÏÖÓеÄgit´æ´¢¿â£¬Í¨³£´Óij¸öÔ¶¶ËλÖø´ÖƵ½±¾µØ»·¾³¡£

commit - ½«ÎļþÌá½»µ½´æ´¢¿â£¨±¾µØÎļþ£©;ÔÚÆäËûVCSÖУ¬Ëüͨ³£±»³ÆÎª¡°check in¡±

fetch»òpull - ¾ÍÏñÔÚÆäËûVCSÖС°update¡±»ò¡°get lastest¡±Ò»Ñù¡£ fetchºÍpullÖ®¼äµÄÇø±ðÔÚÓÚpull½áºÏÁËÁ½Õߣ¬´ÓÔ¶³Ì²Ö¿â»ñÈ¡×îдúÂëÒÔ¼°Ö´Ðкϲ¢¡£

push - ÓÃÓÚ½«´úÂëÌá½»µ½Ô¶³Ì´æ´¢¿â¡£

remote - ÕâЩÊÇÄúµÄ´æ´¢¿âµÄ¡°Ô¶³Ì¡±Î»Öã¬Í¨³£Î»ÓÚij¸öÖÐÑë·þÎñÆ÷ÉÏ¡£

SHA - GitÊ÷ÖеÄÿ¸öÌá½»»ò½Úµã¶¼ÓÉΨһµÄSHAÃÜÔ¿±êʶ¡£Äã¿ÉÒÔÔÚ¸÷ÖÖÃüÁîÖÐʹÓÃËüÃÇÀ´²Ù×÷Ö¸¶¨½Úµã¡£

head - ÊǶÔÎÒÃǵĴ洢¿âµ±Ç°Ö¸ÏòµÄ¹¤×÷¿Õ¼äËùÔÚ½ÚµãµÄÒýÓã¨Ö¸Õ룩¡£

branch - ¾ÍÏñÔÚÆäËüVCSÖÐÒ»Ñù£¬branch´ú±í½×¶ÎÐԵĴúÂ룬²»Í¬Ö®´¦Ëü²»ÏñÆäËûÁ÷ÐеÄVCSÄÇÑùÊÇÎļþµÄÎïÀí¸±±¾£ºÎļþµÄ±ä»¯»òÕß²îÒ죬¶øÊÇһϵÁв»Í¬Ê±¿ÌµÄÎļþ¿ìÕÕ¡£

¹¤×÷Õ¾ÉèÖÃ

ÔÚÕâÎÒ²»ÉîÈë½éÉÜÉèÖù¤×÷Õ¾µÄϸ½Ú£¬ÒòΪÓÐÐí¶à¹¤¾ßÔÚ²»Í¬µÄƽ̨ÉÏ»áÓÐËù²»Í¬¡£ ¶ÔÓÚ±¾ÆªÎÄÕ£¬ÎÒÃǶ¼¿ÉÒÔÔÚÃüÁîÐÐÉÏÖ´ÐÐËùÓвÙ×÷¡£ ¼´Ê¹Äã²»ÊÇʹÓÃShell£¬ÄãÒ²Ó¦¸ÃÊÔÒ»ÊÔ£¨Ëü²»»áÔì³ÉÈκÎÉ˺¦¡£

ÒªÉèÖÃÃüÁîÐÐGit·ÃÎÊ£¬Ö»Ðèתµ½https://git-scm.com/downloads£¬ÔÚÆäÖÐÕÒµ½ÊÊÓÃÓÚÄúµÄ²Ù×÷ϵͳµÄ±ØÐèÏÂÔØ¡£

ÉèÖúÃËùÓÐÄÚÈݲ¢ÔÚPATH»·¾³±äÁ¿ÖÐÌí¼Ó¡°git¡±Ö®ºó£¬Òª×öµÄµÚÒ»¼þʾÍÊÇʹÓÃÄúµÄÐÕÃûºÍµç×ÓÓʼþÅäÖÃgit£º

$ git config --global user.name "Roger Raymond"
$ git config --global user.email "roger.liu@gmail.com"

ÈÃÎÒÃÇ¿ªÊ¼°É£º´´½¨Ò»¸öеÄGit´æ´¢¿â

ÔÚ¿ªÊ¼Ö®Ç°£¬ÈÃÎÒÃÇ´´½¨Ò»¸öеÄĿ¼£¬git´æ´¢¿â½«°ÑÎļþ´æÈëÆäÖУº

$ mkdir mygitrepo
$ cd mygitrepo

ÏÖÔÚÎÒÃÇ×¼±¸³õʼ»¯Ò»¸öȫеÄGit´æ´¢¿â£º

$ git init
Initialized empty Git repository in c:/projects/mystuff/temprepos/mygitrepo/.git/

ÎÒÃÇ¿ÉÒÔʹÓÃstatusÃüÁîÀ´¼ì²éGit´æ´¢¿âµÄµ±Ç°×´Ì¬£º

$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

´´½¨²¢Ìá½»ÐÂÎļþ

ÏÂÒ»²½ÊÇ´´½¨Ò»¸öÐÂÎļþ²¢ÏòÆäÖÐÌí¼ÓһЩÄÚÈÝ£º

$ touch hallo.txt
$ echo Hello, world! > hallo.txt

½ÓÏÂÀ´£¬¼ì²é״̬²¢ÏÔʾ£º

$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# hallo.txt
nothing added to commit but untracked files present (use "git add" to track)

ÐÂÎļþÒª¡°Register¡±×¢²áºó²Å¿ÉÒÔ½øÐÐÌá½»£¬ÐèÒª½«ÆäÌí¼Óµ½GitÖУº

$ git add hallo.txt

¼ì²é״̬±íÃ÷ÎļþÒÑ×¼±¸ºÃÌá½»£º

$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: hallo.txt
#

ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔ°ÑÎļþÌá½»µ½´úÂë²Ö¿âÖÐÁË£º

$ git commit -m "Add my first file"
1 file changed, 1 insertion(+)
create mode 100644 hallo.txt

ͨ³£µÄ×ö·¨ÊÇÔÚÌá½»ÏûÏ¢ÖÐʹÓá°presence¡±¡ª¼´ÒѾ­´æÔÚµÄÊÂʵ¡£ Òò´Ë£¬ÎÒÃÇҪд¡°ÒÑÌí¼ÓÎҵĵÚÒ»¸öÎļþ¡±¶ø²»ÊÇд¡°Ìí¼ÓÎҵĵÚÒ»¸öÎļþ¡±¡£

µÚÒ»´ÎÌá½»ºóµÄrepoÊ÷µÄ״̬£¬¡°master¡±·ÖÖ§Ö¸ÏòÒ»¸ö½Úµã¡£

ÈÃÎÒÃÇÌí¼ÓÁíÒ»¸öÎļþ£º

$ echo "Hi, I'm another file" > anotherfile.txt
$ git add .
$ git commit -m "add another file with some other content"
1 file changed, 1 insertion(+)
create mode 100644 anotherfile.txt

˳±ã˵һ¾ä£¬Çë×¢ÒâÕâ´ÎÎÒÓõÄÊÇgit add . Ëü»áÌí¼Óµ±Ç°Ä¿Â¼£¨.£©ÖеÄËùÓÐÎļþ¡£

´ÓÊ÷µÄ½Ç¶ÈÀ´¿´£¬ÏÖÔÚmasterÒѾ­Ö¸Ïòµ½×îеĽڵ㣺

·ÖÖ§ºÍºÏ²¢ÊÇ Git Ç¿´óµÄ¸ù±¾Ô­Òò£¬ÁíÍâGitÊÇÒ»¸ö·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³¡£

¹¦ÄÜ·ÖÖ§·Ç³£ÊʺÏÓëGitÒ»ÆðÁªÓá£

¹¦ÄÜ·ÖÖ§ÊÇΪÄúÒªÌí¼Óµ½ÏµÍ³µÄÿÖÖй¦ÄÜ´´½¨µÄ£¬Ò»µ©¹¦Äܺϲ¢»Ømaster¼¯³É·ÖÖ§£¨Í¨³£ÊÇmaster·ÖÖ§£©£¬ËüÃÇͨ³£»á±»É¾³ý¡£ÆäÓŵãÊÇÄú¿ÉÒÔÔÚ¸ôÀëµÄ¡°ÓÎÀÖ³¡¡±Öг¢ÊÔй¦ÄÜ£¬²¢ÔÚÐèҪʱ¿ìËÙÇл»µ½Ô­Ê¼µÄ¡°master¡±·ÖÖ§ÉÏ¡£ ¶øÇÒ£¬Í¨¹ý¼òµ¥µØÉ¾³ýÌØÕ÷·ÖÖ§£¬¿ÉÒÔºÜÈÝÒ×µØÔٴζªÆú£¨ÔÚ²»ÐèÒªµÄÇé¿öÏ£©¡£

ÈÃÎÒÃÇ¿ªÊ¼¡£ Ê×ÏÈ£¬ÎÒ´´½¨ÁËÐµĹ¦ÄÜ·ÖÖ§£º

$ git branch my-feature-branch

Ö´ÐУº

$ git branch
* master
my-feature-branch

ÎÒÃÇ»áµÃµ½Ò»¸ö·ÖÖ§ÁÐ±í¡£ masterÇ°ÃæµÄ*ºÅ±íʾÎÒÃǵ±Ç°Ôڸ÷ÖÖ§ÉÏ¡£ ÈÃÎÒÃÇÇл»tomy-feature-branch·ÖÖ§£º

$ git checkout my-feature-branch
Switched to branch 'my-feature-branch'

½ÓÏÂÀ´ÎÒÃÇÑé֤һϣº

$ git branch
master
* my-feature-branch

×¢Ò⣬ÎÒÃÇÒ²¿ÉÒÔÖ±½ÓʹÓÃÃüÁîgit checkout -b my-feature-branchÔÚÒ»¸ö²½ÖèÖд´½¨ºÍ¼ì²éзÖÖ§¡£

ÓëÆäËûVCSµÄ²»Í¬Ö®´¦£¬GitÖ»ÓÐÒ»¸ö¹¤×÷Ŀ¼¡£ ÄãµÄËùÓзÖÖ§¶¼Î»ÓÚͬһ¸ö·ÖÖ§ÖУ¬²¢ÇÒÄã´´½¨µÄÿ¸ö·ÖÖ§¶¼Ã»Óе¥¶ÀµÄÎļþ¼Ð¡£ Ïà·´£¬µ±ÄãÔÚ·ÖÖ§Ö®¼äÇл»Ê±£¬Git½«Ìæ»»¹¤×÷Ŀ¼µÄÄÚÈÝÒÔ·´Ó³ÄãÒªÇл»µ½µÄ·ÖÖ§ÖеÄÄÚÈÝ¡£

ÎÒÃÇÀ´ÐÞ¸ÄÒ»¸öÏÖÓд洢¿âµÄhallo.txtÎļþ£º

$ echo "Hi" >> hallo.txt
$ cat hallo.txt
Hello, world!
Hi

È»ºó½«ÆäÌá½»¸øÎÒÃǵÄзÖÖ§ÖУº

$ git commit -a -m "modify file adding hi"
2fa266a] modify file adding hi
1 file changed, 1 insertion(+)

×¢Ò⣬Õâ´ÎÎÒʹÓÃgit commit -a -mÒ»²½Ìí¼ÓºÍÌá½»Ð޸ġ£ Õâ½öÊÊÓÃÓÚ֮ǰÒÑÌí¼Óµ½git repoµÄÎļþ¡£ Èç¹ûÊÇÐÂÎļþ²»ÄÜÒÔÕâÖÖ·½Ê½Ìí¼Ó£¬ÐèÒªÒ»¸öÏÔʽµÄgit add£¬ÈçÇ°ÃæÃüÁîËùʾ¡£

µ½Ä¿Ç°À´¿´£¬Ò»Çп´ÆðÀ´¶¼ºÜÕý³££¬ÎÒÃÇÔÚÊ÷ÖÐÒѾ­´æÔÚÁËÒ»ÌõÖ±Ïß¡£µ«ÊÇÇë×¢Ò⣬ÎÒÃÇÏÖÔÚÏòÇ°ÒÆ¶¯Á˹¦ÄÜ·ÖÖ§¡£

ÈÃÎÒÃÇÇл»»Ømaster£¬²¢Ôڴ˽ڵãÐÞ¸ÄÏàͬµÄÎļþ£º

$ git checkout master
Switched to branch 'master'

ÕýÈçËùÁÏ£¬´Ë·ÖÖ§µÄhallo.txtÉÐδ¾­¹ýÈκÎÐ޸ģº

$ cat hallo.txt
Hello, world!

ÈÃÎÒÃǸı䲢ÔÚmasterÉÏÌá½»Ëü£¨Õ⽫²úÉúÒ»¸ö¡°ºÜºÃ¡±µÄ³åÍ»£©¡£

$ echo "Hi I was changed in master" >> hallo.txt
$ git commit -a -m "add line on hallo.txt"
c8616db] add line on hallo.txt
1 file changed, 1 insertion(+)

ÎÒÃǵĴúÂëÊ÷ÔÚ¿ÉÊÓ»¯×´Ì¬ÏÂÐγÉÈçÏ·ÖÖ§£º

ºÏ²¢²¢½â¾ö³åÍ»

ÏÂÒ»²½Êǽ«ÎÒÃǵŦÄÜ·ÖÖ§ºÏ²¢µ½masterÖС£ ÎÒÃÇͨ¹ýʹÓÃmergeÃüÁîÀ´Íê³É£º

$ git merge my-feature-branch
Auto-merging hallo.txt
CONFLICT (content): Merge conflict in hallo.txt
Automatic merge failed; fix conflicts and then commit the result.

ÕýÈçÎÒÃÇËùÔ¤ÆÚµÄ£¬ÔÚhallo.txtÎļþÖдæÔںϲ¢³åÍ»¡£

Hello, world!
<<<<<<< HEAD
Hi I was changed in master
=======
Hi
>>>>>>> my-feature-branch

ʹÓÃÈçÏ·½·¨À´½â¾ö£º

Hello, world!
Hi I was changed in master
Hi

....È»ºó£¬ÎÒÃÇÀ´Ìá½»£º

$ git commit -a -m "resolve merge conflicts"
[master 6834fb2] resolve merge conflicts

´úÂëÊ÷»á·´Ó³³öÀ´½â¾öÁ˺ϲ¢³åÍ»¡£

ÉÏͼΪºÏ²¢ºóµÄÊ÷״̬¡£

Ìø×ªµ½Ä³¸öÌá½»

ÈÃÎÒÃǼÙÉèÏëÌøµ½Ö¸¶¨µÄÌá½»¡£ ¿ÉÒÔÏÈʹÓÃgit logÃüÁî»ñȡΨһ±êʶÊ÷ÖÐÿ¸ö½ÚµãµÄËùÓÐSHA1±êʶ·û£º

$ git log
commit 6834fb2b38d4ed12f5486ebcb6c1699fe9039e8e
Merge: c8616db 2fa266a
Author: = Roger<roger.liu@gmail.com>
Date: Mon Apr 22 23:19:32 2018 +0200
resolve merge conflicts
commit c8616db8097e926c64bfcac4a09306839b008dc6
Author: Roger <roger.liu@gmail.com>
Date: Mon Apr 22 09:39:57 2018 +0200
add line on hallo.txt
commit 2fa266aaaa61c51bd77334516139597a727d4af1
Author: Roger <roger.liu@gmail.com>
Date: Mon Apr 22 09:24:00 2013 +0200
modify file adding hi
commit 03883808a04a268309b9b9f5c7ace651fc4f3f4b
Author: Roger <roger.liu@gmail.com>
Date: Mon Apr 22 09:13:49 2018 +0200
add another file with some other content
commit aad15dea687e46e9104db55103919d21e9be8916
Author: Roger <roger.liu@gmail.com>
Date: Mon Apr 22 08:58:51 2018 +0200
Add my first file

»ñÈ¡ÆäÖÐÒ»¸ö±êʶ·û£¨Èç¹ûÕû¸ö±êʶ·ûºÜ³¤£¬Ö»È¡Ç°6λ¼´¿É£¬ºóÃæÎ޹ؽôÒª£©£¬Ê¹ÓÃcheckchendÃüÁîÌø×ªµ½¸Ã½Úµã£º

$ git checkout c8616db
Note: checking out 'c8616db'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at c8616db... add line on hallo.txt

×¢ÒâGitµÄ˵Ã÷ÎÄ×Ö±»´òÓ¡Á˳öÀ´£¬ ÕâÊÇʲôÒâË¼ÄØ£¿ Çø·ÖheadÒâζ×Å¡°head¡±²»ÔÙÖ¸Ïò·ÖÖ§¡°label¡±±êÇ©£¬¶øÊÇÖ¸ÏòÊ÷ÖеÄÌØ¶¨Ìá½»¡£

Äã¿ÉÒÔ½«HEADÊÓΪ¡°µ±Ç°·ÖÖ§¡±¡£ µ±ÄúʹÓÃgit checkoutÇл»·Ö֧ʱ£¬HEADÐÞ¶©°æ½«¸ü¸ÄΪָÏòзÖÖ§µÄÌáʾ¡£ HEAD¿ÉÒÔÒýÓÃÓë·ÖÖ§Ãû³ÆÎ޹صÄÌØ¶¨ÐÞ¶©¡£ ÕâÖÖÇé¿ö³ÆÎª·ÖÀëµÄHEAD¡£

µ±ÎÒÏÖÔÚ¸ü¸Ähallo.txt²¢Ìá½»¸ü¸Äʱ£¬Ê÷¿´ÆðÀ´ÈçÏ·ÖÀëhead״̬£º

ÎÒÃÇ¿´µ½£¬Ð´´½¨µÄ½ÚµãÉÏûÓбêÇ©¡£ ĿǰΨһָÏòËüµÄ²Î¿¼ÊÇhead¡£ µ«ÊÇ£¬Èç¹ûÎÒÃÇÏÖÔÚÔÙ´ÎÇл»µ½master£¬ÄÇô֮ǰµÄÌá½»½«»á¶ªÊ§£¬ÎÞ·¨Ìø»Øµ½¸ÃÊ÷µÄ½Úµã¡£

$ git checkout master
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
576bcb8 change file undoing previous changes
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch new_branch_name 576bcb8239e0ef49d3a6d5a227ff2d1eb73eee55
Switched to branch 'master'

ÊÂʵÉÏ£¬Git·Ç³£ÓÑÉÆµØÌáÐÑÎÒÃÇÕâ¸öÊÂʵ¡£ Ê÷ÏÖÔÚÔٴο´ÆðÀ´Èçͼ6ËùʾÁË¡£

»Ø¹ö

Ìø×ª¹¦Äܺܲ»´í£¬µ«ÊÇÈç¹ûÎÒÃÇÏëÒªÔÚ¹¦ÄÜ·ÖÖ§ºÏ²¢Ö®Ç°½«ËùÓÐÄÚÈݳ·Ïûµ½Ô­Ê¼×´Ì¬ÄØ£¿ ÕâºÜ¼òµ¥£º

$ git reset --hard c8616db
HEAD is now at c8616db add line on hallo.txt

ÉÏÃæÊÇÖØÖúóµÄÊ÷״̬¡£

»Ø¹öµÄͨÓÃÓï·¨ÊÇ£º

git reset --hard <tag/branch/commit id>

ʹÓá°revert¡±»Ø¹ö¸Ä±äÊǸöºÃ·½·¨

Èç¹ûÄãÐèÒª»Ø¹öÒ»¸öÍêÕûµÄÌá½»£¬¸üÔã¸âµÄÊÇÄã¿ÉÄÜÒѾ­½«Ëüͬ²½µ½Ò»¸öÔ¶³Ì´æ´¢¿â£¬ÄÇôʹÓÃgit reset --hard¿ÉÄܲ»»áÄÇô³É¹¦£¬ÒòΪÄãÒÔijÖÖ·½Ê½ÖØÐ´²»ÀúÊ·¼Ç¼£¬ ÄãµÄ²Ö¿âÒѾ­Í¬²½µ½Ô¶³Ì²Ö¿âÁË¡£

ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔʹÓÃrevertÃüÁËü½«´´½¨Ò»¸öеÄÌá½»£¬³·ÏûÄúÖ¸¶¨µÄÌØ¶¨Ìá½»µÄËùÓиü¸Ä¡£ ÀýÈ磬¼ÙÉèÒª»Ø¹öIDΪ41b8684µÄcommit£º

$ git revert 41b8684

¹²Ïí/ͬ²½ÄúµÄ´æ´¢¿â

×îÖÕ£¬ÎÒÃÇÏ£Íûͨ¹ý½«´úÂëͬ²½µ½ÖÐÑë´æ´¢¿âÀ´¹²ÏíÎÒÃǵĴúÂë¡£ Ϊ´Ë£¬ÎÒÃÇÐèÒªÌí¼Óµ½ remoteÔ¶¶Ë¡£È磺

$ git remote add origin git@github.com: birepo/intro.js.git

Òª²é¿´²Ù×÷ÊÇ·ñ³É¹¦£¬Ö»ÐèÊäÈ룺

$ git remote -v

ÁгöÁËËùÓÐÌí¼ÓµÄremote°æ±¾¡£ ÏÖÔÚÎÒÃÇÐèÒª½«±¾µØ·ÖÖ§Ö÷»ú·¢²¼µ½Ô¶³Ì´æ´¢¿â¡£ ÕâÑù×öÀàËÆÈçÏ£º

$ git push -u origin master

ÕâÑù¾Í³É¹¦Íê³ÉÁËͬ²½¡£

ÕæÕýÓÐÓõÄÊÇ£¬Äã¿ÉÒÔÌí¼Ó¶à¸ö²»Í¬µÄremote¡£ Õâͨ³£ÓëÔÆÍйܽâ¾ö·½°¸½áºÏʹÓã¬ÒÔÔÚÄúµÄ·þÎñÆ÷Éϲ¿Êð´úÂë¡£ ÀýÈ磬Äã¿ÉÒÔÌí¼ÓÃûΪ¡°deploy¡±µÄÔ¶³ÌÖ¸Ïòij¸öÔÆÍйܷþÎñÆ÷´æ´¢¿â£¬ÀýÈ磺

$ git remote add deploy git@somecloudserver.com:birepo/myproject

È»ºó£¬Ö»ÒªÄãÏë·¢²¼ÄãµÄ·ÖÖ§£¬¾ÍÖ´ÐÐһϣº

$ git push deploy

¿Ë¡

ͬÑù£¬Èç¹ûÄúÏë´ÓÏÖÓеÄÔ¶³Ì´æ´¢¿â¿ªÊ¼£¬ËüÒ²¿ÉÒÔ¹¤×÷¡£ ÐèÒªÍê³ÉµÄµÚÒ»²½ÊÇ¡°check out¡±Ô´´úÂ룬ÕâÔÚGitÊõÓïÖгÆÎªcloning¡£ ËùÒÔÎÒÃÇ»á×öÀàËÆµÄÊ£º

git clone git@github.com:birepo/intro.js.git
Cloning into 'intro.js'...
remote: Counting objects: 430, done.
remote: Compressing objects: 100% (293/293), done.
remote: Total 430 (delta 184), reused 363 (delta 128)
Receiving objects: 100% (430/430), 419.70 KiB | 102 KiB/s, done.
Resolving deltas: 100% (184/184), done.

Õ⽫´´½¨Ò»¸öÃûΪ¡°intro.js¡±µÄÎļþ¼Ð£¬ÏȽøÈë¸ÃĿ¼£º

$ cd intro.js/

²¢¼ì²éremote£¬ÎÒÃÇ¿´µ½ÒѾ­ÉèÖÃÁËÔ¶¶Ë´æ´¢¿âµÄÏàÓ¦¸ú×ÙÐÅÏ¢£º

$ git remote -v
origin git@github.com:juristr/intro.js.git (fetch)
origin git@github.com:juristr/intro.js.git (push)

ÎÒÃÇÏÖÔÚ¿ÉÒÔÕý³£Æô¶¯commit/branch/pushµÄGit²Ù×÷Ñ­»·ÁË¡£

 
   
2152 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÿÈÕ¹¹½¨½â¾ö·½°¸
ÈçºÎÖÆ¶¨ÓÐЧµÄÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀíÖ÷Òª»î¶¯¼°ÊµÏÖ·½·¨
¹¹½¨¹ÜÀíÈëÃÅ
Ïà¹ØÎĵµ

ÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀí°×ƤÊé
CM09_CÅäÖùÜÀí±ê×¼
ʹÓÃSVN½øÐа汾¿ØÖÆ
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀíʵ¼ù
ÅäÖùÜÀí·½·¨¡¢¹¤¾ßÓëÓ¦ÓÃ
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
²úÆ··¢²¼¹ÜÀí