Git入门教程
Git 是一个开源的分布式版本控制系统,目前市面上流行的GitHub,GitLab,Gerrit等版本控制系统的核心都是通过Git去管理代码的。下面介绍一些常用的git命令。
1、 git clone remote_git_url local_directory
此命令会将远程git库clone到local_directory下。如果不指定local_directory,会以远程仓库名作为本地存储的文件夹名
2、 git init 和 git init --bare
git init :在当前文件夹,新建一个git库,文件夹下会生成一个.git的文件夹,当前文件夹相当于工作区,可以执行git add, git commit, git branch等操作,如果本地文件夹已经存放了需要进行管理的代码,使用git init是比较合适的,可以继续在此文件夹进行相应的开发工作。
git init -bare:在当前文件夹初始化一个裸库,只用来存放版本信息,不存在工作区,无法执行git add等操作,适合作为初始库,用以分享代码给其他人。
3、 git status
此命令用来总览本地代码的改动,以及当前代码库的状态
如上图所示,执行git status 之后会将当前工作区的代码与本地代码库中的最新的代码做比较,给出相关改动的状态
Deleted: 表示文件test在工作区中被删除了
Modified:表示文件test2有改动
Untracked files: 表示文件test3还没有被加入到代码库中进行追踪管理
Git在给出工作区的状态后还会同时给出进一步处理所需要用到的相关命令,例如上图中显示的git add/rm , git checkout --
4、 git add
此命令用来将工作区的改动加入到暂存区。比如新增的文件,改动后的文件等,删除的文件等,使用方法是git add filename1 filename2 ,如果想把本地的改动全部加入到暂存区,可以使用git add .
我们对上图中的git库执行git add .之后再执行git status 可以得到将改动加入到暂存区之后的工作区状态
5、 git rm
此命令用来将工作区的文件直接删除,并提交到暂存区。相当于先执行rm filename 在执行git add filename。
6、 git config
在我们将工作区的改动加到暂存区之后,下一步动作将改动提交到代码库里,在第一次执行提交之前我们需要先配置下我们的提交用户信息。
git config user.name Richard
git config user.email Richard@qq.com
user.name是提交日志里显示的用户名,user.email是提交日志里显示的用户邮件
这个命令只是给当前代码库配置提交信息。如果想给自己账户下所有的git库都配置提交信息,需要使用git config -global user.name 和 git config -global user.email
除了配置提交时的用户信息外,还可以配置编辑提交信息时所使用的的编辑器,命令如下:git config -global core.editor vim
即可使用vim来替代系统默认的编辑器。
7、 git commit
在配置好用户信息后我们可以使用git commit 命令来将已经加入到暂存区的改动提交到代码库里面。如下图所示,输入git commit之后会打开一个编辑器,你可以输入任何想输入的内容。如果提交信息较短,也可以直接使用git commit -m " delete test, modify..",直接进行提交
有时在我们提交之后,可能会发现漏加了一笔改动,然后我们又不希望分成两笔提交,这时在我们执行git add之后,可以执行git commit -amend 来将两次改动合并到一笔提交中。
8、 git push
用来将本地仓库的修改推送到远程主仓库。
一般用法 git push origin master 次命令会将本地仓库master分支最新的提交推送到origin远程仓库对应的master分支
9、 git pull
从远程仓库获取更新并和本地分支合并。
默认情况下git pull 会获取远程仓库的改动然后和本地分支进行git merge. 如果我们希望执行git rebase而不是git merge 可以运行 git pull -rebase
10、 git log
查看提交日志
查看最新的5条日志git log -5
查看自某个commit起的日志 git log commit_hash..HEAD
查看某个文件第3行到第10行的改动:git log -L 3,10:filename
查看某个文件某个函数的改动:git log -L :funcnmae:filename
11、 git show
查看当前HEAD提交的具体改动内容
可以接其他提交的commit id查看对应的改动
12、 git diff
查看当前工作区相对于库中最新的代码所做的改动,只能查看未经暂存的改动
如需查看已暂存的和库中的对比的改动需要使用git diff --cached
13、 git branch
查看当前所在分支信息
Git branch -av 查看全部分支信息及最新的commit id
14、 git checkout
切换分支,或者还原工作区文件
git checkout -b new_branch 新建一个new_branch分支
15、 git format-patch
用于生成patch文件。
基于某次提交生成patch, git format-patch base_commit_id
生成的patch,名字一般为0001-.patch,0002.patch
16、 git am
将git format-patch生成的一系列的patch文件打到git库中
17、 git apply
将某一patch打到git库中,与git am的区别是am会将原始的提交信息也合入,apply只会将改动内容合入到工作区,不会自动入库
18、 git reset
回退到某个commit.
Git reset -hard commit_id, 将工作区和代码库都回退到指定的commit
Git reset -soft commit_id,将代码库回退到指定的commit,并将改动存放到暂存区。
19、 git merge, git rebase
都是用来合并分支。区别在于git merge是直接合并,git rebase是先将本地提交暂存,然后将HEAD更新到最新,在把本地提交合入。