http://git.oschina.net/oschina/git-osc/wikis/幫助#工作流程
[TOC]
## 幫助
[頁面歷史](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9/history)
# [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#工作流程)工作流程
* * *
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#安裝設置-git)安裝設置 git
下載最新版本的git
~~~
http://git-scm.com/downloads
~~~
當你安裝完成git的時候,你需要簡單的配置一下,打開終端:
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#用戶名)用戶名
第一步,你需要告訴git你的名字,這個名字會出現在你的提交記錄中。
~~~
git config --global user.name "你的名字"
~~~
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#email)Email
然后是你的Email,同樣,這個Email也會出現在你的提交記錄中,請盡量保持此Email和您的Git@OSC的注冊Email一致。
~~~
git config --global user.email "你的Email"
~~~
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#clone-和-push)Clone 和 Push
Clone 項目
~~~
git clone http://git.oschina.net/xxxxxx/xxxxxx.git
~~~
創建特性分支
~~~
git checkout -b $feature_name
~~~
寫代碼,提交變更
~~~
git commit -am "My feature is ready"
~~~
將你的提交推送到 Git@OSC
~~~
git push origin $feature_name
~~~
在提交頁面你可以查看你的變更,例如:
[http://git.oschina.net/oschina/git-osc/commit/f3dd1c5bae48fa4244e2595a39e750e5606dd9be](http://git.oschina.net/oschina/git-osc/commit/f3dd1c5bae48fa4244e2595a39e750e5606dd9be)
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#創建一個-pull-request)創建一個 pull request
你可以fork任意的公開項目,當你修改了你fork的項目,你可以向源項目提交pull request。項目的作者在審閱過代碼后可以決定是否將此變更應用到源項目。
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#在git-osc上使用svn)在GIT@OSC上使用SVN
使用教程已經整理在[這里](http://git.oschina.net/oschina/git-osc/wikis/%E5%9C%A8GIT%40OSC%E4%B8%8A%E4%BD%BF%E7%94%A8SVN)
* * *
# [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#ssh-keys)SSH Keys
* * *
SSH key 可以讓你在你的電腦和 Git @ OSC 之間建立安全的加密連接。
你可以按如下命令來生成sshkey
~~~
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"# Creates a new ssh key using the provided email
# Generating public/private rsa key pair...
~~~
查看你的public key,并把他添加到 Git @ OSC?[http://git.oschina.net/keys](http://git.oschina.net/keys)
~~~
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
~~~
添加后,在終端(Terminal)中輸入
~~~
ssh -T git@git.oschina.net
~~~
若返回
~~~
Welcome to Git@OSC, yourname!
~~~
則證明添加成功。
* * *
# [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#關于權限)關于權限
* * *
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#訪客)訪客
* 創建issue
* 評論
* Clone 和 Pull 項目
* 打包下載代碼
* Fork 項目
* 創建 pull request
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#報告者)報告者
* 繼承訪客的權限
* 私有項目:不能查看代碼
* 私有項目:不能下載代碼
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#觀察者)觀察者
* 繼承報告者權限
* 創建wiki
* 打包下載代碼
* 不能push代碼
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#開發者)開發者
* 創建 issue
* 評論
* Clone 和 Pull 項目
* 打包下載代碼
* 創建 pull request
* 創建分支
* 推送分支
* 刪除分支
* 創建標簽(里程碑)
* 創建 wiki
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#管理員)管理員
* 創建 issue
* 評論
* Clone 和 Pull 項目
* 打包下載代碼
* 創建 pull request
* 創建分支
* 推送分支
* 刪除分支
* 創建標簽(里程碑)
* 創建 wiki
* 添加項目成員
* 強制推送分支
* 編輯項目屬性
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#項目組管理員)項目組管理員
* 編輯項目組屬性
* 增加成員
* 添加/刪除項目
* 設置項目組管理員
* 刪除項目組
* 更改成員項目權限
* * *
# [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#git-osc-flavored-markdown)Git @ OSC Flavored Markdown
* * *
Git @ OSC 的markdown基于原markdown做了一下擴展,具體使用如下。
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#you-can-use-gfm-in-)You can use GFM in:
* 提交消息
* 評論
* issues
* pull requests
* 里程碑
* wiki 頁面
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#跟傳統的markdown的區別)跟傳統的Markdown的區別
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#url-自動鏈接)URL 自動鏈接
~~~
插入的URL不需要做特殊處理,會自動變成鏈接。
~~~
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#emoji表情)Emoji表情
> 支持Emoji表情,參考:[Emoji cheat sheet](http://www.emoji-cheat-sheet.com/)
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#插入代碼片段)插入代碼片段
可以向如下這種方式插入代碼片段,可以在標記后面指定編程語言,如果沒有指定語言,編譯器會嘗試自動識別。
~~~
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
~~~
將會變成
~~~
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
~~~
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#特殊的-git-osc-引用-)特殊的 Git@OSC 引用。
GFM 可以識別一些特殊的標記,并且支持自動補全,例如:
* [#123](http://git.oschina.net/oschina/git-osc/issues/123 "Issue: ")?(Issue)
* !123 (Pull Request)
* 1234567 (提交)
* :icon: (emoji 表情)
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#如何導入外部的git倉庫-)如何導入外部的Git倉庫?
因為一些原因暫沒有開放一鍵導入功能。
有需求的可以先按照如下步驟導入其它地方的git倉庫(以 github 上的 impress.js 為例):
**1.**?從原始地址 clone 一份 bare 倉庫:
~~~
git clone --bare https://github.com/bartaz/impress.js.git
~~~
**2.**?在 GIT@OSC 上?[創建一個項目](http://git.oschina.net/projects/new)
**3.**?以 mirror 的方式把剛才 clone 的項目 push 到 GIT@OSC 上: (如果提示輸入 git 用戶密碼,請到[http://git.oschina.net/keys](http://git.oschina.net/keys)?添加 SSH Key)
~~~
cd impress.js.git
git push --mirror git@git.oschina.net:username/impress-js.git
~~~
這種方式的好處是:可以完整地保留原項目的所有 branch 和 tag 信息。
提示:首次push內容量較大,推薦采用ssh方式push,傳輸更快,更穩定,如果項目較小,也可以采用http方式push。
更多導入辦法,請[點擊這里](http://www.oschina.net/question/82993_133520)
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#項目組的使用)項目組的使用
項目組可以使用戶更加方便的添加用戶到項目中
**1.**?創建項目組:[http://git.oschina.net/teams/new](http://git.oschina.net/teams/new)
**2.**?添加用戶:可以設置兩種權限,一種是用戶默認在項目中的權限,一種是項目組管理權限
**3.**?指派到項目:如果選擇開發者,那么將會按照用戶在項目組中的默認權限為項目添加;如果選擇管理員,那么項目組中的所有成員將會成為項目的管理員
**4.**?撤銷項目:撤銷項目將會把在項目屬于項目組中的成員移除,如果成員同樣存在于此項目別的項目組中,那么將會更新為別的項目組中的相應的項目權限。
**Tips**
* 項目組只有項目組的成員可以訪問
* 項目組的名稱是全站唯一的
* 一個用戶存在于兩個項目組a,b中,在a中的項目權限是管理員,在b中的項目權限是開發者,如果項目組a,b同時指派到項目pro,那么將項目組a從pro中移除之后,此用戶在pro中的權限將會從管理員降為開發者。
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#readme-規則)README 規則
**1.**?git@osc README 文件支持多種文件格式以及命名規則。
例如: README, README.md, README.org...
或者: README_zh.md, README_en.md...
**2.**?若有多個README文件,則優先顯示文件名包含'_zh','_cn'等中文標注的README文件。
例如同一目錄包含兩個README文件:README_en.md README_zh.md
則顯示README為: README_zh.md
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#改寫歷史-去除大文件)改寫歷史,去除大文件
~~~
git filter-branch --tree-filter 'rm -f path/to/large/files' --tag-name-filter cat -- --all
git push origin --tags --force
git push origin --all --force
~~~
詳細參見:[這里](http://my.oschina.net/jfinal/blog/215624)
## [](http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#繼續閱讀)繼續閱讀
你可以點擊這里閱讀權威的git書籍[ProGit](http://git.oschina.net/progit)
以下為收集的開源中國社區熱心網友制作的git@osc跟各種IDE,軟件的集成辦法,可以點擊查看:
* [eclipse中egit插件使用-圖文并茂-詳細](http://my.oschina.net/songxinqiang/blog/192567)
* [Visual Studio 2012連接到osc@git](http://my.oschina.net/gal/blog/141442)
* [TortoiseGit配合msysGit在Git@OSC代碼托管的傻瓜教程](http://my.oschina.net/icelily/blog/141342)
* [利用eclipse的git插件EGit與git@osc交互](http://my.oschina.net/kzhou/blog/132146)
* [Git初體驗](http://my.oschina.net/dxqr/blog/134811)
* [在win7系統下使用TortoiseGit(烏龜git)簡單操作Git@OSC](http://my.oschina.net/longxuu/blog/141699)
* [Xcode連接git @ osc](http://my.oschina.net/zxs/blog/142544)
* [git@osc(git)中team開發、fork和pull request的用法](http://my.oschina.net/kzhou/blog/150290)
* [eclipse的git插件整合Git@OSC](http://my.oschina.net/u/861562/blog/151975)
* [Eclipse使用EGit管理git@OSC項目](http://my.oschina.net/China2012/blog/174874)
* [如何導入外部Git倉庫到中國源代碼托管平臺(Git@OSC)](http://www.oschina.net/question/82993_133520)
* [https 方式使用Git@OSC設置密碼的方式](http://git.oschina.net/oschina/git-osc/issues/2586)
衷心感謝網友?[@nekocode](http://my.oschina.net/gal)?[@鉑金便便](http://my.oschina.net/icelily)?[@愷哥](http://my.oschina.net/kzhou)?[@彼岸花開花落時](http://my.oschina.net/bianhuakaihualuoshi)?[@whaon](http://my.oschina.net/dxqr)?[@小小程序員](http://my.oschina.net/longxuu)?[@老左](http://my.oschina.net/zxs)?[](http://my.oschina.net/simaben/home)[@司馬奔?](http://git.oschina.net/simaben)[](http://my.oschina.net/simaben/home)[@楓葉飄零](http://my.oschina.net/u/861562)?[@大漠真人](http://my.oschina.net/China2012)細心整理分享資料。