版本管理器命令行总结

.Net 同时被 2 个专栏收录
270 篇文章 2 订阅

Git基本命令行操作

http://www.cnblogs.com/lee0oo0/archive/2013/06/28/3161829.html

A. 新建Git仓库,创建新文件夹
git init
 
B. 添加文件到git索引
git add <filename>  --- 单个文件添加
git add *  --- 全部文件添加

C. 提交到本地仓库
git commit -m "代码提交描述"

D. 提交到远端仓库
git push origin master
***master可以换成你想要推送的任何分支

分支:
1. 创建一个叫做"lee"的分支,并切换过去
git checkout -b lee

2. 切换回主分支
git checkout master

3. 把新建的分支删除
git branch -d lee

4. 再push分支到远端仓库前,该分支不被人所见到
git push origin <branch>

更新与合并
A. 更新本地仓库
git pull

B. 自动合并分支,多时引起冲突,冲突后需要手动解决
git merge <branch>

C. 合并后需要添加
git add <branch>

D. 合并前建议使用对比工具
git diff <source_branch> <target_branch>

E. 软件发布是创建标签,标签与标记需要唯一
  E.1 获取提交ID
    git log
  E.2 创建标签
    git  tag  1.2.3  提交ID
 
F. 回退到某个历史版本
  F.1 获取提交ID
    git log
  F.2 回退到指定版本  
    git reset --hard 提交ID

G. 使用reset命令后log是得不到充分信息的,这时我们需要使用reflog,然后再reset
  git reflog

H. 彩色git输出
  git config color.ui true

I. 查看远程分支与本地分支
  git branch -a

J. push一个指定分支名到远程分支,如果远程服务器没有这个分支则创建
  git push origin <brancheName>

K. 删除一个远程分支
  git push origin --delete <branchName>

L. 如果使用rm误删了文件,可以通过两步恢复
  1. git reset HRAD 文件名
  2. git checkout -- 文件名

M. 删除文件
  git rm 文件名    (同时删除工作目录与本地仓库的文件)
  git rm --cached 文件名     (删除本地仓库文件,并不影响工作目录)

N. 改变上传地址
  git remote set-url origin ssh://git@git.sailor.cn/~/WeiYu

O. 根据服务器的地址创建本地git与服务器的地址关联

  git remote add origin ssh://lht@git_server/var/lib/scm/git/lht/test.git


git init
git add <filename>  --- 单个文件添加
git add *  --- 全部文件添加
git commit -m "代码提交描述"
git push origin master
git checkout -b lee
git checkout master
git branch -d lee
git push origin <branch>
git pull
git merge <branch>
git add <branch>
git diff <source_branch> <target_branch>
git log
git tag
git reset --hard 提交ID
git reflog
git config color.ui true
git branch -a
git push origin <brancheName>
git push origin --delete <branchName>
git reset HRAD 文件名
git checkout -- 文件名
git rm 文件名    (同时删除工作目录与本地仓库的文件)
git rm --cached 文件名     (删除本地仓库文件,并不影响工作目录)
git remote set-url origin ssh://git@git.sailor.cn/~/WeiYu
git remote add origin ssh://lht@git_server/var/lib/scm/git/lht/test.git


========

Git常用命令

http://www.cnblogs.com/cspku/articles/Git_cmds.html

查看、添加、提交、删除、找回,重置修改文件

git help <command> # 显示command的help

git show # 显示某次提交的内容 git show $id

git co -- <file> # 抛弃工作区修改

git co . # 抛弃工作区修改

git add <file> # 将工作文件修改提交到本地暂存区

git add . # 将所有修改过的工作文件提交暂存区

git rm <file> # 从版本库中删除文件

git rm <file> --cached # 从版本库中删除文件,但不删除文件

git reset <file> # 从暂存区恢复到工作文件

git reset -- . # 从暂存区恢复到工作文件

git reset --hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改

git ci <file> git ci . git ci -a # 将git add, git rm和git ci等操作都合并在一起做                                    git ci -am "some comments"

git ci --amend # 修改最后一次提交记录

git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建次提交对象

git revert HEAD # 恢复最后一次提交的状态

查看文件diff

