一. Git基本的工作流程简介如下:
- 在工作目录中修改某些文件;
- 对修改后的文件进行快照,然后保存到暂存区域;
- 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中.
二.git常用命令操作
1. git clone
git clone 代码库的url
eg: git clone ssh://xxx@ip:29422/project
git clone -b test ssh://[email protected]:29422/test.git
克隆到本地的库,默认的代码库的当前分支(活动分支)名称是master,如果下载的时候,加上-b 分支名称,下载下来的代码库的当前分支(活动分支)就是指定的分支名称: git clone –b branch1 ssh://[email protected]:29422/test.git 克隆到本地的库,默认的代码线是branch1 ,git clone 其他用法可以使用 git clone - -help查看.
2.git status
可以使用git status查看版本库中文件提交的状态,没提交的信息会有显示.
3.git add //将工作区的修改提交到暂存区
1). git add filename
2). git add directoryname
3). git add . //其中.表示当前目录下新添加的文件或目录,修改的文件或目录
4.git commit //将暂存区的文件或目录提交到版本库区
git commit 与 git commit –m “message”相同,只是后者直接以-m参数将提交日志写入
5.git commit - -amend
1). 修正提交单中错误的用户名及邮箱
eg:git commit - -amend --author=’jon [email protected]’
2). 代码走查不通过的时候,在本地使用这个命令可以不产生新的代码走查单
在本地修改完走查不通过的文件,需要执行git commit的时候,不要使用git commit –m,而是使用git commit --amend命令(前提本地代码库中的.git/hooks/commit-msg 钩子脚本是存在的,如果钩子脚本不存在,要到gerrit web页面的走查单中将changed-id xxxx贴到git commit --amend弹出的编辑框中)
6.git rm //删除文件或目录
1). git rm 文件名称
2). git rm –r 目录名称
3) .将不需要的文件及目录从工作区及暂存区中删掉
a. 如果需要删除git库中已经受控的文件或目录请使用此命令,不要使用操作系统下的删除命令.受控-表示文件及目录状态为跟踪状态
b. 如果要删除第一次放到工作区的文件或目录,直接使用操作系统下的删除命令,也可以使用 git clean –df 移除不受控的文件或目录
c. git rm test.txt 将test.txt从工作区及暂存区删除,如果需要提交,下一步直接执行git commit –m “message”即可
7.git mv
git mv oldname newname //将文件或者目录重命名
8.git diff //对比本地库中工作区与暂存区的差异
1). git diff --cached //对比本地库中暂存区与库区的差异
2). git diff head //对比本地库中工作区与库区的差异
9.git checkout
1). git checkout -- filename 或者git checkout -- directory
在本地git库的工作区修改或删除已受控的文件,后悔了,想要会退到之前的状态(工作区的文件回到修改之前的状态,暂存区,库区不受影响)
2).git checkout branchname //切换到某个分支
3). git checkout –b branch1 commit-ID //以某个提交修订版本为基准建立新分支,并切换到新分支
10.git reset head //一般是在执行git add的之后,想取消add的动作(工作区不受影响,库区不变,暂存区回到add之前的状态)用
1).git reset head 文件名称
2).git reset head 目录名称
11.git pull //更新本地库
1).git pull --rebase //在本地库的A分支下执行该命令,表示将远程库中对应的A分支内容更新到本地A分支,加入参数 --rebase 可以避免在更新过程中本地库中产生合并节点
2).git pull origin branchname //将远程仓库的分支内容更新到本地库的当前分支上
12.git push //将提交到本地库中的内容推送到远程库中
1).git push origin HEAD:refs/for/branchname //推送到gerrit页面走查
2).git push origin branchname //直接推送到远程git库中
13.git log //输出信息显示
1).git log -p //用于查看每一次提交条目的补丁内容,这在代码复查时很管用,--表示本次提交版本之前文件的修改状态
2).git log --stat //显示被修改文件的修改统计信息,添加或删除了多少行
3). git log --pretty=format
可以将提交历史显示成你想要的格式,这里format的可选项包括:oneline,short,medium,full,fuller,email,raw
14.git log 可以指定代码提交者或者邮箱进行提交者代码日志查询
eg:git log --author ="jon"
git log --author="[email protected]"
15.git branch
1).git branch //在本地库执行git branch 可以查看本地库的分支,并且可以查看本地库当前分支(通常用*标记)
2).git branch –r //在本地库中查看远程库的分支
3).git branch branname commit-ID //以某个修订版本建立新分支,commit-ID为40位的哈希值
4).git branch –d branchname //删除分支,在删除时会检查要删除的分支是否已经合并到其他分支,否则拒绝删除
5).git branch –D branchname // 强制删除分支
6).git branch –m branch1 branch2 //分支重命名,如果库中有同名的分支,则拒绝重命名
7).git branch –M branch1 branch2 //强制重命名,不论库中是否有同名的分支