git命令,git命令有哪些

http://www.itjxue.com  2023-01-04 18:27  来源:未知  点击次数: 

Git常用命令

git config —global user.name “Nshen” //必须

git config —global user.email “ nshen121@gmail.com ” //必须

git config —global color.ui “always” //或者"auto", always不仅Base环境是彩色,Dos里也是彩色的。

git config —global core.editor notepad.exe //设为windows记事本

git config —global alias.ci “commit” //别名缩写

git config —global merge.tool //可以设置合并工具

git config —global —list //查看设置

其实最后这些设置都保存在C:\Documents and Settings\用户名.gitconfig 文件下(windows)

查看帮助: git help command

git init

git add *.txt //添加所有txt文件

git add README //添加单个文件

git add . //添加所有文件包括子目录,但不包括空目录

add命令是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)注意每次修改后都要重新add,不然就会提交之前add时的版本。

git add -i //进入交互式add

git add -p //直接进入补丁模式,可以暂存修改的一部分。

git commit -m “initial project version”

git commit -m “something” someFile //提交指定文件

git commit -C HEAD -a —amend //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎)

-m “提交的说明”

-a 动把所有已经跟踪过的文件暂存,并提交.(工作目录中修改过的文件都提交到版本库,不需一个一个手动add了)

—amend 增补提交

-C 复用指定提交的提交留言

-c 打开编辑器在已有的提交基础上编辑修改

e.g 修改最后一次提交:

git commit -m 'initial commit'git add forgotten_filegit commit --amend

如果没有修改就相当于更改提交说明,上边3个命令得到一个提交.

忽略提交的文件:

所有人都需要忽略的文件要写在.gitignore文件里,而只有自己的个人偏好需要忽略的文件要写在.git/info/exclude文件中

# 此为注释 – 将被 Git 忽略***.a # **忽略所有 .a 结尾的文件!lib.a # 但 lib.a 除外 ***.[oa] # **忽略以.o或.a结尾的文件 ***~ # * 忽略以~结尾的文件/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild/ # 忽略 build/ 目录下的所有文件doc/ .txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt查看文件改动:

git diff // 比较工作目录与缓存区的区别

git diff —cached 或者 git diff —staged //缓存区与版本库里的区别

git diff HEAD //三者的区别

(请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。)

git diff 18f822e //18f822e这个版本与当前目录的区别

git diff aaaaa..bbbbb //比较aaaaa与bbbbb之间差别

git diff —stat可以统计数据,比较特别的命令

重命名,移动,删除文件:

git mv file_from file_to //改名或移动

$ git mv README.txt README$ git status# On branch master# Your branch is ahead of 'origin/master' by 1 commit.## Changes to be committed:#(use "git reset HEAD file..." to unstage)## renamed: README.txt - README

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.txt README

$ git rm README.txt

$ git add README

必须调用 git rm 文件名 //从暂存区移除,并且文件也被删除

如果只是手工删除了文件,运行git status时会出现

# Changed but not updated:#(use "git add/rm file..." to update what will be committed)## deleted: grit.gemspec

此时必须再运行 git rm 文件名,才会在提交时候不再纳入版本管理.

如果删除之前修改过并且已经add到缓存区了的话,则必须强制删除 -f

另外一种情况是,我们想把文件从Git仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆.a编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 —cached 选项即可:

git status

$ git status# On branch master# Changes to be committed: //只要在这行后边的,说明放入暂存区了#(use "git reset HEAD file..." to unstage) //想取消放入缓存 git reset HEAD README## new file: README# Changed but not updated: //跟踪文件内容改变,但还没有放到暂存区,需要git add 命令才会放到暂存区#(use "git add file..." to update what will be committed)#(use "git checkout -- file..." to discard changes in working directory) //删除修改,恢复到之前版本,有危险 (如果想保留并且回退版本用stashing 和分支来处理)# modified: benchmarks.rb查看提交历史:

git log

这时“j”向下浏览,“k”向上浏览,“q”退出

git log —pretty=oneline //一行显示

—pretty=“%h %s” //以各种格式输出

git log –p -2 //-p显示每次提交的内容差异 -2表示最近2次更改

git log —since “5 hours”

—since “3 hours”

—since “1 minute”

—before =“2008-10.01”

git log 27j34j3j..03u43u23 //最老版本..最新版本(不包括起点只包括终点)

git log 34j4j4..HEAD

git log fhfs8fh.. //省略HEAD

git log “HEAD^ ”..“HEAD ” //windows必须加引号表示回溯上一个提交

git log -1 HEAD~1 //相当于git log -1 HEAD^

git blame hello.html //你也可以用"-L"参数在命令(blame)中指定开始#####和结束行:

git blame -L 12,+10 hello.html //12到22行

blame还可以跟踪内容复制,文件复制,略,见版本控制之道 79页

git checkout head 文件名 //撤销暂存区的修改

git checkout head readme.txt todo.txt

git checkout head *.txt

git checkout head . //撤销所有

git revert HEAD //创建一个反向的新提交抵消原来的提交改动

如果需要反转多个,必须从最后的开始反转, 加 -n可以不马上提交,之后一起提交。

git revert -n HEAD

git revert -n 54efhds

git commit -m “revert head and 54efhds”

git reset —hard HEAD //所有未提交的内容清空,这会让"git diff" 和"git diff —cached"命令的显示法都变为空

git reset —soft HEAD //复位版本库,暂存差异,便于提交中发现错误需要更改时有用(例如私人密码放到里边了)

分支:在当前分支末梢建立分支:

git branch RB_1.0(建立分支不会自动切换过去)

git checkout RB_1.0(切换到RB_1.0分支)

创建并切换分支:

git checkout -b RB_1.0(简化上边2步操作)

git branch -d RB_1.0

基于某次提交、分支或标签创建新分支:

git branch RB_1.0 master

git branch RB_1.0 6fe57de0

git branch Rb_1.01 1.0

git branch -r //显示远程分支

git branch -a //列出所有分支

git branch -m master mymaster

-M 大写M会覆盖同名的分支

直接合并:

git merge 想合并到当前分支的源分支名

git merge —no-commit 分支 //合并但不提交

压合合并:将分支压合成一条commit记录,并合并过来

git merge —squash 某bug分支

git commit -m “修复某bug”

拣选合并:只合并一个提交

git cherry-pick 321d76f

如果需要连续拣选,就需要加 -n参数

然后再git commit ,但不要加-m参数,编辑器就会使用刚拣选的提交留言作为现在的留言。

标签Tag:查看标签:

git tag

git tag 1.0 //在当前分支最后一次提交创建标签

git tag 1.0 RB_1.0 //基于RB_1.0分支的最新踢脚创建标签

git tag 1.0 ae468d8kt //为某次提交创建标签

git checkout 1.0 //检出标签与检出分支一样操作,但检出标签后用git branch查看本地分支会发现你现在不再任何分支上

这时你不应该修改,而应该立即基于此标签创建一个分支

git checkout -b from-1.0

1)git rebase RB_1.01 //也许修改过一个bug,希望新版本变基到RB_1.01分支上

2)手动解决冲突 //如果解决不了直接git rebase -abort来跳过特定提交或完全放弃变基

3)git add xxx.html //冲突解决

4)git rebase —continue

git rebase --onto HEAD^^ HEAD^ HEAD

//—onto参数可以改写历史抹掉中间的参数,将倒数第一个参数变基到倒数第3个参数,为防止出错建议在试验性分支上先试验。

rebase -i 可以排序历史记录,多个提交合并为1个,一个提交分解成多个提交 ,

详见版本控制之道p86 ,需要编辑器支持,windows记事本不行

远程相关:

git clone git://github.com/schacon/grit.git //从现有仓库克隆

git clone git://github.com/schacon/grit.git mygrit //换名,唯一区别就是新建的目录成了mygrit,其他都一样

