git常用的六个命令,git常用命令详解

http://www.itjxue.com  2023-01-06 03:20  来源:未知  点击次数: 

git网页版怎么查看操作命令

进入网页版之后鼠标点击右键,选择网页检索,在里面可以查到命令记录

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常用命令--(ls,cat,mv,touch)

描述:列出有关文件的信息(默认为当前目录)。如果没有指定-cftuvSUX或——Sort,则按字母顺序排序。

-a 列出所有文件,包括隐藏文件和以“.”开头的文件;

-d 列出目录本身;

-l 列出条目的详细信息;

-r 以反序排列;

-t 按时间排列;

-h 显示的文件大小按人类可读的方式;

-R 递归处理子目录 ;

-X 以文件名的后缀排序;

-S 按文件大小排序

ls

列出当前目录下的所有文件,这个用的最多。

ls -al

列出所有文件(包括隐藏文件和以“.”开头的文件),及其详细信息;

ls - lt

列出所有文件详细信息,并按时间排序,时间最近的靠前。

描述:连接和查看文本文件

-n 从1开始对所有输出行进行编号;

-b 和n相似,但是空行不编号;

-s 遇到连续空行时合并为一行;

cat file1

打印文件内容

cat file1 file2 file3

合并文件1和2的内容输出到文件3,如果文件3存在则覆盖

cat -n file1 file2

把文件1的内容按行编号后追加到文件2

描述:用来移动文件或者重命名

-b 若需覆盖文件,则覆盖前先备份;

-f 如果目标文件存在,强制覆盖;

-i 若目标文件存在,询问是否覆盖;

-t 移动多个源文件到一个目录,使用中目标目录写在前,源文件在后

mv aa.txt bb.txt

将文件aa.txt改名为bb.txt;

mv aa.txt demo

将文件aa.txt移动到目录demo中;

mv aa.txt bb.txt dir1; mv -t ~/Desktop/demo-1/dir2 aa.txt bb.txt

先将文件aa.txt和bb.txt移动到目录dir1,然后再将文件aa.txt和bb.txt移动到目录dir2中;

mv dir1 dir2

如果目录dir2不存在,将目录dir1改名为dir2;如果dir2存在,将dir1移动到dir2

描述:用来新建一个文件,或者修改已存在文件的时间戳

-a 只更改存取时间;

-c 不建立任何文档;

-d 使用指定的日期时间;

touch aa.txt bb.txt

创建文件aa.txt和bb.txt

touch -c cc.txt

如果cc.txt不存在就不更改时间戳也不建立cc.txt

touch -r bb.txt

更新bb.txt的时间戳

Git命令和参数都很多,需要慢慢学。可以使用Git的 --help命令查看详细用法,如输入cat --help,查看cat命令的参数及使用方法。也可以使用网站explainshell.com,输入各种组合参数的命令来查询,每一个参数都会有解释。

常用 Git 命令汇总

下面是我整理的常用 Git 命令清单。几个专用名词的译名如下:

Workspace:工作区

Index / Stage:暂存区

Repository:仓库区(或本地仓库)

Remote:远程仓库

导航目录:

1、新建

2、配置

3、帮助

4、状态

5、信息

6、添加

7、删除

8、分支

9、检出

10、远程同步

11、撤销

12、commit

13、diff

14、grep

15、log

16、merge

17、mv

18、tag

19、pull

20、ci

21、rebase (谨慎使用)

22、reset (谨慎使用)

23、其他

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

(责任编辑:IT教学网)

更多

推荐网络创业文章