git开发流程、经常使用命令及工具、TortoiseGit使用及常见问题

根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支。html

1、开发流程git

 - 从远程服务器的master,clone一份项目文件到本地,而后本地master的基础上branch一个新的本地分支xname(或者branch一个已有的远程分支),而后checkout切换到这个本地分支上,开始开发;windows

 - 开发过程当中能够不断的commit到本地,能够分阶段作版本标记(俗称打tag);bash

 - 开发完成以后,把本地分支xname ,push origin到远程分支xname上;(也能够push origin v0.1.2 把某个本地tag推送到服务器上)服务器

 - 远程分支xname和master合并。ssh

 

2、经常使用命令工具

安装完成git以后,在文件夹右键菜单能够找到git bash命令行工具。也能够配置下环境变量使用windows的cmd命令行工具。post

windows的cmd工具,配置一下以后,我以为还蛮好用的。spa

(找到git的安装目录,而后系统环境变量path添加一个“D:\Program Files\Git\cmd”,命令行就能够运行git命令了).net

进入目录
cd e:
cd cs

返回根目录
cd ../

列出本目录下文件夹
ls

当前下建立文件夹
mkdir

删除文件夹
rd xx

删除文件

del xx
————————如下为git命令——————————

查看本机配置
git config --list

git基本配置
http://magicalboy.com/git-configuration/
配置用户信息
$ git config --global user.name "xxx"
$ git config --global user.email xx@xx.com

建立本机key
ssh-keygen -t rsa -C “xx@xx.com” (默认会在C/user/..下面建立一个.ssh的文件夹,内有一个公钥文件和一个私钥文件,公钥要本身复制放到服务器上)

下载远程master代码
git clone git@xxx.git

拉取远端某分支代码
git pull origin xname

列出全部本地分支
git branch

列出远端分支

git branch -r

列出本地+远端分支
git branch -a

建立分支
git branch xname

切换分支
git checkout xname

建立并切换分支
git checkout -b xname

进入分支查看分支的改动
git status

GUI查看当前分支的修改
gitk

提交全部修改到本地
git commit -a -m "注释内容,必需要有"
(若是有新增长的文件,须要先add)

提交修改到远程分支
$ git push origin xname:xname

删除已经合并过的本地分支
git branch -d xname

强制删除某个本地分支
git branch -D xname

删除远程分支
git push origin :xname
冒号前面的空格不能少,原理是把一个空分支push到server上,至关于删除该分支。
等同于
$ git push origin --delete xname

列出全部tag
git tag

打tag
git tag -a tagName -m "注释"

将tag提交到服务器
git push origin v0.1.2(对应到小乌龟上就是push的时候,把Include tags勾上)

将本地全部tag提交到服务器
git push origin --tags

3、git可视化工具

 git hash的乱码搞得我很是的恶心,装了一个小乌龟git,TortoiseGit,用了两天以后发现,贼好用,强烈推荐你们使用。

 举例:删除某个远程分支。

仍是按照原来那句删除远程分支的命令行的思路
git没有删除远程分支的命令,能够用push一个空分支来实现删除的目的
那 对应到小乌龟上 就是这样啦

 

---------------------------------------------------------------------------

 4、git小乌龟和git bash如何同时使用的问题

由于在交叉使用中出现了问题,排查以后发现git小乌龟和git bash命令行工具,他们使用的密钥不是一个类型的。详细能够参考这个:http://zengrong.net/post/1722.htm

也就是说,若是想同时使用这两个工具的话,须要分别为他们建立一对密钥。

git bash:用上面列的命令能够生成公钥和私钥;

TortoiseGit:须要使用它本身的puttygen工具生成一对密钥;详细能够参考这个:http://jingyan.baidu.com/article/63f236280f7e750209ab3d60.html

若是参照教程仍是有问题,须要在git bash中git config --list  查看一下"remote.origin.puttykeyfile"的值是否和刚才用puttygen生成的一致。

 

5、git小乌龟在win8系统下git  clone load puttykey 不可用

原本自认为本身已经彻底掌握小乌龟的使用了,没想到今天的实习生来了以后,又出现一个新问题,就是他的win8系统,clone代码的时候, clone load puttykey 这个选项不可用。百度了一下以后,发现原来是git小乌龟没有找到ssh client,须要在git setting-network里指定一下ssh client的程序位置。

以下:Settings > Network > SSH:SSH Client = C:\Program Files (x86)\TortoiseGit\bin\TortoiseGitPLink.exe

此问题参考:http://blog.snsgou.com/post-58.html

 

6、.gitignore不生效问题

Git 代码管理中,咱们在没有添加 .gitignore 文件的前提下提交了代码以后再提交 .gitignore 文件,或者是中途添加某一文件类型到 .gitignore 文件中,须要经过如下命令行的方式,让 .gitignore 文件生效:
git rm -r --cached .
git add .
git commit -m “Refresh adding .gitignore file.”
若是是中途从 .gitignore 文件中移除某一文件类型,想要这个文件类型从新被 track,须要经过如下命令行的方式,让 .gitignore 文件生效:
git add -f *.class
git commit -m “Refresh removing .class from .gitignore file.”
备注:注意你所处的分支,若是你在当前分支修改,切换到其余分支是不生效的,若是多人开发,注意合并修改!

参考:http://www.ifeegoo.com/git-code-management-dot-gitignore-file-has-no-effect-solution.html 

 

7、文件名大小写忽略

默认忽略大小写,这里是个大坑,须要配置一下不忽略。

查看当前配置:
git config --get core.ignorecase

配置修改成不忽略
git config core.ignorecase false

 

8、文件重命名/文件删除的提交

git没有重命名,只有删除+新建。

物理删除掉的文件,须要 git rm 从git记录中删除掉,不然不会被提交。

 

其余参考:
http://zengrong.net/post/1722.htm

git flow:https://www.cnblogs.com/niwanglong385/articles/5645835.html  https://www.cnblogs.com/myqianlan/p/4195994.html

相关文章
相关标签/搜索