您的位置:首页 > 其它

Git常用操作命令收集

2013-01-25 09:03 591 查看
1) 远程仓库相关命令

检出仓库:$ git clone git://github.com/jquery/jquery.git

查看远程仓库:$ git remote -v

添加远程仓库:$ git remote add [name] [url]

删除远程仓库:$ git remote rm [name]

修改远程仓库:$ git remote set-url --push[name][newUrl]

拉取远程仓库:$ git pull [remoteName] [localBranchName]

推送远程仓库:$ git push [remoteName] [localBranchName]

2)分支(branch)操作相关命令

查看本地分支:$ git branch

查看远程分支:$ git branch -r

创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支

切换分支:$ git checkout [name]

创建新分支并立即切换到新分支:$ git checkout -b [name]

删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项

重命名分支:git branch -m <old_name> <new_name> 改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)

合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并

创建远程分支(本地分支push到远程):$git push origin [name]

删除远程分支:$ git push origin :heads/[name]

我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。

如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

$ git push origin test:master // 提交本地test分支作为远程的master分支

$ git push origin test:test // 提交本地test分支作为远程的test分支

如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

3)版本(tag)操作相关命令

查看版本:$ git tag

创建版本:$ git tag [name]

删除版本:$ git tag -d [name]

查看远程版本:$ git tag -r

创建远程版本(本地版本push到远程):$git push origin [name]

删除远程版本:$ git push origin :refs/tags/[name]

4) 子模块(submodule)相关操作命令

添加子模块:$ git submodule add [url] [path]

如:$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs

初始化子模块:$ git submodule init ----只在首次检出仓库时运行一次就行

更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下

删除子模块:(分4步走哦)

1)$ git rm --cached [path]

2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉

3) 编辑“.git/config”文件,将子模块的相关配置节点删除掉

4) 手动删除子模块残留的目录

5)忽略一些文件、文件夹不提交

在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如

target

bin

*.db

关于git删除远程分支

git branch -r -d origin/branch-name

发现只是删除的本地对该远程分支的track,正确的方法应该是这样:

git push origin :branch-name

冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。

一、前言

git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。

二、基本

git add <path>表示 add to index only files created or modified and not those deleted

我通常是通过git add <path>的形式把我们<path>添加到索引库中,<path>可以是文件也可以是目录。

git不仅能判断出<path>中,修改(不包括已删除)的文件,还能判断出新添的文件,并把它们的信息添加到索引库中。

三、git add -u

git add -u 表示 add to index only files modified or deleted and not those created

git add -u [<path>]: 把<path>中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。

省略<path>表示.,即当前目录。

四、git add -A

git add -A: [<path>]表示把<path>中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。

省略<path>表示.,即当前目录。

五、git add -i

我们可以通过git add -i [<path>]命令查看<path>中被所有修改过或已删除文件但没有提交的文件,

并通过其revert子命令可以查看<path>中所有untracted的文件,同时进入一个子命令系统。

比如:

git add -i

staged unstaged path

1: +0/-0 nothing branch/t.txt

2: +0/-0 nothing branch/t2.txt

3: unchanged +1/-0 readme.txt

*** Commands ***

1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked

5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp

What now>

这里的t.txt和t2.txt表示已经被执行了git add,待提交。即已经添加到索引库中。

readme.txt表示已经处于tracked下,它被修改了,但是还没有被执行了git add。即还没添加到索引库中。

5.1、revert子命令

可以通过git add -i的revert子命令(3: [r]evert)把已经添加到索引库中的文件从索引库中剔除。

(3: [r]evert)表示通过3或r或revert加回车执行该命令。执行该命令后,git会例出索引库中的文件列表.

然后通过数字来选择。输入"1"表示git会例出索引库中的文件列表中的第1个文件。

"1-15"表示git会例出索引库中的文件列表中的第1个文件到第15个文件.回车将执行。

如果我们不输入任何东西,直接回车,将结束revert子命令,返回git add -i的主命令行。

5.2、update子命令

可以通过update子命令(2: [u]pdate)把已经tracked的文件添加到索引库中。其操作和revert子命令类似。

5.3、add untracked子命令

通过add untracked子命令(4: [a]dd untracked)可以把还没被git管理的文件添加到索引库中。其操作和revert子命令类似。

5.4、diff子命令

可以通过diff子命令(6: [d]iff)可以比较索引库中文件和原版本的差异。其操作和revert子命令类似。

5.5、status子命令

status子命令(1: [s]tatus)功能上和git add -i相似

5.6、quit子命令

quit子命令(7: [q]uit)用于退出git add -i命令系统

六、帮助

我们可以通过git add -h命令来看git add命令的帮助文档。

git add -h

usage: git add [options] [--] <filepattern>...

-n, --dry-run dry run

-v, --verbose be verbose

-i, --interactive interactive picking

-p, --patch select hunks interactively

-e, --edit edit current diff and apply

-f, --force allow adding otherwise ignored files

-u, --update update tracked files

-N, --intent-to-add record only the fact that the path will be added later

-A, --all add changes from all tracked and untracked files

--refresh don't add, only refresh the index

--ignore-errors just skip files which cannot be added because of errors

--ignore-missing check if - even missing - files are ignored in dry run
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: