日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git、snv、repo等版本管理工具使用对比

發(fā)布時間:2024/3/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git、snv、repo等版本管理工具使用对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????git是我們最常用的代碼倉庫管理工具,repo 是一款批量管理git的工具。

1、repo安裝

????????確保主目錄下有一個 bin/ 目錄,并且該目錄包含在路徑中:

$ mkdir ~/bin

$ PATH=~/bin:$PATH

下載 repo 工具,并確保它可執(zhí)行:

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

$ chmod a+x ~/bin/repo

2、多個版本管理工具

?3、SVN與Git對比

4、repo常用命令

repo init -u URL -b ........ # 創(chuàng)建.repo

repo upload # 將代碼提交到gerrit.

repo abandon master # 放棄master分支

repo forall -c "git reset --hard HEAD" # 所有代碼執(zhí)行git命令,回退到HEAD

# repo sync相當于git clone會把repository中的所有內容拷貝到本地,非首次運行repo sync相當于更新和合并.

# repo sync會更新.repo下面的文件,如果在merge的過程中出現沖突,這需要手動運行git rebase --continue.

repo sync -c -j 4

repo start master --all # 創(chuàng)建新分支

5、git-svn常用命令

# 下載一個 SVN 項目和它的整個代碼歷史,并初始化為 Git 代碼庫

$ git svn clone -s [repository]

# 查看當前版本庫情況

$ git svn info

# 取回遠程倉庫所有分支的變化

$ git svn fetch

# 取回遠程倉庫當前分支的變化,并與本地分支變基合并

$ git svn rebase

# 上傳當前分支的本地倉庫到遠程倉庫

$ git svn dcommit

# 拉取新分支,并提交到遠程倉庫

$ svn copy [remote_branch] [new_remote_branch] -m [message]

# 創(chuàng)建遠程分支對應的本地分支

$ git checkout -b [local_branch] [remote_branch]

6、git常用命令

git log # 查看當前庫的git log信息

git log -p -2 # -2 來僅顯示最近兩次提交

git show # 的命令顯示當前HEAD上的最近一次的提交(commit)

git log -n1 -p # 同上

git status ./ # 查看當前庫的狀態(tài)

git reset HEAD~1 # 將當前庫恢復到HEAD的上一個版本

git diff ./ # 比較當前庫的修改情況

git add ./ # 將當前庫的代碼修改提交到暫存區(qū)

git commit ./ # 將代碼提交到本地分支

git commit --file ../commit_log.txt # 指定messege文件

git commit --amend ./ # 追加修改

# git commit 加上 -a 選項,Git 就會自動把所有已經跟蹤過的文件暫存起來一并提交,從而跳過 git add 步驟

# 如果你的提交信息(commit message)寫錯了且這次提交(commit)還沒有推(push), 你可以通過下面的方法來修改提交信息(commit message)

git commit --amend --only -m 'xxxxxxx'

# 想從一個提交(commit)里移除一個文件

git checkout HEAD^ myfile

git add -A

git commit --amend

# 刪除我的的最后一次提交(commit)

git reset HEAD^ --hard

git push -f [remote] [branch]

cd git_work # 找一個干凈目錄,假設是git_work

git clone http://myrepo.xxx.com/project/.git # 這樣在git_work目錄下得到一個project子目錄

cd project

git branch -a # 列出所有分支名稱如下:

remotes/origin/dev

remotes/origin/release

git checkout -b dev22 remotes/origin/release #是checkout遠程release分支,在本地起名為dev22分支,并切換到本地的dev22分支

git checkout -b dev11 remotes/origin/dev # 作用參見上一步解釋

git checkout dev22 #切換回release分支,并開始開發(fā)。

git pull # 更新本地倉庫及本地暫存區(qū)及工作目錄

git commit --author 'Freyll<hell@github.com>' --file ../commit_log.txt

git commit --amend --author 'Freyll<hell@github.com>' --file ../commit_log.txt

# commit_log.txt中添加Change-Id:Id89afdd8cb

git push origin HEAD:refs/dev22/master # 提交代碼到遠程分支

git branch -d dev22 # 刪除本地分支dev22

git config -l # 參看配置信息

git show HEAD^ # 查看HEAD的上一個版本信息

git show HEAD~4 # 查看HEAD的上溯4代的信息

git reset --hard HEAD^^ # 回退兩個版本

git reset --hard 8308f03 # 回退到指定的commitID前7位的版本

git reset 9e5e64a # 將會使 master 指向 9e5e64a --hard 會強制覆蓋了工作目錄中的文件

git clean -dfx #清除庫上沒有的東西

