一、git clone
git clone 支持本地和远程repository,其格式如下:
本地克隆:
- git clone /path/to/repo.git/
- git clone file:///path/to/repo.git/
如: 1). git clone git@github.scm.corp.ebay.com:swang6/test.git
2). git clone git@github.scm.corp.ebay.com:swang6/test.git test_rename : 重命名为test_rename
如果是远程repository:
- git ssh://[user@]host.xz[:port]/path/to/repo.git/
- git git://host.xz[:port]/path/to/repo.git/
- git http[s]://host.xz[:port]/path/to/repo.git/
- git ftp[s]://host.xz[:port]/path/to/repo.git/
- git rsync://host.xz/path/to/repo.git/
Git clone的参数很多,但是常用的就只有几个:
1. 最简单直接的命令
git clone xxx.igt
2. 如果想clone到指定目录
git clone xxx.git "指定目录"
3. clone时创建新的分支替代默认Origin HEAD(master)
git clone -b [new_branch_name] xxx.git
4. clone 远程分支
git clone 命令默认的只会建立master分支,如果你想clone指定的某一远程分支(如:dev)的话,需要使用checkout命令。
可以如下:
1). 查看所有分支(包括隐藏的) git branch -a 显示所有分支,如:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev
remotes/origin/master
2). 在本地新建同名的("wsheng_dev")分支,并切换到该分支
git checkout -t origin/dev 该命令等同于:
git checkout -b wsheng_dev origin/dev
如果你是用的命令是git checkout origin/dev:可以快速切换到这个分支。但是不会在本地建立这个分支。
如果现在想查看本地自己的分支:git branch
二、git add:
git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。
1. git add <path>, 如git add .
我通常是通过git add <path>的形式把我们<path>添加到索引库中,<path>可以是文件也可以是目录。git不仅能判断出<path>中修改(不包括已删除)的文件,还能判断出新添的文件,并把它们的信息添加到索引库中。
2. gti add -u
git add -u [<path>]: 把<path>中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。省略<path>表示.,即当前目录。
3. git add -A
git add -A: [<path>]表示把<path>中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。
省略<path>表示.,即当前目录
4. git add -i
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。即还没添加到索引库中。
4.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的主命令行。
4.2、update子命令
可以通过update子命令(2: [u]pdate)把已经tracked的文件添加到索引库中。其操作和revert子命令类似。
4.3、add untracked子命令
通过add untracked子命令(4: [a]dd untracked)可以把还没被git管理的文件添加到索引库中。其操作和revert子命令类似。
4.4、diff子命令
可以通过diff子命令(6: [d]iff)可以比较索引库中文件和原版本的差异。其操作和revert子命令类似。
4.5、status子命令
status子命令(1: [s]tatus)功能上和git add -i相似
4.6、quit子命令
quit子命令(7: [q]uit)用于退出git add -i命令系统
5. help
我们可以通过git add -h命令来看git add命令的帮助文档。
三、git remote
怎样修改 origin的URL
git remote -v
git remote rm origin
git remote add origin [new urls]
四、git stash
在git pull时如果失败,并提示需要commit本地的changes,那么除了执行git add -A, git commit操作之外还可以用git stash 将本地的changes相当于先"隐藏"起来。
然后再用git pull 做merge,另外可以使用git stash list查看当前stash的list:对于每一个stash都有其对应的一个index。
最后使用git stash apply stash@{index} 如git stash apply stash@{0}进行恢复,当然在没有进行多次stash的时候,直接用git stash apply进行恢复。每次新加的stash都是在stash@{0}的位置。stash在使用git stash apply@{0}恢复后,还是会存在于git stash list中的。可以用$git stash clear清除所有暂存。
其余的会陆续的更新。