大家好,我又回來了,上個禮拜因為熬夜看球感冒了,所以沒有寫新的文章出來。
這周給大家介紹下git的使用
我們為什么需要一個版本控制的軟件呢?
我相信大家很多人在進行版本控制時往往都是使用復制的方式,不過這樣做的后果是
1.需要程序員自己記住每一個復制所對應的版本是多少,
2.項目回退時很容易混淆當前的工作路徑,並且對以前的版本進行修改,導致以前的版本被錯誤的修改
3.多人合作時,會出現大家操作的項目的版本不一致的現象
所以我們需要一個版本控制軟件來幫助我們進行版本控制,減少我們記憶上的負擔和使版本控制變得簡單易操作
一、什么是git
Git是一個開源的分布式版本控制系統,能夠有效的對項目進行版本的控制。
Git既可以用於個人的,本地的版本控制,又可以在多人合作時,將版本備份到服務器,保證多人間版本的一致性
二、git的安裝
下載地址 https://code.google.com/p/msysgit/downloads/list
第一步 在官方網站上下載
第二步 安裝,一路next,直到出現如下界面
第一個意思是只能通過git bash輸入命令,
第二個指可以通過cmd啟動git,輸入git相關命令必須等它啟動后
第三個指將可以在cmd中直接輸入git的相關命令,注意這個可能會覆蓋cmd中原有的命令
建議大家選第一個就可以了
是為了處理windows和linux/unix中換行符的不同(windows中換行符是CRLF,linux/unix中是LF)
第一個選項:會將所有的LF轉換為CRLF,如何你是在windows下使用,建議勾選
第二個選項:會將所有的CRLF轉換為LF,如何你是在linux/unix下使用,建議勾選;
第三個選項:不進行換行符的轉換
三、git的使用
1. 中文錄入問題
默認安裝的 msysGit 的 shell 環境中無法輸入中文。為了能在 shell 界面中輸入中文,需要修改配置文件 /etc/inputrc ,修改相關的配置如下:
# disable/enable 8bit input
set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
關閉 Git Bash 再重啟,就可以在 msysGit 的 shell 環境中輸入中文了。
這樣就可以錄入中文了,仍會有部分字是亂碼的,所以大家在使用中,要避免輸入中文,如用戶名等。
2. ls 命令顯示中文文件名
最常用的用於顯示目錄和文件名列表的命令 ls 在顯示中文文件名的時候也有問題。中文會顯示為亂碼
可以將alias ls="ls --show-control-chars"
添加到配置文件 /etc/profile 的最后面,用一個空格與原有的內容分開即可,可實現在每次運行 Git Bash 時自動加載。
3.Windows下修改Git Bush的HOME路徑
Windows默認的HOME和~路徑一般都是C:\Users\用戶名,每次得用命令切換到常用的Repository下,此操作重復而沒有意義。
修改Git Bush默認的Home路徑的方法如下
打開Git安裝位置\etc\profile文件,找到
# normalize HOME to unix path
HOME="$(cd "$HOME" ; pwd)"
export PATH="$HOME/bin:$PATH"
增加兩行,修改后結果如下:
# normalize HOME to unix path
HOME="你想要修改的HOME路徑"
HOME="$(cd "$HOME" ; pwd)"
cd
export PATH="$HOME/bin:$PATH"
再次啟動Git Bush,就會自動進入新修改后的HOME路徑了
由於有關git東西很多,下面我用於一個例子來向大家進行講解
將代碼進行本地的備份
在當前目錄下新建了一個test文件(mkdir test)
切換到test文件中(cd test)
新建了一個git庫(git init)
新建了一個new.txt文件,內容是hello world(echo “hello world”>>nexw.txt)
發現new.txt未加入到git的版本控制的監視中untracked files(git status)
將new.txt加入到監視列表中(git add new.txt)
發現new.txt已經添加到git的監視列表中,現處於已修改待提交狀態(git status)
將項目里的所有處於已修改待提交狀態的文件提交,並且將該版本進行提交,版本標注為first(git commit –m “first”)
修改new.txt(echo “hello new world”>>new.txt)
將修改過的文件提交(git add new.txt)
將該版本進行提交,版本標注為second(git commit –m “second”)
查看提交歷史(git log)
發現已有兩個記錄
現在new.txt中的內容是hello world\r\nhello new world
切換到first(git checkout aa3975)
根據git log的結果aa3975即可確定first版本是哪一個
發現new.txt的內容已經變回new.txt了
將代碼備份到服務器端
由於校園網的限制這里,我就不用github演示,而是使用京東的代碼庫進行演示,將代碼上傳到自己的京東的代碼庫中
注冊一個用戶
登陸
點選創建代碼庫,創建代碼庫,填寫相關信息(私有代碼庫指只有你邀請的人才可以對代碼進行編輯)
創建完成后,會在代碼庫管理中,找到它
點擊進入后,復制右下方的地址
返回到git中,新建一個遠程的倉庫,名字叫做web(git remote add web https://code.jd.com/temptry/temptry.git)
切換回master分支下
將web倉庫上的數據取到本地的master分支上(默認產生的主分支),這個需要輸入你在京東注冊時,輸入的用戶名和密碼
,如果覺得每次都要輸入很麻煩可以
1、新建一個名為_netrc的文件,文件內容如下
machine code.jd.com #服務器地址
login 111111 #用戶名
password 1111 #密碼
2、將該文件放到一個不含有空格的路徑下如D:\code,而D:\Program Files (x86)則是非法的,含義空格
3、新建一個名為HOME的環境變量,密碼用戶名文件所在的路徑。
這樣以后就不用輸入密碼了
將本地代碼提交到服務器上(git push web master)
發現,代碼已經同步到服務器上了
git還有很多的功能,推薦一本書籍《pro git》,有中文的版本,pdf也很容易從網上找到