為了方便自己的代碼管理,通常是把自己的寫的一些小項目分享到GitHub 或者git.oschina上面!
區別:
GitHub 只能創建公開的項目,國外的,速度慢!
git.oschina 開源中國的代碼托管平台,可建私有的,國內的,速度快!
一,准備工作:
Git 客戶端安裝:下載git 客戶端,並安裝!
在oschina/GitHub創建賬號並創建項目!
然后,就得到了遠程倉庫的url:
https://git.oschina.net/ut2002/WebViewSSL.git
二,Git操作流程:(以oschina平台為例,github等同)
Git項目:git@github.com:用戶名/項目名.git
OsChina項目:git@oschina.net:用戶名/項目名.git
方法一:本地創建項目根目錄(本地倉庫),然后與遠程oschina關聯!
-- 初始化Git倉庫 :git init ; //新建一個本地倉庫
-- 添加文件 :git add ./* ; //將目錄中所有文件添加;
-- 提交改變到緩存 :git commit -m 'description' ;
-- 本地git倉庫關聯Git倉庫 :
git remote add origin https://git.oschina.net/ut2002/WebViewSSL.git ;
// 添加遠程倉庫,origin只是一個遠程倉庫的別名,可以隨意取
-- 提交到Git倉庫前先更新遠程倉庫內容至本地 : git pull origin master ;
// 防止遠程倉庫,有更新而產生沖突
-- 提交到Git中 : git push -u origin master ;
//將本地倉庫push遠程倉庫,並將origin設為默認遠程倉庫
在本地項目中右鍵進入git 命令行模式
然后,按上面的步驟進行操作!
輸入 賬號與密碼,進行上傳!
但是報錯如下:
根據提示先pull
這是因為期間遠程倉庫有可能有更新,提示在push前因先把遠程倉庫的代碼更新到本地,才能push!
Git pull origin master
上傳成功!
注意:有時有開分支開發時,需要合並分支至master,
輸入命令git merge gh-pages(分支名) 報錯! fatal:refusing to merge unrelated histories.
原因是合並不相關的會產生新的歷史記錄,所以應該這樣
git merge gh-pages --allow-unrelated-histories
方法二:不用關聯遠程倉庫,直接從git倉庫拉源碼至本地!
-- 從Git倉庫拉項目到本地 :git clone https://git.oschina.net/ut2002/HelloDemo.git , 注意克隆 的時候直接在倉庫根目錄即可, 不用再創建項目根目錄 ;
拉下來的項目會自動生成 .git文件,表明,是個git倉庫,不用git init來初始化!
-- 添加文件 :git add ./* , 將目錄中所有文件添加;
-- 提交緩存 :git commit -m 'description';
-- 合並 master :git merge master;
-- 與GitHub遠程倉庫同步 :git pull 遠程倉庫地址 ;
-- 提交到遠程GitHub倉庫 : git push 遠程倉庫地址 master ;
之后修改提交 :
-- 與GitHub遠程倉庫同步 :git pull ;
-- 查看文件變更 : git status ;
-- 提交代碼到本地緩存 : git commit -m 'description';
--提交代碼到遠程GitHub倉庫 :git push ;
圖文步驟:
在要建立本地倉庫的文件中進入git命令行模式:如方法一 進入git命令行模式
從遠程倉庫 clone下項目,然后就會在命令行的目錄下生成.git文件!
如在git pull 報錯:
錯誤可能是因為在你以前pull下來的代碼沒有自動合並導致的.
保留你本地的修改 git merge --abort git reset --merge
合並后記得一定要提交這個本地的合並,然后在獲取線上倉庫!再git pull!
如在 git add --all 報錯
原因分析:
在windows中的換行符為 CRLF, 而在linux下的換行符為:LF
使用git來生成工程后,文件中的換行符為LF, 當執行git add .時,系統提示:LF 將被轉換成 CRLF
解決方法:
刪除剛剛生成的.git文件
rm -rf .git
git config --global core.autocrlf false
這樣系統就不會去進行換行符的轉換了
最后重新執行
Git init 再 git add --all
就按正常步驟操作!
如 git push 報 : error:src refspec master does not match any
原因分析
引起該錯誤的原因是,目錄中沒有文件,空目錄是不能提交上去的
解決方法
touch README
方法三:用Git Gui圖形化界面來操作!
- - 創建 Create New Repository
Create New Repository : 創建新的版本庫
Clone Existing Repository :克隆存在的版本庫
Open Existing Repository :打開存在的版本庫
如本地目錄沒有源文件,可以把源文件拷貝至目錄下!
----提交本地文件至git倉庫
確定后
填寫提交描述信息
然后填寫遠程倉庫地址
輸入賬號與密碼成功!
----從git倉庫clone項目,再提交
選擇克隆新的版本庫然后Clone git項目
注意:本地目錄需是沒有存在的目錄,不然會報已存在,因為clone下來會自動創建
因為項目文件沒有任何改動,所以顯示的是空白!
可通過,clone任一開源項目地址,再push自己的遠程倉庫,這樣,實現下載開源項目,修改,學習,再push至自己的遠程倉庫,來記錄自己學習的過程!!!很方便滴!!
三種方法,比較推薦用Git Gui這樣的方式 ,能減少出錯!!
附二,簡單教程
附 git分支開發原則:
原文鏈接http://blog.csdn.net/YanJiangbo/article/details/25738737
如果本地dev分支有修改,則需要先切換到master分支,把本地分支的修改merge回master(Git merge dev),然后在master上把合並后的內容push到master上;然后再切換回本地分支,再把master的內容merge回分支,然后就繼續在分支開發。
開發流程:
// 查看本地分支
git branch
// 顯示本地、服務器所有分支
git branch -a
// 顯示本地分支和服務器分支的映射關系
git branch -vv
// 切換分支(和創建分支就差一個-b參數)
git checkout {{branch_name}}
// 創建新分支,新分支的代碼來自於當前分支
git checkout -b [分支名]
// push本地分支代碼到遠端服務器,如果遠端服務器沒有該分支,將會自動創建;
git push origin [遠端分支名]
// pull遠端分支代碼到本地當前分支(建議使用)
git pull origin master
如果只想用git pull,可能需要建立track關系,則使用
git branch --set-upstream-to=origin/<遠端branch_name> <本地branch_name>
輸出結果:Branch h5_dev set up to track remote branch h5_dev from origin.
// 合並本地master分支到當前分支,比如當前處於dev分支,則把master上的代碼merge到dev分支上
git merge master
// 合並遠程master分支到當前分支
git merge origin/master
// 刪除本地分支
git checkout {{another_branch}}
git branch -d {{local_branch_name}}
//刪除遠程分支
git push origin --delete {{branch_name}}
# 假設本地有兩個分支: master和dev, 使用dev進行本地開發
常用命令:
1. git config --global user.name
2. git config --global color.status auto
3. git config --global color.diff auto
4. git remote -v// 查看遠程分支的git路徑
5. git clone git@192.168.53.123/tv.git
6. git status // 查看當前版本的狀態(是否修改)
7. git add xyz // 添加當前修改的文件到暫存區 or 跟蹤新文件(git add .把所有修改的文件add在暫存區)
8. git commit -m '{{update_msg}}'
9. git rm xxx // 從當前跟蹤列表移除文件,並完全刪除
10. git rm -cached xxx// 僅在暫存區刪除,保留文件在當前目錄,不再跟蹤
11. git mv old_name new_name// 重命名文件
12. git log
13. git log -n
14. git log --stat
15. git show b4f44fe
16. git diff
強制回滾命令:
git reset --hard e1da2c37bdaf3df52b9cf105ec7a7bd83f488bc1(上一次提交的號)
把遠程分支拉倒本地,並建立關聯關系track:
git checkout --track origin/jiangbo_dev
Branch jiangbo_dev set up to track remote branch jiangbo_dev from origin.
Switched to a new branch 'jiangbo_dev'