代碼版本控制工具GIT

GIT

Linus:

????????????????I’m an egotistical bastard, and I name all my projects after myself. First Linux, now git.

官方指南:https://git-scm.com/book/zh/v2

一圖勝千言:

Git 是一個版本控制工具,它能實現(xiàn)團隊中的代碼協(xié)作開發(fā),在代碼同步和管理方面功能強大、理念先進。

Git 是當(dāng)下最流行的分布式版本控制工具,輕量級,但功能強大,由 linux 之父 linus 開發(fā)。它的使用特別廣泛,尤其開源社區(qū)基本都用它作為版本控制工具。我們每個人也要盡量掌握它。

而網(wǎng)站 github.com 是基于 git 工具的一個代碼托管網(wǎng)站,目前基本所有知名的開源項目都選擇把代碼部署到這個網(wǎng)站。這里的代碼包羅萬象,是個學(xué)習(xí)的天堂。實屬居家旅行、殺人拿塔的必備網(wǎng)站。

如果想用 git 工具下載同步代碼,方法如下:

#1. 進入 git bash,切換到相應(yīng)目錄,比如,e 盤下的 course 目錄

cd/e/course/


#2. 如果是第一次下載,執(zhí)行以下命令

git clone https://github.com/13431/notes.git


#3. 如果不是第一次下載,只是更新代碼,執(zhí)行以下命令。

#ps. 要經(jīng)常運行這個命令,保持與服務(wù)器的同步

cd/e/course/notes/

git pull


這是 Git 的一個教程,大家有時間可以按照上面的看看、練練,以后務(wù)必掌握基本用法:?Git 廖雪峰 教程

下面總結(jié)了一下常用的基本命令:

## 修改 .gitconfig 文件,這是 git 的配置文件

vi~/.gitconfig


## 初始化 版本庫

git init

git init-db


## 添加忽略文件。這個文件控制,哪些文件不要被提交

echo "*.svn" > .gitignore


## 將改變增加至索引

git add .


## 從索引寫入到庫

git commit -m "提交到版本庫"

git commit -a -m "提交,連同所有未 add 的修改文件"

git commit --amend -a -m "替換最后一次的提交信息"


## 查看修改了什么東西

git diff

git diff --cached

git status


## 回撤版本,重新提交。后悔藥。

git reset HEAD^ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 回撤到上一版本,默認是 --mix 形式,另有 --soft 和 --hard 形式

git status ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 可以看到,上一版本提交的文件沒有增加到 index 的狀態(tài)

git add/commit... ? ? ? ? ? ? ? ? ? ? ? ? # 做完處理后,重新提交?

## 查看日志,歷史記錄

git show

git log

git log --pretty=oneline ? ? ? ? ? ? ? ? ? ? ? ? ? ? #定制 log 的顯示樣式

git log -2 -p ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #顯示最近兩次提交的詳細信息

git log --stat --summary ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#簡要顯示每次更新的統(tǒng)計信息(提交過那些文件,有多少行修改)

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'--abbrev-commit


## 增加/查看/切換/刪除 分支

git branch ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #查看分支

git branch 1234 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#創(chuàng)建分支 1234

git branch 1234 343223 ? ? ? ? ? ? ? ? ? ? ? ? ? #以 343223 為起點創(chuàng)建1234 分支

git checkout 1234 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#切換到分支 1234????

git checkout -b tmp ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#創(chuàng)建并切換到分支 tmp

git branch -D tmp ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#刪除分支 tmp

## 合并工作到主分支(1234 -> master)

git checkout master ? ? ? ? ? ? ? ? ? ? ? ?#切換到主分支

git merge HEAD 1234 ? ? ? ? ? ? ? ?#將 1234 的最新版本合并到當(dāng)前分支

git pull.1234 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#相當(dāng)于 git fetch && git merge

## 生成并應(yīng)用補丁,這是另外一個合并工作的方法。暫時不需要搞太清楚。

git format-patch master>A.patchgit checkout master????????????????????#先生成補丁文件,再切換到分支目錄

git apply A.patch ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #應(yīng)用補丁文件到當(dāng)前分支

git add/commit... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #然后提交修改

## 下載/上傳/更新 信息到指定版本庫

git clone git://192.168.1.1/repo.git

git push git://192.168.1.1/repo.git 1234:master

git pull git://192.168.1.1/repo.git master:1234

git fetch public

## 其他命令:

git tag ? ? ? ? ? ? ? ? ? ? ? ? ? ? #將某個版本做個標(biāo)記,即賦予一個好記的名字

git gc ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#垃圾收集,能大大減小版本庫大小

git repack ? ? ? ? ? ? ? ? ? ? ?#同上,也能大大減小版本庫大小

git ls-tree HEAD ? ? ? ? ? ? ? ?#查看版本庫中的文件結(jié)構(gòu),下面語句是跟 awk 合作,打印整個目錄結(jié)構(gòu)

git ls-tree -r HEAD|awk'{print $4}'>d:/home/index/repTree

git whatchanged ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #顯示某個版本改變了哪些文件

git show-branch ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#顯示分支變動情況

git reflog ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #顯示所有變更歷史(跟 git log 不同)

git clone ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #相當(dāng)于 git init && git fetch

git pull ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #相當(dāng)于 git fetch && git merge

git rebase ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#git merge 外,合并倉庫的另一種形式

## 下面的例子是建立一個純倉庫,并作為開發(fā)的中心倉庫(即 GIT 服務(wù)端)

git clone --bare /workspace/hnpmi /repo/1234.git ? ? ? ? ? ? ? ?#創(chuàng)建一個新的純倉庫,用于備份、共享

cd/workspace/1234 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #這是我們的工作目錄

git remote add origin /repo/1234.git ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#將剛才新建的倉庫添加為我們的遠程分支

git push origin master ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #本地的 master 分支有更新,同步到遠程分支

Subversion


首先,下載可愛的小烏龜:

wget https://nchc.dl.sourceforge.net/project/tortoisesvn/1.9.5/Application/TortoiseSVN-1.9.5.27581-x64-svn-1.9.5.msi

其次,如果想使用 svn 從服務(wù)器上下載東西:

svn checkout http://svn.apache.org/repos/asf/struts/struts2

svn co http://svn.apache.org/repos/asf/struts/struts2

如果想同步代碼:

svn update

查看當(dāng)前代碼的修改情況:

svn status

svn st

如果想提交代碼:

svn commit -m 我的注釋

svn ci -m "My Message"

查看日志:

svn log

尋求幫助

svn --help

svn update --help

搭建服務(wù)器

首先,創(chuàng)建一個 svn 庫:

svnadmin create /var/svn/aaa

修改下面的 conf/svnserver.conf 文件,將下面幾條注釋去掉

anon-access = read # 匿名用戶只能讀,不能改

anon-access = write? ? ? # 已登錄用戶,可以修改

password-db = passwd? ? # 指明驗證文件的名字

其次,開啟服務(wù):

svnserve --daemon --root /tmp/bbb

然后,就可以訪問了

svn co svn://ip

導(dǎo)入文件夾到項目,可以用 import 命令:

svn import ~/hello svn://ip/hello

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容