顯示具有 版本控制 標籤的文章。 顯示所有文章
顯示具有 版本控制 標籤的文章。 顯示所有文章

再一次存到上次的commit

沒有留言:
認錯[1]的情況
反悔上一次的commit
完全重新覆蓋掉上一次的紀錄

都適用。

目前最新的進度存到上一次的commit上,而且可以修改commit內容
git commit --amend

然後,如果你上次的commit已經push了,然後local又改掉最後一次的commit要再次的push會失敗。

這時就要使用強制覆
git push --fource


參考:
[1] 章 5. 關於歷史

如何用git diff比較任意兩版本

沒有留言:
這篇,我們要利用下列指令完成版本差異比較
而且,看得出這兩個版本有哪些檔案有差異。

diff

tag1, 與 tag2 所有檔案的差異[1][2]

git diff tag1 tag2

tag1, 與 tag2 的指定檔案 file1, file2 的差異[1][2]

git diff tag1:file1 tag2:file2
要辦到指定版本(或檔案)就是要再學一個tag指令
file1, file2前有需要的話要加上路徑,路徑無須用'/'開頭,直接用資料夾名稱即可。

看「差異程度列表」時使用--stat[1]

列出檔案列表與修改次數,不顯示詳細修改內容
git diff --stat

tag

設定commit的hash碼(很長的那一串亂碼)為tag[1]

git tag <tag name> <hash前5碼>

刪除掉某一個tag [1][2]

git tag -d <tag name>
tab name 也可以使用中文唷[1](沒試過就是了)

參考資料:

[1] Git 初學筆記 - 指令操作教學
[2] Git 使用手冊

DIY Git server by msysGit in windows

沒有留言:
在公司想架一個git server,但是公司主要的獲利不是寫程式,所以在git server的使用上較沒有太大的需求,基本上就只是幾個會寫程式的同事互相git就好了

一開始什麼都不懂,看了一篇Windows 上架設 Git 伺服器[1]之後覺得,還滿簡單的嘛!

動手吧!

結果還是搞了兩天!= =
這篇文章,寫得有點簡陋,在此做一個補完。

首先,準備兩台電腦,一台是Server(稱S),另一台是Client(稱C),兩台都去下載msysGit
並且安裝好。

寫這篇文章時,最新版是1.8.4,而只要選擇最上面的版本就可以了。
  1. Git-1.8.4-preview20130916.exe
    Full installer for official Git for Windows 1.8.4

  2. PortableGit-1.8.4-preview20130916.7z
    Portable application for official Git for Windows 1.8.4

  3. msysGit-netinstall-1.8.4-preview20130916.exe
    Net installer if you want to hack on Git

  4. msysGit-fullinstall-1.8.4-preview20130916.exe
    Full installer (self-contained) if you want to hack on Git

兩台都灌好之後。

在S電腦上:
  1. 安裝 msysgit(已完成)
  2. 執行 GIT-bash
  3. 在 git bash 裡執行下列指令
  4. mdkir /d/GitRepo # 建立檔案庫資料夾集散地
  5. mkdir /d/GitRepo/testRepo
  6. cd /d/GitRepo/testRepo
  7. git init --bare # 建立 Git repository
讀了一下4.2 服务器上的 Git - 在服务器上部署 Git的官方說明文章。
引用朋友在facebook給我的留言(真是金玉良言呀)
「如果當 central repo 用的話,就建立成 bare repo (`git init --bare`)」
「這樣作比較好啦,不然一般 repo 基本上是讓你 pull 的 不是讓你 push 的」


利用windows的網芳功能,將S電腦的GitRepo/做成網路磁碟機(G:)

在C電腦上:
  1. 安裝 msysgit(已完成)
  2. 執行 GIT-bash
  3. 在 git bash 裡執行下列指令
  4. mdkir /d/GitRepo # 建立檔案庫資料夾集散地
  5. mkdir /d/GitRepo/testRepo
  6. cd /d/GitRepo/testRepo
  7. git init # 建立 Git repository
這樣一來就可以在強大的(??)IT巨壁之內建立沒有傳輸安全性可言,卻可以運作的Git server。

最後最後,因為我還有使用中文的壞習慣。
所以要設定可以相容中文唷[3]

$ git config --global gui.encoding utf-8


有興趣的人可以在家試試唷!^^



後記
在git add 檔案時,不小心加入了專案檔,讓專案打開關閉都會讓檔案產生「變化」
那麼就要省略它們的變化
建一個.gitignore的文件檔,裡面直接寫你要省略的檔案

