一.Git命令(bash)
一.1.安裝
Linux:先從Git官網下載源碼,然后解壓,依次輸入:./config,make,sudo make install這幾個命令安裝就好了
Window:從官網下載安裝即可。https://git-scm.com
Window版安裝完后,右鍵菜單下出現兩個git功能,git bash(命令)和git gui(界面)。我們推薦使用命令操作
一.2.配置用戶名和密碼
用于提交代碼
git config --globaluser.name "Your Name"
git config --globaluser.email"email@example.com"
注意:
加上global,所有的系統都會使用這個賬號,也可以在每個項目中使用不同的用戶,去掉global在項目下運行命令即可。
一.3.創建git項目
在你想要使用git控制版本的項目目錄下,執行git init,會將這個項目納入到git管理。(目錄下會多出個.git的文件夾,類似svn)
一.4.添加項目到git倉庫
第一步:加入到暫存區,git addreadme.txt
第二步:將暫存區提交,git commit-m“寫段注釋”
我們可以時刻看看暫存區是否有代碼要提交,git status,類似于svn的同步
上圖表示修改過readme.txt,但是還沒有提交。
我們還可以使用git diff文件名來查看該文件修改過什么地方了。
一.5.查看歷史記錄
git log [--pretty=oneline ?--graph ]
前面一大段字符串是版本id,后面1.txt commit是本次操作
一.6.回退到歷史記錄
git reset --hardHEAD^
Head在git里表示最新版本的意思head^表示上一個版本。
如果要會退到指定版本,那么可以先查一下歷史記錄,找到要回到的版本號
git log [--pretty=oneline ?--graph ]
接著執行回退命令
git reset --hard3628164
3628164是版本號,不用寫全,寫幾位就可以了,git會自動匹配,也不要寫太少,否則會有多個版本
git reset --hard52918e
如果想從歷史版本回到最新版,現在歷史記錄git log已經查不到了,但是通過命令
git reflog可以查到,接著執行命令git reset --hard
一.7.撤銷修改
git checkout -- file或者
git reset HEAD file退回到該文件最新版本
一.8.刪除文件
git rm文件并且提交git commit
如果刪除還沒有提交,還可以還原
git checkout--文件名
如果刪除提交了,只能用回復歷史記錄了git reset --hard 版本號
一.9.遠程倉庫
一.9.1.遠程倉庫授權代碼提交權限
如果遠程項目開源,可略過此步
參考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000
第1步:創建自己的公鑰SSH Key
ssh-keygen -t rsa -C"youremail@example.com"
第2步:登陸遠程服務器如GitHub,打開“Account settings”,“SSH Keys”頁面
然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內容
點“Add Key”,你就應該看到已經添加的Key:
一.9.2.添加到遠程庫
取得遠程倉庫的地址如:git@github.com:xxx/learngit.git
關聯遠程倉庫
git remote add origin git@github.com:xxx/learngit.git
把本地內容推送到遠程倉庫(第一次推送加-u,這樣會將本地的master和遠程master關聯)
git push -u origin master
以后再提交就不需加-u
git push origin master
一.9.3.從遠程倉庫下載(克隆)
git clone git@github.com:xxx/gitskills.git
注意:一般的git都會有多種協議 如https ?ssh ?git等
一.10.分支管理
一.10.1.創建和合并分支
Git默認一個master分支(主分支)
我們來創建一個dev分支
git checkout -b dev
Git checkout:創建 ?加上-b表示創建后切換到dev
等價于:git branch dev ??git checkout dev
我們看到所在的分支后面的任何操作都是在當前分支下操作,不會影響其他分支
如上圖,dev下我們開發的代碼已經是最新版里,但是master是舊的,我們需要將dev合并到master主分支上
首先:切換回主分支git checkoutmaster
然后:執行合并git mergedev
接著:合并完后,dev其實沒用了,可以刪除git branch -ddev
一.10.2.解決沖突
同svn沖突一樣,git也會出現沖突,當多個分支代碼都更新后
如上圖,分支master和分支feature1都修改了一個文件并且提交
這個時候任意一個分支執行合并都會出現沖突
<<<<<<
=======CreatinganewbranchisquickANDsimple.
>>>>>>> feature1
解決一個分支后繼續提交即可,如下
看一下歷史記錄
$ git log --graph --pretty=oneline --abbrev-commit
*59bc1cb conflict fixed
|\
| *75a857cANDsimple
* |400b400 & simple
|/
* fec145a branch test
一.10.3.遠程分支
在前面步驟中,我們關聯上了遠程代碼,下面直接提交代碼
git push originbranch-name
branch-name要和自己本地庫中分支對應
關聯方法(兩種):
1、git push -u origindev提價本地并在遠程創建并關聯
2、git checkout -b branch-name origin/branch-name創建本地分支名字和遠程一樣
git branch --set-upstream branch-name origin/branch-name關聯上
一.10.4.標簽
創建標簽:git tag v1.0
在分支上創建,標簽就屬于某個分支的
git push origin 可以推送一個本地標簽
git tag -d 可以刪除一個本地標簽
git push origin :refs/tags/可以刪除一個遠程標簽
一.10.5.忽略文件
有一些文件比如.classpath,或者系統生成的文件,對我們的項目沒有任何作用,但是git會管理。我們需要忽略他們
編寫.gitignore文件
內容是你要忽略的文件名
二.git客戶端(gui)
三.eclipse的git插件使用
第一步:安裝好git插件
第二步:打開git視圖
從遠程下載(可以是github或者其他遠程服務器如oschina)
選擇Clone URI
指定下載到本地路徑,其他默認即可,點finish完成下載
導入的eclipse里,隨意修改一個文件,提交
出現git gui一樣的界面,填上你的用戶名和密碼(如果要推送到遠程服務器,用戶必須是git服務器認證過的,除非服務器沒有設置權限認證)
如果遠程服務器已授權,可以推送到遠程服務器
實際開發中是自己公司的遠程服務器