git diff <file> # 比较当前文件和暂存区文件差异 git diff

git diff <id1><id1><id2> # 比较两次提交之间的差异

git diff <branch1>..<branch2> # 在两个分支之间比较

git diff --staged # 比较暂存区和版本库差异

git diff --cached # 比较暂存区和版本库差异

git diff --stat # 仅仅比较统计信息

查看提交记录

git log git log <file> # 查看该文件每次提交记录

git log -p <file> # 查看每次详细修改内容的diff

git log -p -2 # 查看最近两次详细修改内容的diff

git log --stat #查看提交统计信息

tig

Mac上可以使用tig代替diff和log,brew install tig

Git 本地分支管理

查看、切换、创建和删除分支

git br -r # 查看远程分支

git br <new_branch> # 创建新的分支

git br -v # 查看各个分支最后提交信息

git br --merged # 查看已经被合并到当前分支的分支

git br --no-merged # 查看尚未被合并到当前分支的分支

git co <branch> # 切换到某个分支

git co -b <new_branch> # 创建新的分支,并且切换过去

git co -b <new_branch> <branch> # 基于branch创建新的new_branch

git co $id # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除

git co $id -b <new_branch> # 把某次历史提交记录checkout出来,创建成一个分支

git br -d <branch> # 删除某个分支

git br -D <branch> # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)

 分支合并和rebase

git merge <branch> # 将branch分支合并到当前分支

git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交

git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>

 Git补丁管理(方便在多台机器上开发同步时用)

git diff > ../sync.patch # 生成补丁

git apply ../sync.patch # 打补丁

git apply --check ../sync.patch #测试补丁能否成功

 Git暂存管理

git stash # 暂存

git stash list # 列所有stash

git stash apply # 恢复暂存的内容

git stash drop # 删除暂存区

Git远程分支管理

git pull # 抓取远程仓库所有分支更新并合并到本地

git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并

git fetch origin # 抓取远程仓库更新

git merge origin/master # 将远程主分支合并到本地当前分支

git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支

git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上

git push # push所有分支

git push origin master # 将本地主分支推到远程主分支

git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)

git push origin <local_branch> # 创建远程分支, origin是远程仓库名

git push origin <local_branch>:<remote_branch> # 创建远程分支

git push origin :<remote_branch> #先删除本地分支(git br -d <branch>),然后再push删除远程分支

Git远程仓库管理

GitHub

git remote -v # 查看远程服务器地址和仓库名称

git remote show origin # 查看远程服务器仓库状态

git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址

git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址) git remote rm <repository> # 删除远程仓库

创建远程仓库

git clone --bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库

scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上

mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服务器创建纯仓库

git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址

git push -u origin master # 客户端首次提交

git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track

git remote set-head origin master # 设置远程仓库的HEAD指向master分支

也可以命令设置跟踪远程库和本地库

git branch --set-upstream master origin/master

git branch --set-upstream develop origin/develop
========

svn 命令行下常用的几个命令

http://blog.csdn.net/yangzhongxuan/article/details/7018168


1、将文件checkout到本地目录 
 
  svn checkout path(path是服务器上的目录) 
   例如:svn checkout svn://192.168.1.1/pro/domain 
   简写:svn co 

2、往版本库中添加新的文件 
  svn add file 
  例如:svn add test.php(添加test.php) 
  svn add *.php(添加当前目录下所有的php文件) 

3、将改动的文件提交到版本库 

  svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关) 
   例如:svn commit -m "add test file for my test" test.php 
   简写:svn ci 

4、加锁/解锁 
 
  svn lock -m "LockMessage" [--force] PATH 
  例如:svn lock -m "lock test file" test.php 
  svn unlock PATH 

5、更新到某个版本 
 
  svn update -r m path 
   例如: 
   svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 
   svn update -r 200 test.php(将版本库中的文件test.php还原到版本200) 
   svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
   简写:svn up 

6、查看文件或者目录状态 
 
  1)svn status path(目录下的文件和子目录的状态,正常状态不显示) 
   【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 
  2)svn status -v path(显示文件和子目录状态) 
   第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。 
   注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
   简写:svn st 
 
7、删除文件 
 
  svn delete path -m "delete test fle" 
  例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file" 
  或者直接svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种 
  简写:svn (del, remove, rm) 
 
8、查看日志 
 
  svn log path 
  例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化 

9、查看文件详细信息 
 
  svn info path 
  例如:svn info test.php 
10、比较差异 
 
  svn diff path(将修改的文件与基础版本比较) 
  例如:svn diff test.php 
       svn diff -r m:n path(对版本m和版本n比较差异) 
  例如:svn diff -r 200:201 test.php 
  简写:svn di 

11、将两个版本之间的差异合并到当前文件 
 
  svn merge -r m:n path 
  例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下) 
    
12、SVN 帮助 
 
  svn help 
  svn help ci

------------------------------------------------------------------------------
 以上是常用命令,下面写几个不经常用的  
------------------------------------------------------------------------------ 
 
13、版本库下的文件和目录列表 
 
  svn list path 
  显示path目录下的所有属于版本库的文件和目录 
  简写:svn ls  

14、创建纳入版本控制下的新目录 
 
  svn mkdir: 创建纳入版本控制下的新目录。 
  用法: 1、mkdir PATH... 
       2、mkdir URL... 
 
15、恢复本地修改 
 
   svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert: 
   用法: revert PATH... 
   注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复 
        被删除的目录 
  
16、代码库URL变更 
 
    svn switch (sw): 更新工作副本至不同的URL。 
    用法: 1、switch URL [PATH] 
          2、switch --relocate FROM TO [PATH...] 
 
          1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将 
             服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的 
             方法。 
          2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动 
             (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用 
             这个命令更新工作副本与仓库的对应关系。 
  
17、解决冲突 
 
   svn resolved: 移除工作副本的目录或文件的“冲突”状态。 
   用法: resolved PATH... 
   注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的 
   相关文件,然后让 PATH 可以再次提交。 
  
18、输出指定文件或URL的内容。 
 
  svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。 

  svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

svn checkout path(path是服务器上的目录) 
svn add file 
svn add test.php(添加test.php) 
svn add *.php(添加当前目录下所有的php文件) 
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关) 
svn commit -m "add test file for my test" test.php 
svn ci 
svn lock -m "LockMessage" [--force] PATH 
svn lock -m "lock test file" test.php 
svn unlock PATH 
svn update -r m path 
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200) 
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
svn up 
svn status path(目录下的文件和子目录的状态,正常状态不显示) 
svn status -v path(显示文件和子目录状态) 
svn st 
svn delete path -m "delete test fle" 
svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file" 
svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种 
svn (del, remove, rm) 
svn log path 
svn log test.php 显示这个文件的所有修改记录,及其版本号的变化 
svn info path 
svn info test.php 
svn diff path(将修改的文件与基础版本比较) 
svn diff test.php 
svn diff -r m:n path(对版本m和版本n比较差异) 
svn diff -r 200:201 test.php 
svn di 
svn merge -r m:n path 
svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下) 
svn help 
svn help ci
svn list path 
svn ls  
svn mkdir: 创建纳入版本控制下的新目录。 
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
svn switch (sw): 更新工作副本至不同的URL。 
switch URL [PATH] 
switch --relocate FROM TO [PATH...] 
svn resolved: 移除工作副本的目录或文件的“冲突”状态。 
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。 
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)


========

VSS控制台常用命令

http://blog.csdn.net/powerlly/article/details/3032889

       实例介绍几个常用的VSS控制台常用命令。

       格式说明:

               >     为输入命令

               #     为注释说明

               > 与 #行间为控制台输出内容
  
. 登录        
        启动GUI登录:
        >ssexp -s//192.168.1.2/vss -yuser,user
       
        命令行登录:
        >set ssdir=//127.0.0.1/CompanyDEV
        >set ssuser=user
        >set sspwd=user
        >ss cp $
        本地连接时问题:Unable to open user login file //127.0.0.1/CompanyDEV/data/loggedin/user.log.
        设置共享目录,通过“工具”->“查看”取消简单共享设置。通过设置共享->权限精确控制访问权限

