Git 常用命令 和使用方法

来源:互联网 发布:java文件夹选择器 编辑:程序博客网 时间:2024/06/05 11:35

Git常用命令

初始化一个版本仓库

git init
Clone远程版本库

git clone git@xbc.me:wordpress.git

添加远程版本库origin,语法为 git remote add [shortname] [url]

git remote add origin git@xbc.me:wordpress.git

查看远程仓库
git remote -v

提交你的修改
添加当前修改的文件到暂存区
git add .

如果你自动追踪文件,包括你已经手动删除的,状态为Deleted的文件
git add -u

提交你的修改
git commit –m "你的注释"

推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]
git push origin master

查看文件状态
git status

跟踪新文件
git add readme.txt
从当前跟踪列表移除文件,并完全删除
git rm readme.txt
仅在暂存区删除,保留文件在当前目录,不再跟踪
git rm –cached readme.txt

重命名文件
git mv reademe.txt readme

查看提交的历史记录
git log
修改最后一次提交注释的,利用--amend参数
git commit --amend
忘记提交某些修改,下面的三条命令只会得到一个提交。
git commit –m "add readme.txt"git add readme_forgottengit commit –amend

假设你已经使用git add .,将修改过的文件a、b加到暂存区

现在你只想提交a文件,不想提交b文件,应该这样

git reset HEAD b

取消对文件的修改
git checkout –- readme.txt

基本的分支管理

创建一个分支

git branch iss53

切换工作目录到iss53

git chekcout iss53

将上面的命令合在一起,创建iss53分支并切换到iss53

git chekcout –b iss53

合并iss53分支,当前工作目录为master

git merge iss53

合并完成后,没有出现冲突,删除iss53分支

git branch –d iss53

拉去远程仓库的数据,语法为 git fetch [remote-name]

git fetch

fetch 会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并

git pull

查看远程仓库的信息

git remote show origin

建立本地的dev分支追踪远程仓库的develop分支

git checkout –b dev origin/develop

参考资料

远程仓库的使用

何谓分支

基本的分支与合并

分支的管理

分支式工作流程

远程分支

衍合


GIt使用终极教程

1、用户信息
$ git config --global user.name "lxm"$ git config --global user.email 1235355@qq.com
注:这个设置是你在提交项目时的账户信息,只有设置了才可以commit提交

2、查看基本配置
$ git config --list

3、从当前目录初始化
$ git init
注:要对现有的某个项目开始 GIt 管理,需要执行上面初始化 命令

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add  命令告诉 Git开始对那些文件进行追踪,然后提交
$ git add *.c$ git add README$ git commit- m 'initial project version'

4、检测当前文件状态
$ git status
5、从远程仓库抓取数据
$ git fetch

6、推送数据到远程仓库
      如果要把本地的master分支推送到origin服务器上
$git pull origin master

7、查看远程仓库信息
$ git remote show [remote - name]

8、推送到远程分支
$ git push origin master

9、忽略文件,在根目录创建.gitignore文件
.settingsdata.buildpath.project


Git Add

一、前言
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.txtt2.txt表示已经被执行了git add,待提交。即已经添加到索引库中。
readme.txt表示已经处于tracked下,它被修改了,但是还没有被执行了git add。即还没添加到索引库中。
5.1、revert子命令
可以通过git add -irevert子命令(3: [r]evert)把已经添加到索引库中的文件从索引库中剔除。
3: [r]evert)表示通过3rrevert加回车执行该命令。执行该命令后,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


Git中的fetch和pull

Git中从远程的分支获取最新的版本到本地有这样2个命令:

1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge


git fetch origin master
git log -p master..origin/master
git merge origin/master


以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并

上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp
git merge tmp


从远程获取最新的版本到本地的test分支上
之后再进行比较合并

2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master


上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

Git Push 

$ git push ssh://git@dev.lemote.com/rt4ls.git master // 把本地仓库提交到远程仓库的master分支中

$ git remote add origin ssh://git@dev.lemote.com/rt4ls.git
$ git push origin master


这两个操作是等价的,第二个操作的第一行的意思是添加一个标记,让origin指向ssh://git@dev.lemote.com /rt4ls.git,也就是说你操 作origin的时候,实际上就是在操作ssh://git@dev.lemote.com/rt4ls.git。origin在这里完全可以理解为后者 的别名。

    注意:需要说明的是,默认情况下这条语句等价于提交本地的master仓库到远程仓库,并作为远程的master分支。
    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

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

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


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

git 忽略已经跟踪的文件

如果某些文件已经被跟踪了, 再放入到.gitinore会失效, 用以下命令来忽略

git rm--cached database.yml

这样就从git的跟踪记录中删除了这个文件的跟踪记录

二、忽略文件规则:
忽略规则是对文件名有效的;
A: 空行或#号开始的行,会被忽略;
B: 可以使用通配符:
   *        任意字符;
   ?        单个字符;
   [abc]    多种可能的字符a、b或c;
   [a-z0-9] 表示在某个范围内进行匹配;
   \        转义字符;
   !        表示取反(不忽略),写在某条规则的前面;
C: 路径分隔符"/";如果"/"后面的名称是个目录,则该目录以及该目录下的所有文件都会被忽略;如果"/"后面的名称是个文件,则该文件不会被忽略;
   例如: /name
   如果name是个目录,则目录name和name下的所有文件都会被忽略;如果name是个文件,则该文件不会被忽略;
D: .gitignore文件也可以忽略自己,只要把自己的名字写进来即可;
E: 一条(行)忽略规则只对某一个目录下的文件有效,而对该目录下的子目录中的文件无效;
F: 一条(行)忽略规则也可以只对单个文件有效(忽略单个指定的文件);

例如:
*.a       #忽略所有以.a为后缀的文件;
!lib.a    #不忽略文件lib.a;
/TODO     #只忽略此目录下TODO文件,子目录的TODO不被忽略;
build/    #忽略build目录下的所有文件;
doc/*.txt #只忽略doc/下所有的txt文件,但是不忽略doc/subdir/下的txt文件;



原创粉丝点击