±à¼ÍƼö: |
±¾ÎÄÀ´×Ô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 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£º
¹²Ïí/ͬ²½ÄúµÄ´æ´¢¿â
×îÖÕ£¬ÎÒÃÇÏ£Íûͨ¹ý½«´úÂëͬ²½µ½ÖÐÑë´æ´¢¿âÀ´¹²ÏíÎÒÃǵĴúÂë¡£ Ϊ´Ë£¬ÎÒÃÇÐèÒªÌí¼Óµ½ remoteÔ¶¶Ë¡£È磺
$ git remote
add origin git@github.com: birepo/intro.js.git
|
Òª²é¿´²Ù×÷ÊÇ·ñ³É¹¦£¬Ö»ÐèÊäÈ룺
ÁгöÁËËùÓÐÌí¼ÓµÄremote°æ±¾¡£ ÏÖÔÚÎÒÃÇÐèÒª½«±¾µØ·ÖÖ§Ö÷»ú·¢²¼µ½Ô¶³Ì´æ´¢¿â¡£ ÕâÑù×öÀàËÆÈçÏ£º
$ git push -u
origin master |
ÕâÑù¾Í³É¹¦Íê³ÉÁËͬ²½¡£
ÕæÕýÓÐÓõÄÊÇ£¬Äã¿ÉÒÔÌí¼Ó¶à¸ö²»Í¬µÄremote¡£ Õâͨ³£ÓëÔÆÍйܽâ¾ö·½°¸½áºÏʹÓã¬ÒÔÔÚÄúµÄ·þÎñÆ÷Éϲ¿Êð´úÂë¡£
ÀýÈ磬Äã¿ÉÒÔÌí¼ÓÃûΪ¡°deploy¡±µÄÔ¶³ÌÖ¸Ïòij¸öÔÆÍйܷþÎñÆ÷´æ´¢¿â£¬ÀýÈ磺
$ git remote
add deploy git@somecloudserver.com:birepo/myproject
|
È»ºó£¬Ö»ÒªÄãÏë·¢²¼ÄãµÄ·ÖÖ§£¬¾ÍÖ´ÐÐһϣº
¿Ë¡
ͬÑù£¬Èç¹ûÄúÏë´ÓÏÖÓеÄÔ¶³Ì´æ´¢¿â¿ªÊ¼£¬ËüÒ²¿ÉÒÔ¹¤×÷¡£ ÐèÒªÍê³ÉµÄµÚÒ»²½ÊÇ¡°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¡±µÄÎļþ¼Ð£¬ÏȽøÈë¸ÃĿ¼£º
²¢¼ì²é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²Ù×÷Ñ»·ÁË¡£
|