. 创建Project
        >ss create $/CommonSolutions
        Comment for $/CommonSolutions:
        Collection of generate solutions.
        $/CommonSolutions        
        # 无选项,要求输入comment,当前目录不变

        >ss dir
        $/:
        $CommonSolutions
        1 item(s)

        >ss create $/ProductSolutions -C"Solution of product ." -S
        $/ProductSolutions
        Setting current project to $/ProductSolutions
        # -C添加注释,-S创建Project自动跳转到新创建目录

        >ss dir
        $/ProductSolutions:
        No items found under $/ProductSolutions

. 添加
        #VS IDE添加   创建好解决方案、工程,将解决方案添加到源代码管理

        >ss Add . -R,把当前目录的所有文件及文件夹(包括子文件夹、文件)添加到当前项目

. Label
        >ss Label -C"Initially add at 2008.9.22" -LV1
        UtilitiesSolution
        # 标记当前Project
        # -V 这个选项是指定要操作的项目的版本,如果要制定label(如果get时),采用参数 -VL, 后面带label号
        
        >ss label $/CommonSolutions/SccFileCleanerSln -C@SFCS.txt -VL080923V1.0 -L080923V1.0 -i-y
        # 将删除label,label comment无法修改
 
. 指定版本
        -V14                    Displays version 14. 
        -Vd2-29-92              Displays the version dated 2-29-92. 
        "-VLFinal Beta"         Displays the version with the label Final Beta.

        另一种方法
        Help.C;14               Displays version 14 of Help.C. 
        Show.prg;d2-29-92       Displays Show.prg as it appeared on 2-29-92. 
        "$/CW;L Beta 1"         Displays the version of the project $/CW with the label Beta 1.

. 查看状态
        >ss status modify.txt
        modify.txt          user         Exc  08-09-22 19:45
        F:/CompanyDEV/CommonSolutions/UtilitiesSolution/Utilities

. CheckIn
        >ss checkin modify.txt
        $/CommonSolutions/UtilitiesSolution/Utilities/modify.txt was checked out from F:/CompanyDEV/CommonSolutions/UtilitiesSolution/Utilities, not from the current folder.
        Continue anyway?(Y/N)n

        >f:
        F:/>cd F:/CompanyDEV/CommonSolutions/UtilitiesSolution/Utilities
        F:/CompanyDEV/CommonSolutions/UtilitiesSolution/Utilities>ss checkin modify.txt
        Comment for modify.txt:
        # 不加-C提示输入comment

. Show history
        >ss history modify.txt -#3
        # 显示某项的最近3个历史
        >ss history $/ -L
        # 查看目录中有label的项的历史
        >ss history $/ -L -R
        # 查看目录中文件及子目录中文件有label的项的历史

        # 加label注释的时候,说明:标记的对象,状态,原因,日期

        >ss history $/test -vd3/03/95;3:00p~3/03/95;9:00a
        # 查看$/test中3/3/95,9:00a - 3:00p的历史。时间从大到小

. Get
        >ss get * -R -VL080923llyV1
        # 指定Project label, 获取当前Project中文件包括subprojects

        >ss get * -R -VL080923llyV1 -GLf:/test/CommonSolutions/UtilitiesSolution2
        Set f:/test/CommonSolutions/UtilitiesSolution2 as the default folder for project
         $/CommonSolutions/UtilitiesSolution?(Y/N)n
        # 指定本地目录采用参数 -GL,后面带本地目录, 必须保证本地目录存在, 会提示是否将其设置为默认working folder, 可以用-I-n设置自动回答No
        >ss get * -R -VL080923llyV1 -GLf:/test/CommonSolutions/UtilitiesSolution2 -i-n
        # -W 获取writeable文件备份

. View
        >ss view modify.txt

. whoami
        >ss whoami

. workfold
        >ss workfold $/prject c:/project
        # Note that both the project and the directory are optional. If either one is not specified, the current project or folder is used.

. Force_dir
        Force_dir = true , get的文件放到设置的work folder中,否这获取到当前folder

. 注释
        -C         All items receive the same comment
        -C-        No comment is used.
        -Ctext
        -C@file.txt        Uses the contents of File.txt as the comment for all items
========
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值