.*
*/debug/*.*
*/release/*.*
*.suo
*.ncb

主要是最後兩個.suo和.ncb,是visual studio的專案檔案之一。
只是因為光打開就會變動,所以才省略它們的變化。

不過因為我把它們git add了,所以必須取消這個追縱。
使用下面的指令取消追縱。[4]

$ git rm --cached your_filename




參考資料:
[1] Windows 上架設 Git 伺服器
[2] 4.2 服务器上的 Git - 在服务器上部署 Git
[3] Git Server on Windows 安裝手記
[4] gitignore 無法忽略檔案的解法

第一次Git就上手

沒有留言:
每個Git教學都要說一下在什麼環境使用。
我是在windows底下使用!雖然支援度比較低,但是Github還是貼心的出了可愛的官方軟體

省下一些初始化的指令,如下:

git init
git add
git commit -a
git clone

灌好程式,就可以將檔案上傳下載同步(都包好了)



但是在程式壞掉時,還是要時光回溯!怎麼做呢?

git checkout 4372d4f4995c0a3dcd0b769997d63356c0b91a24

有看懂嗎?就是每一次commit時,會給你一串號碼,它的前五碼就可以當回溯的識別號碼了(不用全部打上去!真神)。


目前我就只會這樣,就用得很開心了!
開分支、合併、刪除,下次練習後再來寫吧!

版本控制GitHub之第一個卡關

沒有留言:
有鑑於,Google Code的安全機制有不好用(Google Code另外有一組密碼)
所以,版本控制工具改回GitHub

主要要在GitHub申請帳密,然後開專案開始玩。

Windows的Client端的工具和之前那套強大又難用的不一樣,很好看,也很無腦,網頁右上角點選下載,就可以了。

今天遇到一個問題就是無法sync
就算重新clone也一樣
就算用shell commit了也一樣

原因在於當時看的是版舊瀏覽,不是最新版的master版
就在「insync」的旁邊,是不是「master」還是亂碼(舊版程式)

程式碼版本控制之SVN

沒有留言:
拜人月神話讀書會之賜,學到了像軟體工程的事「版本控制 」

所謂隔行如隔山+江湖一點訣

所以,沒有人點醒 是完全不會去動這一個東西,也不得其門而入

版本控制維基百科的介紹

摘錄維基的術語部份

術語

基線(Baseline)
基線是軟體文檔或源碼(或其它產出物)的一個穩定版本,它是進一步開發的基礎。[1]
檔案庫(Repository)
存儲檔案的新版本還有歷史資料的地方,通常是在伺服器上。有時候也叫Depot(像是在SVKAccuRev還有Perforce中)
工作版本(Working copy):從檔案庫中取出一個本地端(客戶端)的複製,針對一個特定的時間或是版本。所有在檔案庫中的檔案更動,都是從一個工作版本中修改而來的,這也是這名稱的由來。觀念上,這是一個沙盒
提交(Commit)
將本地端的修改送回檔案庫。(由版本控制軟體處理「跟上次更動相比,哪個檔案又被更動」的事)
變更(Change)
對一份文件作的特定更動。
變更記錄(Change List)
取出(Check-Out)
從檔案庫取出檔案到本地端(客戶端)。
更新(Update)
將檔案庫的修改送到本地端(與送交相反)
合併(Merge / Integration)
合併各個改變。
版次(Revision)
一個revisionversion指的是一系列版本變遷的其中之一。
匯入(Import)
匯出(Export)
衝突(Conflict)
當兩方更動同一份文件會發生衝突。

在此,介紹的東西,主要是用Google Code + TortoiseSVN
其實,也沒有要介紹啦!裝一裝就會了!^^

TortoiseSVN
教學
下載

整合在Windows的右鍵中,隨時都可以做版本控制
(右鍵真是太可怕了)

再來就是專案的規劃了!
因為我還在使用古董Visual C++ 6這樣的非主流工具,所以要找到適當的教學或技巧,要靠哆啦A夢的時光機是一件不簡單的事,但是,還是讓我在使用考古技巧Google上搜尋到了一點蛛絲馬跡。

PCMan的專案就是用這個寫的,加上它是OpenSource
介紹
專案下載

可以發現它的專案規劃還滿井然有序的。
每一個組件專案,就直接放在整體專案的裡面(和Debug、res...放在一起)
而Code就直接呼叫

唯一的差別就是在#include 中要加路徑。
#include "../abc/abc.h"

優點
1. 用起來都一樣,爽度很高。
2. 在更新大專案或其它有相關性的小專案時,每一個子專案中的code,也只有維持一個版本。(一個更新,全部更新)

搭配SVN可以做分支發展管理。