以 下面的两个前提为例:
- 用户名:xiaowang@qq.com
- 对应用户名:xiaowang
- 服务器为:192.168.2.06
- 仓库名:teststo
- 仓库teststo已包含分支:master 、test_t1、test_t2
0. 安装git工具
- windows上可安装git bash客户端
- ubuntu上使用apt-get安装git
- 可视化辅助工具(可选):
- gitk,如果不支持则安装该工具(linux/windows均可使用)
- TortoiseGit,和svn的Tortoisesvn几面类似(windows上可用)
1. 从服务器clone代码
git clone xiaowang@192.168.2.06:/proj/teststo
2. 检出开发要基于的远端分支到本地
2.1 查看所有分支(含local端、remote端):
git branch -a
2.2 创建并检出同名本地分支:
** eg. 检出远端的test_t1到本地,并命名为同名本地分支test_t1 **
git checkout -t origin/test_t1
*** 或者:eg. 检出远端的test_t1到本地名为xx_tt1本地分支 ***
git checkout -b xx_tt1 origin/test_t1
3. 修改代码
4. 添加提交内容,并填写提交说明
4.1 查看该路径下的所有修改:
git status .
4.2 添加修改的指定文件file1和file_n
git add file1 file_n
或者将当前路径下的所有修改都add上
git add .
4.3 添加提交说明(建议最佳方式)
git commit -s
建议commit的格式(三部分)
如:
【FD协议】: 修改xx
(空行)
修改了什么;为什么修改;如何验证;说清楚一些东西,以便后续查看;
(空行)
signed by:“xiaowang@qq.com” (本行是commit 跟了-s参数自动生成的)
重要提示
追加提交: git commit --amend要常用
每次修改一个功能,不是一蹴而就的,只要没有git push,这个提交就是可以再次进行修改的, 如下示意amend何时使用:
5. 推送到服务器
若本地分支名和想提交到的分支是名字相同的,直接push即可:
git push
或者:git push origin HEAD
若名字不同(以想推送到远端分支test_t1为例):
git push origin HEAD:test_t1
6. 附:其他常用指令
6.1 配置用户名、邮箱(commit -s要使用的提交签名):
git --config–global user.email “xiaowang@qq.com”
git --config–global user.name “xiaowang”
git config --global user.email “xiaowang@qq.com”
git config --global user.name “xiaowang”
6.2 免密码输入:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub xiaowang@192.168.2.06
ssh 192.168.2.06
6.3 统计总的历史提交的commit总数:
git rev-list --all --count
6.4 删除分支:
eg. 删除xxx分支: git branch -D xxx
6.5 查看提交记录
可以带各种参数
git log
git log --online
git show xxx_hash_id
6.6 查看差异
git diff filename_xx
git diff filename_xx hash_id1 hash_idx
6.7 制作补丁、打补丁
git format-patch -nx (x表示制作git log能看到的近来n各提交, 针对的是当前local分支的最后一个commit,补丁名字分别以0001~ x开头)
git format-patch xxhash_id -nx (x表示制作git log能看到的从xxhash_id往前的n个提交, 针对的是当前local分支的最后一个commit,补丁名字分别以0001~ x开头)
git am xxx.patch
6.8 创建远端分支
6.8.1 先创建一个本地分支
(本地分支和远端分支同名为例,当然可以不同)
git checkout -b test_t3
(仅跟本地分支名,则新的分支,是基于checkout前使用的本地分支所指向的远端分支,来创建的本地分支的)
6.8.2 将这个本地分支推送到远端(创建新分支,同名的新的远端分支)
git push origin test_t3:test_t3
使用git branch -a即可看到远端已包含该新分支
6.9 忽略不在版本控制中的文件
使用.gitignore
注意只能忽略没有被track的文件,如果某个文件已经是被纳入版本管理的,修改.gitignore是忽略不掉该文件的。
自己创建要给.gitignore文件:按简单的规则填写过滤哪些,,然后通过下面的指令生效:
git config --global core.excludesFile .gitignore
其他还有很多
如标准的提交,一般都使用git merge相关的流程。只是我感觉比较麻烦。
不定时根据使用情况,更新本文!