git是分布式版本管理工具。Git可以在Linux、Unix、Mac和Windows這幾大平台上正常運行。git不區分服務端和客戶端,也就意味着,當你安裝好了git,客戶端和服務端都有了。
本文以github為例講解如何使用git。
更多內容詳見github:
52fhy/gitlearn: 這是初次學習git的一些筆記,可以幫助新手快速入門。
https://github.com/52fhy/gitlearn
如何在公司快速使用git協作
如果之前沒有接觸過git,公司里使用git協作,為了快速能用起git,你不用去學git,只要會下面的命令即可。
需要克隆項目:
git clone git@github.com:52fhy/gitlearn.git
記得替換成實際的項目路徑。
之后每天只要使用下面4條命令即可:
git add . git commit -m "備注" git pull git push
記住順序不能亂,pull之前先提交本地到版本庫,防止被拉下來的代碼覆蓋;提交之前先拉線上的代碼下來進行合並,防止沖突。
pull拉取線上代碼到本地並執行合並,相當於執行了git fetch;git merge; push推送本地(默認是master分支)到線上並合並,注意觀察是否有沖突。有沖突必須手動修改,再從頭執行一遍。
每天基本上就上面4條命令就足夠了。
如果第一次你還沒有ssh公鑰,現象就是你克隆不了,沒有權限。如果本地的用戶目錄下面沒有.ssh目錄沒有 id_rsa.pub公鑰文件,需要新建公鑰私鑰:
$ ssh-keygen -t rsa -C "youremail@example.com"
接下來一路回車即可。
1、第一次使用github
1)github注冊賬號,網址:https://github.com/
使用郵箱注冊賬號
先不要創建版本庫
2)安裝git
Linux請參考網上教程,這里演示windows操作。
實際命令行操作基本是一樣的。
msysgit 是Windows版的Git,從http://msysgit.github.io/下載,然后按默認選項安裝即可。
官方下載比較慢,可以使用第三方下載點:Git-2.7.2-32-bit_setup.1457942412.exe
安裝完成后,在開始菜單里找到"Git"->"Git Bash",蹦出一個類似命令行窗口的東西,就說明Git安裝成功!
說明:git命令操作和Linux命令差不多,很多命令可以直接使用,比如cd,vi
3)安裝完成后,還需要最后一步設置,即配置本地git用戶名和郵箱。在命令行輸入:
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。
注意git config命令的--global參數,用了這個參數,表示你這台機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。
下次重新使用這兩個命令可以更新用戶名和郵箱。
通過 git config -l 可以查看已有的配置。
4)創建SSH Key
在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub(公鑰)這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
其中-t指定rsa加密;-C是備注,可選。
會讓你輸入 .ssh/id_rsa 文件的路徑,默認即可
然后輸入自定義私鑰密碼(下次用來確認你的身份),確認即可:
Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/YJC/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/YJC/.ssh/id_rsa. Your public key has been saved in /c/Users/YJC/.ssh/id_rsa.pub. The key fingerprint is: xx:80:50:0f:25:xx:c8:f1:3c:fe:5e:90:be:9d:d5:xx
注意:
如果由於其他原因導致git提交時提示 Could not create directory '//.ssh'. ,可以刪除之前的id_rsa文件,重新進行:
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" $ ssh-keygen -t rsa -C "youremail@example.com"
windows上id_rsa文件位於用戶主目錄:C:/Users/YJC/.ssh/
id_rsa
id_rsa.pub
當提示 Enter file in which to save the key (//.ssh/id_rsa): 默認可以為空,如果不行,輸入:C:/Users/YJC/.ssh/id_rsa
當提示
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
輸入一個密碼即可。下次提交代碼會讓你輸入密碼。
5)登陸GitHub,打開"Account settings","SSH Keys"頁面:
然后,點"Add SSH Key",填上任意Title,在Key文本框里粘貼 id_rsa.pub 文件的內容:
為什么GitHub需要SSH Key呢?因為GitHub需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,所以,GitHub只要知道了你的公鑰,就可以確認只有你自己才能推送。
當然,GitHub允許你添加多個Key。假定你有若干電腦,你一會兒在公司提交,一會兒在家里提交,只要把每台電腦的Key都添加到GitHub,就可以在每台電腦上往GitHub推送了。
6)創建本地版本庫(我選的D盤)
$ cd /d/phpsetup/www/git/ $ mkdir fhyblog $ cd fhyblog $ pwd
/d/phpsetup/www/git/fhyblog
7)通過 git init 命令把這個目錄變成Git可以管理的倉庫:
$ git init
Initialized empty Git repository in /Users/52fhy/fhyblog/.git/
瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個 .git 的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。
注意幾個概念:
工作區就是創建倉庫的文件夾如(fhyblog文件夾就是一個工作區)
版本庫就是工作區的隱藏目錄.git
版本庫中有暫存區(stage/index)和分支(master)
git add 實際是把文件添加到暫存區
git commit 把暫存區的內容提交到當前分支
8)在本地版本庫fhyblog里放入一些代碼或文件
我放了src目錄和一個readme.txt文件
git status 可以查看工作區有改動。
9)進入版本庫目錄:
$ cd /d/phpsetup/www/git/fhyblog/
10)更新本地版本庫(.指當前所有目錄及文件)
$ git add .
當然,如果你僅僅是提交一個文件,可以這樣寫
$ git add readme.txt
更新一個目錄這樣寫:
$ git add src/
此時還沒有真正提交到版本庫,只是從工作區放到暫存區。提交請繼續往下看:
11)執行更新操作:
$ git commit -m "相關說明"
[master 91115af] . 1 file changed, 53 insertions(+) create mode 100644 "\345\215\207\347\272\247\346\227\245\345\277\227.txt"
這樣就提交到了本地版本庫的master分支(默認)。通過 git log 可以查看提交記錄,通過 git status 可以查看工作區情況。
一般情況,如果是個人開發,主要就是 git add 命令和 git commit 命令:提交更改至暫存區,然后提交到分支。
如果是團隊協作,需要統一在遠程版本庫交換更改,就要用到 git pull 和 git push 命令了。
注意:git本身並不依賴遠程版本庫,這點和svn不一樣。遠程版本庫的作用是方便交換更改,如github。
12)更新至遠程(Github):
要關聯一個遠程庫,使用命令
$ git remote add origin git@github.com:yourname/yourgit.git
關聯后,使用命令
git push -u origin master
進行第一次推送master分支的所有內容;
所以,遠程github上確保你的版本庫是空的,否則你在這一步可能會不成功。
此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;
$ git push origin master
Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts. Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa': Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 292 bytes | 0 bytes/s, done. Total 2 (delta 0), reused 0 (delta 0) To git@github.com:52fhy/fhyblog.git efe4969..91115af master -> master Branch master set up to track remote branch master from origin. Admin@YJC-PC /d/phpsetup/www/git/fhyblog (master)
如果完成到這里,恭喜你!你已經有了本地和遠程版本庫了。
注意:
origin 是默認的遠程版本庫名稱(可以在 .git/config 之中進行修改) git push origin master 的意思是 git push origin master:master (將本地的 master 分支推送至遠端的 master 分支,如果沒有就新建一個) git push origin master和git push有什么區別? 1、master是主分支,還可以建一些其他的分支用於開發。 2、git push origin master的意思就是將本地的 master 分支推送至遠端的 master 分支。git push是上傳本地所有分支代碼到遠程對應的分支上。
master其實是一個“refspec”,正常的“refspec”的形式為”+<src>:<dst>”,冒號前表示local branch的名字,冒號后表示remote repository下 branch的名字。注意,如果你省略了<dst>,git就認為你想push到remote repository下和local branch相同名字的branch。
2、再次使用git
以后本地版本庫里有更新,使用 git add 添加,使用命令 git commit 提交。
更新至遠程使用命令 git push origin master 推送
git add . git commit -m "update something..." git pull git push
先git pull再git push防止覆蓋他人代碼造成沖突。
可以使用git status命令查看git倉庫狀況。
3、從遠程更新至本地版本庫
要克隆一個倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。
$ git clone git@github.com:52fhy/fhyBlog.git
Cloning into 'fhyBlog'... Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa': remote: Counting objects: 284, done. remote: Compressing objects: 100% (238/238), done. remote: Total 284 (delta 28), reused 283 (delta 27)R Receiving objects: 94% (267/284), 644.00 KiB | 12.00 KiB/ Receiving objects: 100% (284/284), 676.81 KiB | 12.00 KiB/s, done. Resolving deltas: 100% (28/28), done.
其他:
忽略 .gitignore 已經跟蹤的目錄,如 dir/ :
git rm -r --cached dir
git別名
git可以配置別名,這樣不用擔心記不住命令了。
很多人都用co表示checkout,ci表示commit,br表示branch:
$ git config --global alias.co checkout $ git config --global alias.ci commit $ git config --global alias.br branch
有人喪心病狂地把lg配置成了:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
使用 git lg 看看效果吧!
===寫在后面===
本文僅是Git的基本使用,可以作為新手入門教程。更多Git相關操作,請參考:
1、Git教程,極力推薦,尤其是新手。本文就參考了該教程。
2、《Pro Git》一書,百度搜索吧;
3、Git官方教程
參考文檔:
1、Git 使用及原理 總結 - 人間奇跡 - 博客園
http://www.cnblogs.com/yaozhongxiao/p/3794963.html
2、learngit/git學習筆記.md at master · michaelliao/learngit · GitHub
https://github.com/michaelliao/learngit/blob/master/Git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.md
覺得有收獲,記得推薦一下哦!
