❶ 怎麼在自己的伺服器上建立git倉庫
1.架設Git伺服器我們以Ubuntu為例。首先,在git伺服器上創建一個名為'git'的用戶,並為其創建一個.ssh目錄。並將其許可權設置為僅git用戶有讀寫許可權$sudoadsergit$sugit$cd$mkdir.ssh$chmod700.ssh接下來,把開發者的SSH公鑰添加到這個用戶的authorized_keys文件中。假設你通過電郵收到了幾個公鑰並存到了臨時文件里。重復一下,公鑰大致看起來是這個樣子:$cat/tmp/id_rsa.john.pubssh-/ww+/T17//5zytK6Ztg3RPKK+/nLF6JLtPofwFBlgc+AYYgPqdAv8JggJICUvax2T9va5gsg-keypair只要把它們逐個追加到authorized_keys文件尾部即可,同時將authorized_keys設置為僅git用戶有讀寫許可權。$cat/tmp/id_rsa.john.pub>>~/.ssh/authorized_keys$cat/tmp/id_rsa.josie.pub>>~/.ssh/authorized_keys$cat/tmp/id_rsa.jessica.pub>>~/.ssh/authorized_keys$chmod600~/.ssh/authorized_keys現在可以用--bare選項運行gitinit來建立一個裸倉庫,這會初始化一個不包含工作目錄的倉庫。$cd/opt/git$mkdirproject.git$cdproject.git$git--bareinit這時,Join,Josie或者Jessica就可以把它加為遠程倉庫,推送一個分支,從而把第一個版本的項目文件上傳到倉庫里了。值得注意的是,每次添加一個新項目都需要通過shell登入主機並創建一個裸倉庫目錄。我們不妨以gitserver作為git用戶及項目倉庫所在的主機名。如果在網路內部運行該主機,並在DNS中設定gitserver指向該主機,那麼以下這些命令都是可用的:#在John的電腦上$cdmyproject$gitinit$gitadd.$gitcommit-m'initialcommit'$gitremoteaddorigingit@gitserver:/opt/git/project.git$gitpushoriginmaster這樣,其他人的克隆和推送也一樣變得很簡單:$gitclonegit@gitserver:/opt/git/project.git$vimREADME$gitcommit-am'fixfortheREADMEfile'$gitpushoriginmaster用這個方法可以很快捷地為少數幾個開發者架設一個可讀寫的Git服務。作為一個額外的防範措施,你可以用Git自帶的git-shell工具限制git用戶的活動范圍。只要把它設為git用戶登入的shell,那麼該用戶就無法使用普通的bash或者csh什麼的shell程序。編輯/etc/passwd文件:$sudovim/etc/passwd在文件末尾,你應該能找到類似這樣的行:git:x:1000:1000::/home/git:/bin/sh把bin/sh改為/usr/bin/git-shell(或者用whichgit-shell查看它的實際安裝路徑)。該行修改後的樣子如下:git:x:1000:1000::/home/git:/usr/bin/git-shell現在git用戶只能用SSH連接來推送和獲取Git倉庫,而不能直接使用主機shell。嘗試普通SSH登錄的話,會看到下面這樣的拒絕信息:$sshgit@gitserverfatal:WhatdoyouthinkIam?Ashell?Connectiontogitserverclosed.這里提供的方法,組內所有成員對project都有讀寫許可權,也就是說每個分支都可以push代碼,如果需要更加細致的許可權控制,請使用Gitosis或者Gitolite。2.搭建Gitweb安裝gitweb之後就可以通過網站訪問我們的項目了。就像gitweb.conf#pathtogitprojects(.git)$projectroot="/opt/git";至此gitweb就可以使用了,現在可以通過config[core]repositoryformatversion=0filemode=truebare=true[hooks]mailinglist="[email protected],[email protected]"#收件人列表[email protected]#送件人地址emailprefix="[Projectcommit]"#郵件標題前綴showrev="gitshow-C%s;echo"#不只顯示有變化的文件,同時也顯示改變的內容為了使郵件顯示的更清楚,還要修改一下工程目錄當中的description文件,在description文件中,默認第一行是項目名稱,所以要在第一行填入該項目的名稱,這個在郵件中會有顯示。$vim/opt/git/project.git/descriptionProject_A
❷ windows 下如何搭建git倉庫
第一,下載並安裝git
目前windows版本的git有幾種實現,但我們選擇msysgit發行版,這是目前做得兼容性最好的。
使用默認配置安裝Git。這個不用多說,一路Next就可以,如果對各種選項不熟悉,建議使用默認配置,沒問題的。
第二,創建github賬號
什麼是Git和GitHub
Git —The stupid content tracker, 傻瓜內容跟蹤器,是一個由Linux內核開發者Linus為了更好地管理Linux內核開發而創立的分布式版本控制軟體。
GitHub — 學生做版本控制最討厭的就是找伺服器,配置太麻煩了。GitHub這個網站為每個用戶提供伺服器託管其Git代碼庫,免費空間為300M。注冊GitHub後你就會有0.3G的免費空間,不過只能創建公開項目。
❸ 如何創建git倉庫的工
首先, 先到github網站注冊賬號。
2
然後創建一個項目, Create a new repository,如下圖所示:
步驟閱讀
8
輸入完title和key後選擇Add SSH key按鈕完成添加。
9
現在回到終端, 測試下是否能連接到github伺服器
ssh -T [email protected]
看到這樣的提示就說明設置好了
bogon:ZXTabBarController jackey$ ssh -T [email protected] Hi zhouxihi! You've successfully authenticated, but GitHub does not provide shell access.
10
然後就可以將本地文件push到遠程倉庫了
首先初始化本地倉庫
git init
添加文件
git add .
寫入緩存
git commit -m 'first upload'
添加遠程倉庫
git remote add origin [email protected]:zhouxihi/ZXTabBarController.git
推送文件到遠程倉庫
git push -u origin master
顯示100%. done就可以了
bogon:ZXTabBarController jackey$ git push -u origin master Counting objects: 57, done. Delta compression using up to 4 threads. Compressing objects: 100% (51/51), done. Writing objects: 100% (57/57), 86.20 KiB | 0 bytes/s, done. Total 57 (delta 14), reused 0 (delta 0) remote: Resolving deltas: 100% (14/14), done. To [email protected]:zhouxihi/ZXTabBarController.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
11
以後每次有修改本地文件就只要下面三個步驟就可以推送到伺服器了
->git add.
->git commit -m 'second upload'
->git push -u origin master
12
如果想從伺服器拉下來, 可以用指令
git clone XXX.git
❹ git的使用方法,如何配置
使用git 自從git-1.5.4 , 'git-xyz' 這種用法就不提倡了,而推薦 'git xyz' 風格。 git 的後續版本中將在 make install 時不再安裝 'git-xyz' 這些 hardlinks 。 當如果執行 git --exec-path 輸出的目錄中依然有 git-xyz 這些腳本,你還是可以把這個路徑加到 PATH 環境變數中, 這樣還能夠使用 git-xyz 形式的腳本。 config ------ 我的一些簡單的配置: $ git-config user.name "Jike Song" $ git-config user.email [email][email protected][/email] $ git-config core.editor vim $ git-config core.pager "less -N" $ git-config color.diff true // 顯示 diff 時色彩高亮 $ git-config alias.co checkout // 給 git checkout 取個別名,這樣只輸入 git co 即可 $ git-config sendemail.smtpserver /usr/bin/msmtp 注意,這會在當前 repository 目錄下的 .git/config 中寫入配置信息。 如果 git-config 加了 --global 選項,配置信息就會寫入到 ~/.gitconfig 文件中。 因為你可能用不同的身份參與不同的項目,而多個 項目都用 git 管理,所以建議不用 --global 配置。 $ git-val -l // 列出 git 變數 init ---- $ git-init-db // 創建一個 .git/ 目錄,初始化一個空的 git 倉庫 //這個目錄在git-clone時也會創建。也就是說clone時會自動初始化git //倉庫里需要的東西 clone ----- $ git-clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git [dir name] [dir name] 是你想讓這個倉庫叫什麼名字。 如果不指定,就會等同於目標倉庫的名字。 注意,這種 git server 形式的 repository ,都有一個 filename.git 文件; 而對於 *.git 的操作,也可以 針對.git 所在的目錄: $ mkdir tmp/ $ cd tmp/ $ git-clone ~/Sources/linux-2.6 或者通過 ssh : $ git-clone [email][email protected][/email]:/home/arc/Sources/linux-2.6 此時當前目錄下有一個 .git/ 目錄 . 以下我們都在 linux-2.6/ 下演示: 使用git 自從git-1.5.4 , 'git-xyz' 這種用法就不提倡了,而推薦 'git xyz' 風格。 git 的後續版本中將在 make install 時不再安裝 'git-xyz' 這些 hardlinks 。 當如果執行 git --exec-path 輸出的目錄中依然有 git-xyz 這些腳本,你還是可以把這個路徑加到 PATH 環境變數中, 這樣還能夠使用 git-xyz 形式的腳本。 config ------ 我的一些簡單的配置: $ git-config user.name "Jike Song" $ git-config user.email [email][email protected][/email] $ git-config core.editor vim $ git-config core.pager "less -N" $ git-config color.diff true // 顯示 diff 時色彩高亮 $ git-config alias.co checkout // 給 git checkout 取個別名,這樣只輸入 git co 即可 $ git-config sendemail.smtpserver /usr/bin/msmtp 注意,這會在當前 repository 目錄下的 .git/config 中寫入配置信息。 如果 git-config 加了 --global 選項,配置信息就會寫入到 ~/.gitconfig 文件中。 因為你可能用不同的身份參與不同的項目,而多個 項目都用 git 管理,所以建議不用 --global 配置。 $ git-val -l // 列出 git 變數 init ---- $ git-init-db // 創建一個 .git/ 目錄,初始化一個空的 git 倉庫 //這個目錄在git-clone時也會創建。也就是說clone時會自動初始化git //倉庫里需要的東西 clone ----- $ git-clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git [dir name] [dir name] 是你想讓這個倉庫叫什麼名字。 如果不指定,就會等同於目標倉庫的名字。 注意,這種 git server 形式的 repository ,都有一個 filename.git 文件; 而對於 *.git 的操作,也可以 針對.git 所在的目錄: $ mkdir tmp/ $ cd tmp/ $ git-clone ~/Sources/linux-2.6 或者通過 ssh : $ git-clone [email][email protected][/email]:/home/arc/Sources/linux-2.6 此時當前目錄下有一個 .git/ 目錄 . 以下我們都在 linux-2.6/ 下演示: pull ---- $ git-pull // 更新本地的 git tree 。 如果自從你 clone 了 linus tree 之後, linus tree //有新的改動,那麼把這些更改更新到你的本地tree中 //類似於cvs update pull ---- FYI: git-clone 和 git-pull 都會默認調用 git-merge 。 FYI: 每天 git-pull 更新技巧: 1) git-describe ,例如目前是 v2.6.26-rc8-12 2) git-pull -v 3) git-describe ,例如是 v2.6.26-rc8-22 4) git-log -p -10 查看變化 diff ---- $ git-diff /* 列出自己本地的 tree 中已修改、但卻未 commit 的改動 這也是產生 patch 的方式 ( 用來提交的 patch 需要先 commit 到自己的 tree 里, 然後git-format-patch) 。 注意,使用 git-diff 產生的 patch 都應該在 patch(1) 時指定 -p1 ,或者直接使用 git-apply 打補丁 */ 選項: --color diff 語法高亮 ( 可以 git-config color.diff true) --ignore-space-at-eol 忽略行尾的 whitespace -b --ignore-space-change 忽略行尾的 whitespace ,並且認為所有的 whitespace 都是一樣的 -w --ignore-all-space 比較兩行的時候,完全忽略 whitespace 。這樣,即使是一行有很多 whitespaces ,另一行文字一樣但是沒有 whitespace , git 也認為這兩 行內容一致。 $ git-pull // 更新本地的 git tree 。
❺ 如何搭建git版本庫
服務端配置
1、安裝git
2、新建一個用戶,只能用來上傳代碼,而不能通過ssh登錄,比如git用戶
adser git
chsh -s $(command -v git-shell) git
使用git-shell替換bash ,這樣git用戶就不能通過ssh登錄
這一步會有警告,提示git-shell不在shell列表裡,不用擔心。
3、添加ssh公鑰,在/home/git/.ssh/authorized_keys里添加客戶端的公鑰,一行一個。
如果沒有文件,可以新建
mkdir /home/git/.ssh
touch /home/git/.ssh/authorized_keys
客戶端生成公鑰的方法是 ssh-keygen,
windows的在C:\Users\用戶名\.ssh\ 目錄下,打開id_rsa.pub
4、初始化一個空的git倉庫
cd /var
git init --bare sample.git
chown -R git:git sample.git
這一步是讓目錄可以被git用戶修改,否則會出現「permission denied」錯誤。
客戶端
1、可以git clone了
git clone git@伺服器:/var/sample.git 即伺服器上的文件路徑
或者ssh,建議ssh,方便設置埠號
git clone ssh://git@伺服器:埠號/var/sample.git
❻ 如何搭建git私有倉庫
以ubuntu伺服器為例,如果要創建小范圍的私有git伺服器,是非常簡單的,只需要如下幾個簡單步驟:
Step 1: 安裝git
直接通過sudo apt-get install git即可完成。
Step 2: 創建git用戶
git用戶用來通過SSH連接git服務,輸入命令:
$ sudo adser git
Step 3: 創建證書登錄
首先收集所有需要登錄的用戶公鑰,然後導入到/home/git/.ssh/authorized_keys文件即可。
Step 4: 初始化git倉庫
假設倉庫位於/srv/sample.git,在/srv目錄下輸入命令:
$ sudo git init --bare sample.git
這樣就創建了一個裸倉庫,裸倉庫沒有working dir,因為伺服器上的git倉庫純粹是為了共享,倉庫目錄一般以.git結尾。然後把owner改為git:
$ sudo chown -R git:git sample.git
Step 5: 防止登錄shell
出於安全考慮,git用戶不應該登錄shell,可以編輯/etc/passwd,找到類似一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell。
Step 6: 克隆倉庫
在客戶端就可以通過ssh克隆倉庫了:
$ git clone git@server:/srv/sample.gitCloning into 'sample'...warning: You appear to have cloned an empty repository.
然後,就可以正常推送了:
$ touch README$ git add README$ git commit -m "add readme"$ git push origin masterCounting objects: 3, done.Writing objects: 100% (3/3), 212 bytes, done.Total 3 (delta 0), reused 0 (delta 0)To git@ubuntu:/srv/sample.git
* [new branch] master -> master
❼ 搭建git伺服器需要什麼樣的配置
搭建Git伺服器需要准備一台運行Linux的機器,強烈推薦用Ubuntu或Debian,這樣,通過幾條簡單的apt命令就可以完成安裝。
假設你已經有sudo許可權的用戶賬號,下面,正式開始安裝。
第一步,安裝git:
$ sudo apt-get install git
第二步,創建一個git用戶,用來運行git服務:
$ sudo adser git
第三步,創建證書登錄:
收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。
第四步,初始化Git倉庫:
先選定一個目錄作為Git倉庫,假定是/srv/sample.git,在/srv目錄下輸入命令:
$ sudo git init --bare sample.git
Git就會創建一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git結尾。然後,把owner改為git:
$ sudo chown -R git:git sample.git
第五步,禁用shell登錄:
出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。
第六步,克隆遠程倉庫:
現在,可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:
$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
剩下的推送就簡單了。
管理公鑰
如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys文件里就是可行的。如果團隊有幾百號人,就沒法這么玩了,這時,可以用Gitosis來管理公鑰。
這里我們不介紹怎麼玩Gitosis了,幾百號人的團隊基本都在500強了,相信找個高水平的Linux管理員問題不大。
管理許可權
有很多不但視源代碼如生命,而且視員工為竊賊的公司,會在版本控制系統里設置一套完善的許可權控制,每個人是否有讀寫許可權會精確到每個分支甚至每個目錄下。因為Git是為Linux源代碼託管而開發的,所以Git也繼承了開源社區的精神,不支持許可權控制。不過,因為Git支持鉤子(hook),所以,可以在伺服器端編寫一系列腳本來控制提交等操作,達到許可權控制的目的。Gitolite就是這個工具。
❽ 如何在伺服器新建git 代碼倉庫
git
pull
如果pull時提示「You
asked
me
to
pull
without
telling
me
whichbranch
you
want
to
merge
with」,
說明本地有新建分支且已同步到伺服器上,當從伺服器下載代碼時需要在本地config中配置該分支的merge信息。
配置時可以參考下面的例子:
$
git
config
branch.master.remote
origin
//master是分支名,origin是遠程倉庫名
$
git
config
branch.master.merge
refs/heads/master!
❾ windows本地git倉庫 怎麼配置
載Git官網站載Git並安裝安裝windows 目錄點右鍵快捷菜單Git相應功能
2
進入Git Gui配置git用戶名郵箱
3
初始化Git代碼庫創建文件夾並進入點擊右鍵"Git init here",創建代碼倉庫
4
添加文件任何文件都git記錄文件操作狀態 進入"Git Gui"
5
選擇未緩存改列表添加註釋並提交改
6
提交改傳伺服器比github
❿ 如何在Visual Studio中配置git
用 Visual Studio 可以配合 Git 工具做版本管理。也可以直接將工程同步到 GitHub 上。配置過程非常簡單。
首先你要安裝 GIt,安裝和配置步驟見 安裝 Git,Windows 上只要替換其中的安裝步驟,其他類似。
在 Visual Studio 安裝插件 Git Source Control Provider
然後在 tools->options->source control 中配置源代碼管理,將默認的修改為 Git Source Control Provider
配置好後會彈出選擇 Git 的 bin 目錄,將安裝目錄填上即可,以後也可以在選項中再次填上
因為用戶名,還有 GItHub 的 ssh key 已經在 安裝 Git 中完成了,這里不需要再做一邊。
我們新建一個工程,然後可以在解決方案的右鍵菜單中看到多出來的一項。這里如果你選擇 TortoiseGit 的話,彈出的菜單是不一樣的,會比較豐富。我安裝的是最簡單的。
選擇 Pending Changes 就可以 commit changes 了,這里要勾選改變的源文件,相當於 git add ....
如果要 push 到 GitHub 的遠程倉庫 ,我還沒找到選項,還是只能用 Git Bash 命令行。不過,push 不是經常做的,所以影響不大。如果嫌煩的話,可以裝 TortoiseGit,在 Visual Studio 中就能有相應的選項,完全不要命令行啦。
1. VS2015在對Git的支持
VS2015是微軟IDE集成開發環境的重量級升級,微軟除了將觸角延伸至iOS和Android平台以及Unity,Unreal和Cocos等游戲開發領域中。而且在進一步集成Git。
可以說在不需要第三方插件的前提下,就可以使用Git來進行團隊開發。
2. 在VS2015中使用Git
下面介紹如何在VS2015中使用Git進行團隊開發。
2.1 在Git伺服器上新建版本庫
在使用VS2015進行團隊開發前,我們先在Git伺服器上創建新的版本庫。
打開我們已經安裝好的GitStack(如查直接看本篇的同學,可以先看一下服務端環境搭建一文URL:使用GitStack+TortoiseGit 圖形界面搭建Git環境)
在GitStack中創建新的版本庫,名為「MyGitForVsObject」,並新建兩個用戶"yubinfeng"和「zhangsan」,再新建一個組"MyGitGroup",將這兩個用戶加入到該組,並給版本庫授權該組。具體操作這里不再贅述,不了解的朋友請看上面的URL.
完成後如下所示:
2.2 在VS2015中克隆遠程版本庫
我們先在VS2015中新建一個解決方案,在工具欄,點「團隊」=》「管理連接」
按上圖所示,右打開的 團隊資源管理器中,輸入遠程Git URL,點擊克隆按鈕,即可完成在VS2015中克隆遠程版本庫了
克隆成功後,可以在 本地Git存儲庫 中看到 本地版本庫已經 從伺服器上克隆下來了。
2.3 Git全局設置
完成版本庫克隆後,我們需要在Git中進行一次全局設置。
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊主頁按鈕,如下圖
點擊設置,選擇全局設置,完成如下三項更改,點更新
用戶名:將作為你以後版本提交後日誌顯示的名稱
電子郵件:團隊聯系使用
默認存儲庫位置:最好進行一下改動,默認在C盤,防止丟失
2.4 Git存儲庫設置
存儲庫設置和全局設置類同,如下
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊主頁按鈕,選擇 設置 - 存儲庫設置
如上圖,其他內容不需要設置,主要 添加一下遠程 。這將是以後獲取新版本和推送到伺服器的地址
此時,我們可以看到項目文件前面有一個小鎖,並且代碼中已經有了Git的信息,表示項目已經已經受到Git控制
2.5 第一次向Git伺服器發布項目
我們上面看到的所有Git的受控信息,只是相對於克隆到本地的版本庫,此時Git伺服器並沒有接收到這些工程文件,下面我們要做的將是第一次將本地版本庫中的工程文件同步到Git伺服器,即項目發布
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊小房子,回到Git主頁,點擊同步
此時,出現如下界面
+
我們第一次將本地分支發布到遠程伺服器,點擊發布
輸入遠程URL,發布,即可發布到遠程庫
我們可以打開GitStack查看日誌,如下:
上面顯示的時間,為你在本地操作的時間。我們可以看到Git作為分布式版本控制系統,你在離線進行操作,在推送時,顯示的均為你操作時間,而非推送時間。
2.6 拉取、獲取、合並、提交、推送、同步
項目開發過程中,我們通常進行下面幾種操作,我一次性介紹,這個和上篇TortoiseGit類似,直接看本篇的同學,可以參考上篇,URL:圖形化Git客戶端工具TortoiseGit
拉取(Pull):將遠程版本庫合並到本地版本庫; 相當於(Fetch+Meger)
獲取(Fetch):從遠程版本庫獲得最新版本
合並(Meger):將兩個版本庫進行合並操作
提交(Commit):將所做的更改,存入本地暫存庫
推送(Push):將所做的更改,存入遠程版本庫
同步(Pull+Push):先將遠程庫拉取,再將本地庫推送到遠程庫 注意這個順序; 相當於(Pull+Push)
我們對文件進行修改後,文件前有一個小對號,右擊,點提交
我們在提交文件時,記得填寫備注,在團隊開發中,保持一個良好的習慣
提交在這里有三種:
提交:即將文件存入本地版本庫
提交和推送:即將文件更改同時存入本地版本庫和遠程版本庫
提交和同步:將文件更改提交到本地庫的,再從遠程版本庫拉取新版本到本地,再推本地庫到遠程版本庫
注意:
這里的操作,不針對當前文件,而是對所有變更進行提交、推送或同步。
2.7 創建分支
對於創建分支在上篇(URL:圖形化Git客戶端工具TortoiseGit)中已經介紹過了,這里主要介紹一下如何基於Vs2015創建Git分支
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊小房子,回到Git主頁,點擊分支
打開分支界面,在master分支上右擊,選擇 "從選定項創建本地分支"
在這里需要注意我們創建分支,有兩種:
(1)創建本地分支
(2)創建遠程會支
本地分支有創建前,一定要獲取最新版本;遠程分支,則要求所有成員最好能推送更改。
至於分支的創建是基於遠程還是本地,最好能在團隊成員之間達成一致。
下面介紹兩種分支的創建方法
先看創建本地分支
輸入一個分支名稱,創建即可。
遠程分支,我們需要選擇如下
在創建遠程分支時,一定要把跟蹤遠程分支,這個取消選擇,否則將創建了一個跟蹤分支,我們就不能發布了。
創建完成後,如下:
分支創建成功,接下就是發布到伺服器
右擊,點發布分支,即可。
可以看到,分支已經發布到伺服器上了。
在伺服器上通過GitStack也可以看到,多了一個分支。
2.8 切換和合並分支
在VS2015中切換分支非常簡單,只要在分支名稱上雙擊,就可以了,項目資源管理器中的文件隨之變化。
這里主要看一下合並,
我們先切換到新建的分支"2016-2-7",在分支名稱右擊,選擇 合並自...
選擇master ,點擊合並,即可完成將master合並到新分支了。
2.9 刪除分支
刪除分支,首先要從遠端刪除,如下:
注意,如果要刪除剛才新建的分支,和上篇TortoiseGit一樣,要切換到另一分支操作。
遠端刪除後,伺服器上的分支就被刪除了,本地的分支,直接刪除即可。
3. 使用VS2015+HubGit創建開源項目
前面我們介紹了Git作為一個分布式版本控制系統,其最大的優勢就是適合開源項目管理。如果你還沒有託管一個開源項目,那麼你Out了。
目前即於Git開源項目託管平台非常多,Hubgit.com可以說非常知名,只是免費用戶,只能託管開源項目。
本篇我介紹一下如何在VS2015中創建並開發自己的開源項目,以Hubgit為例,其他平台使用都差不多。
3.1 創建Github用戶
創建完成後,點右上角Sign in進入Github
3.2 在Github上創建版本庫
進入GitHub主頁,點右上的 + 創建一個版本庫
打開以後,如下
按圖示完成,就可以了。
點右上角按鈕,」your profile「查看你創建的版本庫 test,點擊進入
接下來的操作,我們已經很熟悉了,就是在VS2015中打開GitHub版本庫,進入開源項目的世界了。。。
3.3 在VS2015上發布自己的開源項目
這一步相信,大家一定非常熟悉了,對,就和上面介紹的克隆自己伺服器上的版本庫一樣。
然後,我們新建一個解決方案或打開一個已有的解決方案
創建完成後,
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊小房子,回到Git主頁,點擊 更改
點擊 提交和推送,這時提示一個身份驗證,這是必須的,使用 前面注冊的用戶名和密碼即可,當然這是開源項目,只要有Github用戶,都可以進行版本克隆和提交代碼
推送完成後,我們可以在github上查看
沒問題,剛才推送的解決方案已經更新到github伺服器了。
提交、獲取、推送、分支,這些我就不用再說了吧,和上面介紹的完全一樣了
3.4 如何加入別人的開源項目?
如何加入別人的開源項目?也就是別人如何參與你的開源項目,意思是一樣的,就是除原創建者之外的人,要如何克隆版本庫?
比如比較著名的開源項目Jquery,你如何開發他的項目呢?
你又不能直接在VS 2015中克隆人家的庫,其實這個並不難辦,看下面的圖:
先進入Jquery的項目URL,然後點 右上的 Fork ,就將這個項目加入到你的庫里了,相當於直接克隆了一個副本到你的GitHub上。
這下,你就可以用自己的帳號,在VS上克隆你的GitHub中的Jquery項目了,你可以加入自己的idear,如果你希望jquery的官方庫能接受你的修改,你就可以在GitHub上發起一個pull request。當然,官方是否接受你的pull request就不一定了。
最後,我忘記說一件事了,我們剛才建的版本庫test,別人也可以用同樣的方法進行參與,只是你一定要記得,將初始庫設為只讀。
3.5 如何刪除創建的版本庫
先進入你的版本庫,點右邊的setting,進入設置頁,拉到最底下
點擊 刪除該版本庫,再輸一次版本庫名稱,即可。
3.6 桌面版的GitHub
如果你在網站上看項目進度等信息,感覺不方便 ,你可以下載安裝桌面版的Github
有windows和mac版本,可以通過桌面版完成網站上的所有功能。
使用GitHub進行團隊協作的流程,可以參考這個視頻,感覺非常好,推薦一下,
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElementwww.huashijixun.com?else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
4. 本節要點:
本篇主要介紹了如何在Visual Studio 2015中使用Git,然後介紹了目前流行的一些開源託管平台,最後以GitHub為例,介紹了如何創建自己的開源項目和參與別人的開源項目。
如果你還沒有自己的開源項目,快點動手申請一個Github帳號,共享出你的項目吧~開源需要每個人的努力~