配置
#查看配置
git config --list
#配置用户信息
git config --global user.name "zhang" ( global 表示对所有项目起作用)
git config --global user.emal "zhang@qq.com"
git config --global core.filemode false 关闭对文件模式修改的跟踪(mac 下有用,),文件模式,比如 权限和所有者
创建仓库
#创建包含工作区的仓库,
mkdir demo
cd demo
git init
#创建不包含工作区的仓库,一般会把该仓库放到服务器
mkdir demo
cd demo
git init --bare
或者
git init --bare demo.git
demo目录可以是空的也可以是非空的
通常我们不需要创建版本库,都是从服务器上把版本库克隆到本地
#直接克隆,默认以demo为本地项目名
git clone git@github.com:xx/demo.git
#指定本地项目名称,如test
git clone git@github.com:xx/demo.git test
添加和提交文件
#将文件(修改)添加到暂存区
git add filename
git add * #添加所有文件(修改)
#此时文件只是添加到了暂存区,还没有添加到本地版本库
#使用 commit 将文件(修改)提交到本地版本库
git commit -m 'message log'
#移除文件,删除对文件的跟踪,同时删除本地文件
git rm test.log
#仅移除对文件的跟踪,不删除本地文件
git rm --cached test.log
#只使用 rm 来删除文件,会删除本地的文件,但是不会移除对该文件的跟踪
#同样,在进行 git rm 操作后需要 commit 才会提交到版本库
回退到某个版本
git reset --hard commit_id #回退到指定的commit_id
git reset --hard HEAD #HEAD 表示最新的提交
git reset --hard HEAD^ #HEAD^ 表示上一个提交
git reset --hard HEAD~100 #HEAD~100 表示前100个提交,HEAD^^ = HEAD~2
查看 commit_id
git log
git reflog #记录每一条命令,包括 reset
当你用 git reset --hard HEAD^ 回退到上一版本时,再想恢复到当前的版本,就必须找到当前版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令
#远程仓库
对远程仓库的命令为 git remote
git remote -v #查看远程仓库地址
git remote add origin xxx.git #添加远程仓库地址,origin相当于远程库的别名
git remote remove origin #移除远程仓库origin
git remote rename origin origin2 #将别名origin重命名为origin2
上面只是添加了远程仓库的地址,还没有将本地的分支和远程的分支进行关联
分支
git checkout develop #切换到develop分支
git checkout -b develop #创建develop分支,并切换到develop分支
git checkout -b develop origin/develop #将远程分支拉到本地,并切换到该分支
git branch #查看本地分支,带 * 的为当前分支
git branch -r #查看远程分支
git branch -a #查看所有分支,包括远程分支
git branch -v #查看分支信息
git branch -vv #查看分支信息和分支追踪关系
git branch -d bug_01 #如果该分支已经被合并到其他分支,则可以删除
git branch -D bug_01 #不管该分支有没有被合并到其他分支,都删除,相当于强制删除
git branch -r -d origin/develop #删除远程分支 develop
git branch -m old_name new_name #分支重命名
git branch -m new_name #将当前分支重命名为 new_name
git merge feature #将feature分支合并到当前分支
git branch --set-upstream-to=origin/feature feature #设置本地feature追踪远程的feature分支,这样就可以直接使用 git pull 命令,而不需要 git pull origin/feature feature
git push origin feature:feature2 #将本地的feature分支推到远程,并新建分支feature2,此时他们并没有建立追踪关系,需要 git branch --set-upstream-to命令建立追踪
git fetch origin feature:feature2 #将远程的feature分支拉到本地,分支为feature2,同样没有建立追踪关系,也不会自动切换到feature2分支
git push --set-upstream origin feature #将本地分支(当前分支)推送到远程(origin)并建立追踪关系
http方式记住密码
暂时记住密码(默认是15分钟)
git config --global credential.helper cache
设置记住的时间,单位是秒
git config --global credential.helper 'cache --timeout=3600'
永久记住密码
git config --global credential.helper store
在仓库地址上加上用户名和密码
http://username:password@gitee.com/xx.git