Git基本命令行操作
http://www.cnblogs.com/lee0oo0/archive/2013/06/28/3161829.htmlA. 新建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/70181681、将文件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
========