GIT使用教程
1. 基本概念
working directory:被修改过的文件
staging area:通过git add添加到暂存区域的文件
git directory:通过git commit提交到仓库的文件
2. 首次使用需要设置用户和邮箱
打开 git bash,输入如下命令进行配置:
git config --global user.name "wenwen.wang"
git config --global user.email "wenwen.wang@163.com"
同时,你也可以指定你的编辑器,你的Diff工具:
git config --global core.editor vim
git config --global merge.tool vimdiff
你还可以通过”git config --list”命令来查看你的设置。
3. 创建代码仓库
打开 git bash, 进入到代码目录,执行git init命令。
此时会在代码目录下创建一个.git的目录,保存仓库和版本信息。
4. 下载远程代码仓库到project目录
git clone git://git2.kernel.org/pub/scm/git/project.git
git clone gituser@git.server.com:project.git
5. 添加文件到暂存区域
git status -s
git add filename1 filename2 //添加单个文件
git status -s
git add -A //添加所有文件
6. 提交代码到本地
git commit //执行后按i填写备注信息,:wq保存后提交。
git commit -m "comment" //直接添加备注信息后提交。
git commit -a -m "comment" //把之前所有的已经添加的文件都加入到这个版本中。
git commit -a无法把新增文件和文件夹添加进来,如果新增了文件,需要先git add,再git commit。
-a参数解释: 文件修改后执行git add命令只是把指定文件的当前状态添加到暂存区域。如果你添加一个文件后对这个又进行了修改,在你commit时候,只会commit这个文件添加时的状态,不会把之后的修改也commit进去,除非你再次git add。
7. 创建并管理分支
git branch test //创建一个test分支
git checkout test //转到test分支
/* 此处对test分支进行开发 */
git checkout master //转到master分支
git merge test //合并test分支,如果对同一个地方进行了修改,就会冲突
git commit -a //提交分支
git checkout -b test2 //创建test2分支,并转到test2分支
git branch -d test //删除test分支
git branch //列出分支列表
git branch -v //列出分支列表和当前commit
git branch -m test new_test //重命名分支
8. 标签tag
git tag -a build_20140920 -m "release at 20140920" //创建标签
git tag -d build_20140920 //删除标签
git show build_20140920 //查看标签
9. 查看改动
git log
git log -p //会输出非常详细的日志内容,包括了每次都做了哪些源码的修改
git show d1e19d316224cddc437e3ed34ec3c931ad803958 //查看版本变化
git diff //这个命令只在git add之前使用有效。如果已经add了,那么此命令输出为空。
git diff–cached //这个命令在git add之后在git commit之前有效。
git status //这个命令在git commit之前有效,表示都有哪些文件发生了改动。
10. 获取内容fetch
本地没有修改时,可以用git pull。否则,不要用git pull,用git fetch和git merge代替它。
11. 推送变更到版本库
git push origin master
出现冲突时,需要解决冲突,再重新commit,push
12. 藏匿操作
假设您正在为您的产品实施的一项新功能,而此时客户新需求突然来了,你必须保持放下你的新功能。你不能提交你的部分代码,也不能扔掉你的变化。所以,你需要存储你的修改,以便以后再提交。在Git中,藏匿操作需要修改的跟踪文件和阶段的变化,并将其保存在栈上未完成的更改,可以在任何时候重新。
git status -s
git stash //将当前的修改藏匿,是工作目录干净
git stash list //查看藏匿的列表
git stash pop //恢复藏匿
git status -s
13. 移动或重命名
git mv string.c src/
git commit -m "Modified directory structure"
14. 删除
git rm string.c
git commit -a -m "Removed File"
15. 补丁
git commit -m "Added my_strcat function"
git format-patch -1 //创建补丁文件
git apply 0001-Added-my_strcat-function.patch //打补丁文件
16. 修正错误
git checkout string.c //丢弃本地修改后未add的单个文件
git reset HEAD filename1 //把readme文件从暂存区域恢复到工作目录,内容不变
git checkout -- filename2 //如果你发现你编辑错了一个文件,你想把它恢复到上一个版本的状态
git reset --hard HEAD^ //完全回滚到上一个版本commit的版本
HEAD是指向当前版本,^指当前版本的父版本,这个操作无法撤消。你可以把--hard换成--soft,这只会回退commit信息
1. 基本概念
working directory:被修改过的文件
staging area:通过git add添加到暂存区域的文件
git directory:通过git commit提交到仓库的文件
2. 首次使用需要设置用户和邮箱
打开 git bash,输入如下命令进行配置:
git config --global user.name "wenwen.wang"
git config --global user.email "wenwen.wang@163.com"
同时,你也可以指定你的编辑器,你的Diff工具:
git config --global core.editor vim
git config --global merge.tool vimdiff
你还可以通过”git config --list”命令来查看你的设置。
3. 创建代码仓库
打开 git bash, 进入到代码目录,执行git init命令。
此时会在代码目录下创建一个.git的目录,保存仓库和版本信息。
4. 下载远程代码仓库到project目录
git clone git://git2.kernel.org/pub/scm/git/project.git
git clone gituser@git.server.com:project.git
5. 添加文件到暂存区域
git status -s
git add filename1 filename2 //添加单个文件
git status -s
git add -A //添加所有文件
6. 提交代码到本地
git commit //执行后按i填写备注信息,:wq保存后提交。
git commit -m "comment" //直接添加备注信息后提交。
git commit -a -m "comment" //把之前所有的已经添加的文件都加入到这个版本中。
git commit -a无法把新增文件和文件夹添加进来,如果新增了文件,需要先git add,再git commit。
-a参数解释: 文件修改后执行git add命令只是把指定文件的当前状态添加到暂存区域。如果你添加一个文件后对这个又进行了修改,在你commit时候,只会commit这个文件添加时的状态,不会把之后的修改也commit进去,除非你再次git add。
7. 创建并管理分支
git branch test //创建一个test分支
git checkout test //转到test分支
/* 此处对test分支进行开发 */
git checkout master //转到master分支
git merge test //合并test分支,如果对同一个地方进行了修改,就会冲突
git commit -a //提交分支
git checkout -b test2 //创建test2分支,并转到test2分支
git branch -d test //删除test分支
git branch //列出分支列表
git branch -v //列出分支列表和当前commit
git branch -m test new_test //重命名分支
8. 标签tag
git tag -a build_20140920 -m "release at 20140920" //创建标签
git tag -d build_20140920 //删除标签
git show build_20140920 //查看标签
9. 查看改动
git log
git log -p //会输出非常详细的日志内容,包括了每次都做了哪些源码的修改
git show d1e19d316224cddc437e3ed34ec3c931ad803958 //查看版本变化
git diff //这个命令只在git add之前使用有效。如果已经add了,那么此命令输出为空。
git diff–cached //这个命令在git add之后在git commit之前有效。
git status //这个命令在git commit之前有效,表示都有哪些文件发生了改动。
10. 获取内容fetch
本地没有修改时,可以用git pull。否则,不要用git pull,用git fetch和git merge代替它。
11. 推送变更到版本库
git push origin master
出现冲突时,需要解决冲突,再重新commit,push
12. 藏匿操作
假设您正在为您的产品实施的一项新功能,而此时客户新需求突然来了,你必须保持放下你的新功能。你不能提交你的部分代码,也不能扔掉你的变化。所以,你需要存储你的修改,以便以后再提交。在Git中,藏匿操作需要修改的跟踪文件和阶段的变化,并将其保存在栈上未完成的更改,可以在任何时候重新。
git status -s
git stash //将当前的修改藏匿,是工作目录干净
git stash list //查看藏匿的列表
git stash pop //恢复藏匿
git status -s
13. 移动或重命名
git mv string.c src/
git commit -m "Modified directory structure"
14. 删除
git rm string.c
git commit -a -m "Removed File"
15. 补丁
git commit -m "Added my_strcat function"
git format-patch -1 //创建补丁文件
git apply 0001-Added-my_strcat-function.patch //打补丁文件
16. 修正错误
git checkout string.c //丢弃本地修改后未add的单个文件
git reset HEAD filename1 //把readme文件从暂存区域恢复到工作目录,内容不变
git checkout -- filename2 //如果你发现你编辑错了一个文件,你想把它恢复到上一个版本的状态
git reset --hard HEAD^ //完全回滚到上一个版本commit的版本
HEAD是指向当前版本,^指当前版本的父版本,这个操作无法撤消。你可以把--hard换成--soft,这只会回退commit信息