git remote add pb git://github.com/paulboone/ticgit.git

clone会默认添加origin仓库,如果原本用git init创建的版本库,后来又想提交到远程版本库,就可以用下边的办法

git remote add origin git@example.com :/xxxxxx

git remote -v //查看远程仓库,默认clone后,应该有一个origin仓库,-v显示对应的clone地址

git remote show origin //查看远程仓库信息

git remote rename pb paul

git remote rm paul

git fetch [remote-name] 拉取远程仓库到本地远程仓库,不自动合并 //$ git fetch origin$ git fetch pbremote: Counting objects: 58, done.remote: Compressing objects: 100% (41/41), done.remote: Total 44 (delta 24), reused 1 (delta 0)Unpacking objects: 100% (44/44), done.From git://github.com/paulboone/ticgit* [new branch] master - pb/master* [new branch] ticgit - pb/ticgit

现在pb/master可以在本地访问了,你可以合并到自己的某个分支,或者切换到这个分支看看有什么有趣的更新

git pull 抓取数据合并到工作目录中当前分支

git push [remote-name] [branch-name] //默认为 git push origin master

git push origin serverfix //推送分支,其实是下边一句的简化,提取我的 serverfix 并更新到远程仓库的 serverfix

git push origin serverfix:serferfix

git push origin :serverfix //这个语法用于删除,只要把分号前留空

git gc //垃圾回收,每隔一段时间例如一个月运行一次可以减少磁盘占用空间。

git reflog //最后的保障,列出误删的东东

git bisect //二分查找,版本控制之道p124页,略

归档版本库,导出压缩包:

git archive —format=格式 —prefix=目录/ 版本压缩包.zip

git archive —format=zip headtest.zip

git archive —format=tar —prefix=mysite-1.0/ 1.0 | gzipmysite-1.0.tar.gz

git archive —format=zip —prefix=mysite-1.0/ 1.0 mysie-1.0.zip

Git命令大全

配置 Git 的相关参数。

Git 一共有3个配置文件:

1. 仓库级的配置文件:在仓库的 .git/.gitconfig ,该配置文件只对所在的仓库有效。

2. 全局配置文件:Mac 系统在 ~/.gitconfig ,Windows 系统在 C:\Users\用户名\.gitconfig 。

3. 系统级的配置文件:在 Git 的安装目录下(Mac 系统下安装目录在 /usr/local/git )的 etc 文件夹中的 gitconfig 。

从远程仓库克隆一个版本库到本地。

初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。

查看本地仓库的状态。

操作远程库。

操作 Git 的分支命令。

检出命令,用于创建、切换分支等。

把已经提交的记录合并到当前分支。

把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。

将暂存区中的文件提交到本地仓库中。

从远程仓库获取最新的版本到本地的 tmp 分支上。

合并分支。

比较版本之间的差异。

从远程仓库获取最新版本并合并到本地。

首先会执行 git fetch ,然后执行 git merge ,把获取的分支的 HEAD 合并到当前分支。

把本地仓库的提交推送到远程仓库。

显示提交的记录。

还原提交记录。

生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。

操作标签的命令。

重命名文件或者文件夹。

删除文件或者文件夹。

多人合作开发时,如果远程的分支被其他开发删除掉,在本地执行 git branch --all 依然会显示该远程分支,可使用下列的命令进行删除:

Git 中 6 个基本常用命令

大家好啊,我是大田。

想更深刻了解 Git 常用命令,先来看看原理图:

我们使用 Git 操作的核心步骤就是:

先add代码到git缓存

然后commit到git本地仓库

最后push到远程Github代码仓库

备注:

workspace:当前工作区,需要经过 add、commit、push 才能上传到远程仓库

index:缓存区,标记你本地的哪些内容是被 git 管理的

repository:本地仓库,保存各个版本的提交

remote:远程仓库

1、克隆远程项目到本地

git clone url

2、克隆后,创建新分支,名字叫 dev

git checkout -b dev

3、加到缓存区

