認錯[1]的情況
反悔上一次的commit
完全重新覆蓋掉上一次的紀錄
都適用。
將目前最新的進度存到上一次的commit上,而且可以修改commit內容。
git commit --amend
然後,如果你上次的commit已經push了,然後local又改掉最後一次的commit要再次的push會失敗。
這時就要使用強制覆
git push --fource
參考:
[1] 章 5. 關於歷史
如何用git diff比較任意兩版本
這篇,我們要利用下列指令完成版本差異比較
而且,看得出這兩個版本有哪些檔案有差異。
要辦到指定版本(或檔案)就是要再學一個tag指令
file1, file2前有需要的話要加上路徑,路徑無須用'/'開頭,直接用資料夾名稱即可。
git diff --stat
tab name 也可以使用中文唷[1](沒試過就是了)
[2] Git 使用手冊
而且,看得出這兩個版本有哪些檔案有差異。
diff
tag1, 與 tag2 所有檔案的差異[1][2]
git diff tag1 tag2tag1, 與 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,而只要選擇最上面的版本就可以了。
兩台都灌好之後。
在S電腦上:
引用朋友在facebook給我的留言(真是金玉良言呀)
「如果當 central repo 用的話,就建立成 bare repo (`git init --bare`)」
「這樣作比較好啦,不然一般 repo 基本上是讓你 pull 的 不是讓你 push 的」
利用windows的網芳功能,將S電腦的GitRepo/做成網路磁碟機(G:)
在C電腦上:
(??)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 無法忽略檔案的解法
一開始什麼都不懂,看了一篇Windows 上架設 Git 伺服器[1]之後覺得,還滿簡單的嘛!
動手吧!
結果還是搞了兩天!= =
這篇文章,寫得有點簡陋,在此做一個補完。
首先,準備兩台電腦,一台是Server(稱S),另一台是Client(稱C),兩台都去下載msysGit。
並且安裝好。
寫這篇文章時,最新版是1.8.4,而只要選擇最上面的版本就可以了。
- Git-1.8.4-preview20130916.exe
Full installer for official Git for Windows 1.8.4 - PortableGit-1.8.4-preview20130916.7z
Portable application for official Git for Windows 1.8.4 - msysGit-netinstall-1.8.4-preview20130916.exe
Net installer if you want to hack on Git - msysGit-fullinstall-1.8.4-preview20130916.exe
Full installer (self-contained) if you want to hack on Git
兩台都灌好之後。
在S電腦上:
- 安裝 msysgit(已完成)
- 執行 GIT-bash
- 在 git bash 裡執行下列指令
- mdkir /d/GitRepo # 建立檔案庫資料夾集散地
- mkdir /d/GitRepo/testRepo
- cd /d/GitRepo/testRepo
- git init --bare # 建立 Git repository
引用朋友在facebook給我的留言(真是金玉良言呀)
「如果當 central repo 用的話,就建立成 bare repo (`git init --bare`)」
「這樣作比較好啦,不然一般 repo 基本上是讓你 pull 的 不是讓你 push 的」
利用windows的網芳功能,將S電腦的GitRepo/做成網路磁碟機(G:)
在C電腦上:
- 安裝 msysgit(已完成)
- 執行 GIT-bash
- 在 git bash 裡執行下列指令
- mdkir /d/GitRepo # 建立檔案庫資料夾集散地
- mkdir /d/GitRepo/testRepo
- cd /d/GitRepo/testRepo
- git init # 建立 Git repository
最後最後,因為我還有使用中文的壞習慣。
所以要設定可以相容中文唷[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時,會給你一串號碼,它的前五碼就可以當回溯的識別號碼了(不用全部打上去!真神)。
目前我就只會這樣,就用得很開心了!
開分支、合併、刪除,下次練習後再來寫吧!
我是在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」還是亂碼(舊版程式)
所以,版本控制工具改回GitHub
主要要在GitHub申請帳密,然後開專案開始玩。
Windows的Client端的工具和之前那套強大又難用的不一樣,很好看,也很無腦,網頁右上角點選下載,就可以了。
今天遇到一個問題就是無法sync
就算重新clone也一樣
就算用shell commit了也一樣
原因在於當時看的是版舊瀏覽,不是最新版的master版
就在「insync」的旁邊,是不是「master」還是亂碼(舊版程式)
程式碼版本控制之SVN
拜人月神話讀書會之賜,學到了像軟體工程的事「版本控制 」
所謂隔行如隔山+江湖一點訣
所以,沒有人點醒 是完全不會去動這一個東西,也不得其門而入
版本控制維基百科的介紹
摘錄維基的術語部份
在此,介紹的東西,主要是用Google Code + TortoiseSVN
其實,也沒有要介紹啦!裝一裝就會了!^^
TortoiseSVN
教學
下載
整合在Windows的右鍵中,隨時都可以做版本控制
(右鍵真是太可怕了)
再來就是專案的規劃了!
因為我還在使用古董Visual C++ 6這樣的非主流工具,所以要找到適當的教學或技巧,要靠哆啦A夢的時光機是一件不簡單的事,但是,還是讓我在使用考古技巧Google上搜尋到了一點蛛絲馬跡。
PCMan的專案就是用這個寫的,加上它是OpenSource
介紹
專案下載
可以發現它的專案規劃還滿井然有序的。
每一個組件專案,就直接放在整體專案的裡面(和Debug、res...放在一起)
而Code就直接呼叫
唯一的差別就是在#include 中要加路徑。
#include "../abc/abc.h"
優點
1. 用起來都一樣,爽度很高。
2. 在更新大專案或其它有相關性的小專案時,每一個子專案中的code,也只有維持一個版本。(一個更新,全部更新)
搭配SVN可以做分支發展管理。
所謂隔行如隔山+江湖一點訣
所以,沒有人點醒 是完全不會去動這一個東西,也不得其門而入
版本控制維基百科的介紹
摘錄維基的術語部份
術語
|
在此,介紹的東西,主要是用Google Code + TortoiseSVN
其實,也沒有要介紹啦!裝一裝就會了!^^
TortoiseSVN
教學
下載
整合在Windows的右鍵中,隨時都可以做版本控制
(右鍵真是太可怕了)
再來就是專案的規劃了!
因為我還在使用
PCMan的專案就是用這個寫的,加上它是OpenSource
介紹
專案下載
可以發現它的專案規劃還滿井然有序的。
每一個組件專案,就直接放在整體專案的裡面(和Debug、res...放在一起)
而Code就直接呼叫
唯一的差別就是在#include 中要加路徑。
#include "../abc/abc.h"
優點
1. 用起來都一樣,爽度很高。
2. 在更新大專案或其它有相關性的小專案時,每一個子專案中的code,也只有維持一個版本。(一個更新,全部更新)
搭配SVN可以做分支發展管理。
訂閱:
文章 (Atom)