git remote -v # 參看遠程倉庫

git branch -a # 參看遠程分支

# 查看當前git分支所屬

git branch -vv

git branch | grep "*"

# git log 附帶一系列的總結性選項。如想看到每次提交的簡略的統(tǒng)計信息,你可以使用 --stat 選項

git log --stat

# --shortstat 只顯示 --stat 中最后的行數修改添加移除統(tǒng)計

# --name-status 顯示新增、修改、刪除的文件清單。

git log --oneline --decorate --graph --all # 圖像顯示git log信息

git log --pretty=format:"%h - %cd %s" --graph # 列出指定格式的log

git log -since="2 weeks ago" # 顯示2周前到現在所有的歷史記錄

git reflog # 查看引用日志

# 從 Git 中移除某個文件,就必須要從已跟蹤文件清單中移除(確切地說,是從暫存區(qū)域移除),然后提交

git rm

# git mv ...

# 下載遠程倉庫的所有變動

git fetch [remote]

# 顯示所有遠程倉庫

git remote -v

# 顯示某個遠程倉庫的信息

git remote show [remote]

# 增加一個新的遠程倉庫,并命名

git remote add [shortname] [url]

# 取回遠程倉庫的變化,并與本地分支合并

git pull [remote] [branch]

# 上傳本地指定分支到遠程倉庫

git push [remote] [branch]

# 強行推送當前分支到遠程倉庫,即使有沖突

git push [remote] --force

# 推送所有分支到遠程倉庫

git push [remote] --all

# git fetch origin 會抓取克隆(或上一次抓取)后新推送的所有工作

# git fetch 命令會將數據拉取到你的本地倉庫 - 它并不會自動合并或修改你當前的工作

git fetch [remote-name]

#如果你使用 clone 命令克隆了一個倉庫,命令會自動將其添加為遠程倉庫并默認以 “origin” 為簡寫。

#所以,git fetch origin 會抓取克隆(或上一次抓取)后新推送的所有工作。

#必須注意 git fetch 命令會將數據拉取到你的本地倉庫 - 它并不會自動合并或修改你當前的工作。

#當準備好時你必須手動將其合并入你的工作。

#git clone 命令會自動設置本地 master 分支跟蹤克隆的遠程倉庫的 master 分支(或不管是什么名字的默認分支)。

#運行 git pull 通常會從最初克隆的服務器上抓取數據并自動嘗試合并到當前所在的分支

#當 git fetch 命令從服務器上抓取本地沒有的數據時,它并不會修改工作目錄中的內容。它只會獲取數據然后讓你自己合并。

#git pull 在大多數情況下它的含義是一個 git fetch 緊接著一個git merge 命令。

#不管它是顯式地設置還是通過clone或checkout 命令為你創(chuàng)建的,git pull都會查找當前分支所跟蹤的服務器與分支,從服務器上抓取數據然后嘗試合并入那個遠程分支。

#由于 git pull 的魔法經常令人困惑所以通常單獨顯式地使用 fetch 與 merge 命令會更好一些。

# 當你想要將 master 分支推送到 origin 服務器時(再次說明,克隆時通常會自動幫你設置好那兩個名字),那么運行這個命令就可以將你所做的備份到服務器

git push origin master

# 查看某一個遠程倉庫的更多信息

git remote show origin

#to discard changes in working directory是一個危險的命令,你對那個文件做的任何修改都會消失.

git checkout -- <file>..."

# 恢復暫存區(qū)的指定文件到工作區(qū)

git checkout [file]

# 恢復某個commit的指定文件到暫存區(qū)和工作區(qū)

git checkout [commit] [file]

# 恢復暫存區(qū)的所有文件到工作區(qū)

git checkout .

# 重置暫存區(qū)的指定文件,與上一次commit保持一致,但工作區(qū)不變

git reset [file]

# 重置暫存區(qū)與工作區(qū),與上一次commit保持一致

git reset --hard

# 重置當前分支的指針為指定commit,同時重置暫存區(qū),但工作區(qū)不變

git reset [commit]

# 重置當前分支的HEAD為指定commit,同時重置暫存區(qū)和工作區(qū),與指定commit一致

git reset --hard [commit]

# 重置當前HEAD為指定commit,但保持暫存區(qū)和工作區(qū)不變

git reset --keep [commit]

# 新建一個commit,用來撤銷指定commit

# 后者的所有變化都將被前者抵消,并且應用到當前分支

git revert [commit]

# 暫時將未提交的變化移除,稍后再移入

git stash

git stash pop

總結

以上是生活随笔為你收集整理的git、snv、repo等版本管理工具使用对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。