1)git add .:添加所有项目至缓存区

2)git add 目录名:添加指定目录到缓存区

3)git add 文件名:添加指定文件到缓存区

4、提交至本地仓库

git commit -m "注释信息"

5、推送本地仓库信息至远程仓库

git push origin master:将本地分支的更新内容,全部推送至远程仓库 master 分支

git push origin dev:将本地 dev 分支推送到远程,再由一个人统一加到 master 分支上

6、拉取远程仓库最新文件

git pull:拉取远程仓库所有分支合并到本地

git pull origin master:拉取远程master分支,合并到当前本地master分支

git fetch:仅做拉取操作,不做合并,合并需要自己再找其他方法

备注:一般都用 git pull

git之几个有用的命令

1、首先我们要先在命令框里输入这个命令 将存储库克隆到新目录中。(在这之前你要先安装好git并配好环境)

git clone版本库的网址()

1

1

2、第二步我们要先查询一下工作区的状态

git status命令用于显示工作目录和暂存区的状态

1

1

3、 把代码添加到本地仓库

git add . //全部添加

git add 文件名 //提交指定文件

1

2

1

2

4、接下来就是提交了

git commit -m '111' //单引号里边是备注内容,也是给你这次提交起个名字

1

1

5、最后就是 git push 命令

git push 远程主机名 本地分支名 //例如 git push origin master

将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,master是本地分支名

1

2

1

2

另外需要注意的是,查询过状态之后,一般都需要用get pull命令先把远程的代码更新到本地然后再上传。

几个常用的git命令

1.安装Git

Linux

sudo apt-get install git

Window:到Git官网下载安装:

2.配置全局用户Name和E-mail

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

3.初始化仓库

git init

4.添加文件到Git仓库

git add file

提示:可反复多次使用,添加多个文件;

5.提交添加的文件到Git仓库

git commit

然后会弹出一个Vim编辑器输入本次提交的内容;

或者

git commit -m "提交说明"

6.查看仓库当前的状态

git status

7.比较当前文件的修改

$ git diff file

8.查看历史提交记录

git log

或者加上参数查看就比较清晰了

$ git log --pretty=oneline

9.回退版本

$ git reset --hard HEAD^

说明:在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,以此类推,如果需要回退几十个版本,写几十个^容易数不过来,所以可以写,例如回退30个版本为:HEAD~30。

如果你回退完版本又后悔了,想回来,一般情况下是回不来的,但是如果你可以找到你之前的commit id的话,也是可以的,使用如下即可:

$ git reset --hard + commit id

提示:commit id不需要写全,Git会自动查找;

补充说明:Git中,commit id是一个使用SHA1计算出来的一个非常大的数字,用十六进制表示,你提交时看到的一大串类似3628164...882e1e0的就是commit id(版本号);

在Git中,版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向回退的版本,然后顺便刷新工作区文件;

10.查看操作的历史命令记录

$ git reflog

结果会将你之前的操作的commit id和具体的操作类型及相关的信息打印出来,这个命令还有一个作用就是,当你过了几天,你想回退之前的某次提交,但是你不知道commit id了,通过这个你可查找出commit id,就可以轻松回退了,用一句话总结:穿越未来,回到过去,so easy!

11.diff文件

git diff HEAD -- file

说明:查看工作区和版本库里面最新版本文件的区别,也可以不加HEAD参数;

12.丢弃工作区的修改

$ git checkout -- file

说明:适用于工作区修改没有add的文件

13.丢弃暂存区的文件

$ git reset HEAD file

说明:适用于暂存区已经add的文件,注意执行完此命令,他会将暂存区的修改放回到工作区中,如果要想工作区的修改也丢弃,就执行第12条命令即可;

14.删除文件

$ rm file

然后提交即可;

如果不小心删错了,如果还没有提交的话使用下面命令即可恢复删除,注意的是它只能恢复最近版本提交的修改,你工作区的修改是不能被恢复的!

$ git checkout -- file

(责任编辑:IT教学网)

更多